如何使用c语言完成下列实验给出完整代码外部中断与串口通行实验目的:掌握 ARDUINO 的外部中断引脚有哪些串行通行的接口是哪几个引脚 这在硬件层面上的应用很重要。掌握外部中断的触发与回调函数串口通行的启动等。内容:①连接 1 个按键至外部中断引脚 2 上ARDUINO 记录按键次数采用中断方式非查询方式并通过串口打印按键次数;②连接 2 个按键至外部中断引脚 23 上同时自己选取其它的 5 个端
以下为完整代码:
#include <SoftwareSerial.h> // 引用串口通信库
SoftwareSerial mySerial(10, 11); // 新建串口对象
volatile int count2 = 0; // 记录2号引脚按键次数 volatile int count3 = 0; // 记录3号引脚按键次数 volatile boolean state2 = false; // 2号引脚状态 volatile boolean state3 = false; // 3号引脚状态
void setup() { pinMode(2, INPUT_PULLUP); // 配置2号引脚为上拉输入 pinMode(3, INPUT_PULLUP); // 配置3号引脚为上拉输入 pinMode(4, OUTPUT); // 配置4号引脚为输出 pinMode(5, OUTPUT); // 配置5号引脚为输出 pinMode(6, OUTPUT); // 配置6号引脚为输出 pinMode(7, OUTPUT); // 配置7号引脚为输出 pinMode(8, OUTPUT); // 配置8号引脚为输出 attachInterrupt(digitalPinToInterrupt(2), count2Func, FALLING); // 绑定2号引脚中断服务函数 attachInterrupt(digitalPinToInterrupt(3), count3Func, FALLING); // 绑定3号引脚中断服务函数 Serial.begin(9600); // 初始化串口通信 mySerial.begin(9600); // 初始化串口通信 }
void loop() { if(state2 && state3) { // 如果2号引脚和3号引脚都按下了 int num = count2 * 10 + count3; // 计算按键次数的十进制数 String binary = String(num, BIN); // 将十进制数转化为二进制字符串 int length = binary.length(); // 计算字符串长度 for(int i = 0; i < length; i++) { // 循环控制LED digitalWrite(i+4, binary.charAt(length-i-1)=='1'?HIGH:LOW); // 根据二进制数的每一位决定LED的状态 } Serial.println(binary); // 在串口上打印二进制数 mySerial.println(binary); // 在另一个串口上打印二进制数 state2 = false; // 清除2号引脚状态 state3 = false; // 清除3号引脚状态 count2 = 0; // 清零2号引脚按键次数 count3 = 0; // 清零3号引脚按键次数 } }
void count2Func() { // 2号引脚中断服务函数 count2++; // 2号引脚按键次数加1 state2 = true; // 2号引脚状态变为按下 }
void count3Func() { // 3号引脚中断服务函数 count3++; // 3号引脚按键次数加1 state3 = true; // 3号引脚状态变为按下
原文地址: http://www.cveoy.top/t/topic/eif5 著作权归作者所有。请勿转载和采集!