(2024.1.22-2024.1.28)C语言学习小结

本周主要围绕《Head first C》这本书展开C语言学习,按照计划,我学习了前四章的内容。

基本内容

以下时学习做的思维导图(笔记)

第1章虽然做的是思维导图,但实际上因为大多数内容已经掌握,所以实际上就是补充记了几个零散的点。


第2、2.5章主要是指针、数组、字符串的内容,大多也已经学过,但这本书里讲得更透彻清晰。


第3章主要是讲具体c语言应用时的一些小技巧,包括重定向等


第4章即做一个较大的c语言程序时进行分而治之、更新换代等时的操作方法

代码实践

看书学习的过程中也会在一些不是特别明晰的地方跑点代码看一看。

按照计划,本周学习完正好有一个C语言实验:Arduino

具体要求:

1 读取湿度传感器的数据
湿度传感器连到了模拟输入管脚,代码需要从该管脚读取模拟量。
在实验室,我们发现,一般当这个值低于800时,植物就需要浇水了。你种的植物可能不用,如果它是仙人掌的话。

2 把数据写到LED
LED连到了数字管脚。
当植物不需要浇水时,把数据写到LED连接的数字管脚,让它关闭LED。
当植物需要浇水时,把数据写到数字管脚,让它打开LED。
如果你想做得更好,就让LED闪烁,还可以在数字接近800时让LED闪烁。

3 向串口写数据
当植物需要浇水时,需要重复地向计算机的串口写字符串“给我浇水!”。
当植物有了充足的水分,向串口写字符串“谢谢啊!”,写一次就行了。
假设Arduino已经插入了计算机的USB插口。

代码与改进:
按照要求,我先简单写了一版代码:

void setup() {
  // put your setup code here, to run once:
  int input, water = 0;
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  int input, water = 0;
  input = analogRead(0);
  if (input > 750 && input < 800)
  {
    digitalWrite(13, HIGH);
    delay(100);
  }
  else if (input >= 800)
  {
    digitalWrite(13, HIGH);
    Serial.println("I need water!");
    water = 1;
  }
  else if (water == 1 && input < 800)
  {
    Serial.println("Thank you!");
    water = 0;
  }
}

比较粗糙(连大于小于都弄错了),再自查与他查(GPT)后我进行了进一步的完善修改:

int input, water = 0; //water 用于说明是否已经浇水

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(13, OUTPUT); //先初始设定13号的状态
}

void loop() {
  // put your main code here, to run repeatedly:
  input = analogRead(0);
  if (input > 800 && input < 850) //接近800闪烁
  {
    digitalWrite(13, HIGH);
    delay(100);
    digitalWrite(13, LOW);
    delay(100);
  }
  else if (input <= 800) //达到800常亮并输出字符串
  {
    digitalWrite(13, HIGH);
    Serial.println("I need water!");
    water = 1;
  }
  else if (water == 1 && input > 800) //降下800熄灯并输出字符串
  {
    digitalWrite(13, LOW);
    Serial.println("Thank you!");
    water = 0;
  }
}

遇到的问题与解决、经验教训等

  • 遇到过很多次,总是忘记变量等要初始化!!!

总结

本周写的内容大多以前都有所了解,不算太难,而且很多都偏向实际的实践应用,挺好。下周将继续学习《Head first C》

posted @ 2024-01-27 20:31  20231309  阅读(14)  评论(0编辑  收藏  举报