首页 > 其他分享 >(2024.1.22-2024.1.28)C语言学习小结

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

时间:2024-01-27 20:46:47浏览次数:26  
标签:2024.1 13 管脚 LED 22 28 water input 800

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

基本内容

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

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


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

代码实践

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

按照计划,本周学习完正好有一个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;
  }
}

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

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

总结

标签:2024.1,13,管脚,LED,22,28,water,input,800
From: https://www.cnblogs.com/zzz12138/p/17981997

相关文章

  • 2024.1.27寒假每日总结18
    算法题:2861.最大合金数-力扣(LeetCode)git学习Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git是LinusTorvalds为了帮助管理Linux内核开发而......
  • Solution Set【2024.1.27】
    CF1778FMaximizingRoot首先不难证明不操作根节点一定不优,因此我们考虑操作根节点的情况。现在我们的问题转化为了:最大化操作根节点前的整个树的节点权值的最大公约数。由于可能的最大公约数值只有\(\mathcal{O}(\sqrt{V})\)种。因此我们考虑将其压入状态进行动态规划。设......
  • Burp Suite Professional 2024.1.1 for macOS x64 & ARM64 (sysin) - 世界排名第一的
    BurpSuiteProfessional2024.1.1formacOSx64&ARM64(sysin)-世界排名第一的网络渗透测试工具包请访问原文链接:https://sysin.org/blog/burp-suite-pro-mac/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgBurpSuiteProfessionalTheworld’s#1webpenet......
  • Burp Suite Professional 2024.1.1 (macOS, Linux, Windows) - Web 应用安全、测试和
    BurpSuiteProfessional2024.1.1(macOS,Linux,Windows)-Web应用安全、测试和扫描BurpSuiteProfessional,Test,find,andexploitvulnerabilities.请访问原文链接:https://sysin.org/blog/burp-suite-pro/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgB......
  • Burp Suite Professional 2024.1.1 for Windows x64 (sysin) - 世界排名第一的网络渗
    BurpSuiteProfessional2024.1.1forWindowsx64(sysin)-世界排名第一的网络渗透测试工具包请访问原文链接:https://sysin.org/blog/burp-suite-pro-win/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgBurpSuiteProfessionalTheworld’s#1webpenetration......
  • ClickHouse(22)ClickHouse集成HDFS表引擎详细解析
    HDFS这个引擎提供了与ApacheHadoop生态系统的集成,允许通过ClickHouse管理HDFS上的数据。这个引擎提供了Hadoop的特定功能。用法ENGINE=HDFS(URI,format)URI参数是HDFS中整个文件的URIformat参数指定一种可用的文件格式。执行SELECT查询时,格式必须支持输入,以及执行INSE......
  • 2024.1.27日报
    3.4SparkSQL应用3.4.1创建DataFrame/DataSet方式一:读取本地文件①在本地创建一个文件,有id、name、age三列,用空格分隔,然后上传到hdfs上。vim/root/person.txt12内容如下:1zhangsan202lisi293wangwu254zhaoliu305tianqi356kobe4012345......
  • STM32CubeMX教程26 FatFs 文件系统 - W25Q128读写
    1、准备材料正点原子stm32f407探索者开发板V2.4STM32CubeMX软件(Version6.10.0)keilµVision5IDE(MDK-Arm)ST-LINK/V2驱动野火DAP仿真器XCOMV2.6串口助手2、实验目标使用STM32CubeMX软件配置STM32F407开发板使用FatFs中间件通过SPI通信协议对W25Q128芯片进行读写等操作3......
  • 2024.1.26 大寄特寄
    很好的数学专题,让我发疯A.居然直接加了个限制,要求是对于连续的子序列,要求相等,关键是一定有解,用到了鸽笼原理假设对两个数列求前缀和之后,分别是An,Bn最终要得到Ai-Aj=Bk-Bl但是这样肯定是很麻烦的,要枚举,但是如果移项就可以得到一个有相同格式的式子Ai-Bk =Aj-Bl......
  • 在ubuntu22上使用C++20
    Linux系统ubuntu22.04安装最新版的gcc13.1.0编译器,支持c++20、23_gcc-13.1.0.tar.gz下载-CSDN博客ubantu20安装多个版本的gcc/gc++编译器_ubuntu安装多个gcc-CSDN博客5步在Ubuntu22上使用C++201.安装build-essentialsudoaptinstallbuild-essential安装完检查/us......