返回介绍

C 语言实验室 1:Arduino

发布于 2024-10-10 23:21:27 字数 4582 浏览 0 评论 0 收藏 0

本实验会给你一份说明书,它描述了一个程序,你需要运用你在前几章中学到的知识构建这个程序。

这个项目比你之前见识到的项目都要大,所以动手之前请阅读完全部内容,并给自己一点时间。不要担心会被难倒,这里没有新概念,你也可以接着往后读,回过头再来做这个实验。

我们还为你补充了一些设计上的细节,万事俱备,你甚至可以搭建物理设备。

该去实现程序了,我们不会给你任何代码或答案。

说明书:让盆栽说话

你可曾想过,你的植物告诉你它需要浇水?有了 Arduino,植物就可以开口了!本实验中,你将创建一个由 Arduino 驱动的植物监控器,全用 C 语言来写。

需要构建以下这些东西。

物理设备

植物监控仪用湿度传感器测量植物土壤的湿度。当植物需要浇水时,LED 就会亮起,并重复向你的计算机发送字符串“给我浇水”,直到你给植物浇水为止。

等你给植物浇了水,LED 灯就会关闭,然后向计算机发送字符串“谢谢啊!”。

Arduino

植物监控仪的核心是 Arduino。Arduino 是一个基于微控制器的小型开源平台,它可以用来设计电子设备的原型。你可以在 Arduino 上面连接传感器,采集真实世界中的信息,Arduino 的执行器会做出反应。整个过程需要用 C 代码来控制。

Arduino 板上有 14 个数字 IO 管脚,它们用来输入和输出数据。我们可以用这些管脚来读取数据或控制执行器。

板上还有 6 个模拟输入管脚,可以从传感器读取电压值。

Arduino 板用计算机的 USB 端口供电。

Arduino IDE

C 代码在 Arduino IDE 中写,你可以用 Arduino IDE 检验代码是否正确并编译代码,然后通过计算机的 USB 端口把代码上传到 Arduino。IDE 还自带一个串口监视器,用来查看 Arduino 发回的数据(如果有的话)。

Arduino IDE 是免费的,可以在 下载。

www.arduino.cc/en/Main/Software

装配物理设备

第一步是装配物理设备。虽然这一步是可选的,但我们强烈建议你试一试,你的植物会为此感激你的。

制作湿度传感器

取一根长跨接线,将其连接到一枚镀锌钉的钉帽上,可以绕在上面,也可以焊上去。

然后再取一根长跨接线,与另一枚镀锌钉相连。

湿度传感器会测量两枚镀锌钉之间的导电率,导电率高表示湿度高,导电率低说明湿度低。

连接 LED

仔细观察 LED,你会发现它一根导线长(正极),一根导线短(负极)。

凑近 Arduino,可以看到 14 道插槽沿着边缘一字排开,分别代表 0~13 号数字管脚,旁边还有一道插槽,标的是 GND。把 LED 较长的那根导线(正极)插入 13 号插槽,较短的那根导线(负极)插入 GND 插槽。

这样就可以通过 13 号管脚控制 LED。

连接湿度传感器

湿度传感器的连接方法如下所示。

  • 用短跨接线将 Arduino 的 GND 管脚与实验电路板的 D15 插槽相连。
  • 10K 欧姆电阻的一端与实验电路板 C15 插槽相连,另一端与 C10 插槽相连。
  • 用短跨接线将 0 号模拟输入管脚与实验电路板 D10 插槽相连。
  • 将镀锌钉上的跨接线与实验电路板 B10 插槽相连。
  • 用短跨接线将 Arduino 的 5V 管脚与实验电路板的 C5 插槽相连。
  • 将另一枚镀锌钉上的跨接线与实验电路板 B5 插槽相连。

现在,Arduino 的物理装置已经组装好了,下面来看 C 代码……

代码应该做

Arduino C 代码应该做以下事情。

读取湿度传感器的数据

湿度传感器连到了模拟输入管脚,代码需要从该管脚读取模拟量。

在实验室,我们发现,一般当这个值低于 800 时,植物就需要浇水了。你种的植物可能不用,如果它是仙人掌的话。

把数据写到 LED

LED 连到了数字管脚。

当植物不需要浇水时,把数据写到 LED 连接的数字管脚,让它关闭 LED。

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

向串口写数据

当植物需要浇水时,需要重复地向计算机的串口写字符串“给我浇水!”。

当植物有了充足的水分,向串口写字符串“谢谢啊!”,写一次就行了。

假设 Arduino 已经插入了计算机的 USB 插口。

C 代码怎么写

Arduino C 程序有特定结构,必须这么写才行:

用 Arduino IDE 来写 Arduino C 代码非常方便。你可以用它来检验代码是否正确并编译代码,然后把完整的程序上传到 Arduino 板,这样就可以看到运行结果了。

Arduino IDE 还提供了一个 Arduino 函数库和一些有用的示例代码。我们在下一页列出了一些函数,对于写程序很有用。

几个有用的 Arduino 函数

在创建 Arduino 时需要用到下面这些函数。

void pinMode(int pin, int mode)

告诉 Arduino 数字管脚 pin 是输入还是输出,mode 可以是 INPUT 或 OUTPUT 。int digitalRead(int pin)

从数字管脚读取数据,返回值是 HIGH 或 LOW 。void digitalWrite(int pin, int value)

把一个值写到数字管脚,value 是 HIGH 或 LOW 。int analogRead(int pin)

从模拟管脚读取一个值,返回值是 0 到 1023 的一个数。void analogWrite(int pin, int value)

向某个管脚写模拟量,value 是 0 到 255 的一个数。void Serial.begin(long speed)

让 Arduino 以 speed 比特/秒的速率发送或接收串行数据,通常把 speed 设为 9600。void Serial.println(val)

向串口打印数据,val 可以是任意数据类型。void delay(long interval)

让程序暂停 interval 毫秒。

植物监控仪下线

Arduino 项目的最后一步就是把湿度传感器插到植物的土壤中,并把 Arduino 连到计算机上,然后你就等着得到植物的最新状态吧。

如果你有 Mac,并且想让你的植物开口说话,可以到 Head First 实验室网站下载一个脚本,它可以识别串行数据流,并大声地朗读出来:

www.headfirstlabs.com/books/hfc

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文