Arduino 外部中断与串口通信实验:按键计数与 LED 控制
Arduino 外部中断与串口通信实验:按键计数与 LED 控制
目的:
- 掌握 Arduino 的外部中断引脚和串口通信接口,以及硬件层面上的应用。
- 掌握外部中断的触发与回调函数,以及串口通信的启动等。
实验内容:
- 按键计数与串口显示:
- 连接 1 个按键至外部中断引脚 2 上。
- 使用中断方式记录按键次数,而非查询方式。
- 通过串口打印按键次数。
- 按键计数控制 LED:
- 连接 2 个按键至外部中断引脚 2 和 3 上。
- 选择 5 个端口连接 5 个 LED。
- 以 2 号引脚按键次数为十位,3 号引脚按键次数为个位,将二个按键的次数组合成十进制数后转化为二进制。
- 控制 5 个 LED 以对应的二进制数显示。
- 将该二进制数打印在串口上显示。
- 例如:2 号引脚按了 2 下,3 号引脚按了 3 下,获得十进制数 23,对应二进制数为 00010111,即控制前四个 LED 灯点亮,并且串口显示 10111。
实验步骤:
- 准备工作: 准备好一块 Arduino 开发板、1 个按键、2 个按键、5 个 LED、面包板、杜邦线等。
- 连接 1 个按键至外部中断引脚 2 上: 将按键的一端连接至 5V 电源,另一端连接至 Arduino 的数字引脚 2 上,同时将该按键的这一端接地的引脚与 Arduino 的 GND 引脚相连。
- 编写程序: 首先要定义一个回调函数,用于处理外部中断触发时的事件,即按键按下。在 setup() 函数中,需要开启外部中断 0(即数字引脚 2 上的外部中断),并将该引脚设为输入模式。在 loop() 函数中,通过 Serial.println() 函数将按键的次数打印在串口上。
- 上传程序并测试: 将 Arduino 连接至电脑,打开串口监视器,在按键按下的时候会触发外部中断,并将按键次数打印在串口上。
- 连接 2 个按键至外部中断引脚 2,3 上,并连接 5 个 LED: 将 2 个按键的一端连接至 5V 电源,另一端分别连接至 Arduino 的数字引脚 2 和 3 上,同时将这两个按键的这一端接地的引脚与 Arduino 的 GND 引脚相连。将 5 个 LED 的一端连接至 5V 电源,另一端分别连接至 Arduino 的数字引脚 4、5、6、7、8 上。
- 编写程序: 在 setup() 函数中,需要开启外部中断 0 和 1(即数字引脚 2 和 3 上的外部中断),并将这两个引脚设为输入模式。同时,需要将数字引脚 4、5、6、7、8 设为输出模式。在 loop() 函数中,通过 digitalRead() 函数获取按键的次数,并通过位运算将这两个次数转化为二进制数,再通过 digitalWrite() 函数控制 LED 灯的亮灭状态。最后,通过 Serial.println() 函数将二进制数打印在串口上。
- 上传程序并测试: 将 Arduino 连接至电脑,打开串口监视器,在按键按下的时候会触发外部中断,并控制对应的 LED 灯亮灭,同时将二进制数打印在串口上。
实验分析:
本实验通过连接按键和 LED 灯,掌握了 Arduino 的外部中断引脚和串行通行的接口,以及外部中断的触发与回调函数、串口通行的启动等。同时,通过位运算将按键次数转化为二进制数,将该二进制数打印在串口上,实现了对 5 个 LED 灯的控制。该实验能够帮助学生深入理解 Arduino 的硬件结构和编程原理,提高其实际操作能力和创新能力。
原文地址: https://www.cveoy.top/t/topic/nP1m 著作权归作者所有。请勿转载和采集!