Arduino 外部中断与串口通信实验:按键计数和二进制LED显示
// Arduino 外部中断与串口通信实验:按键计数和二进制 LED 显示
const int buttonPin1 = 2; // 按键1连接到外部中断引脚2 const int buttonPin2 = 3; // 按键2连接到外部中断引脚3 const int ledPin1 = 4; // LED1连接到数字口4 const int ledPin2 = 5; // LED2连接到数字口5 const int ledPin3 = 6; // LED3连接到数字口6 const int ledPin4 = 7; // LED4连接到数字口7 const int ledPin5 = 8; // LED5连接到数字口8
volatile int buttonCount1 = 0; // 按键1的次数 volatile int buttonCount2 = 0; // 按键2的次数
void setup() { pinMode(buttonPin1, INPUT_PULLUP); // 设置按键1为上拉输入 pinMode(buttonPin2, INPUT_PULLUP); // 设置按键2为上拉输入 pinMode(ledPin1, OUTPUT); // 设置LED1为输出 pinMode(ledPin2, OUTPUT); // 设置LED2为输出 pinMode(ledPin3, OUTPUT); // 设置LED3为输出 pinMode(ledPin4, OUTPUT); // 设置LED4为输出 pinMode(ledPin5, OUTPUT); // 设置LED5为输出
attachInterrupt(digitalPinToInterrupt(buttonPin1), button1Interrupt, FALLING); // 绑定按键1的中断函数 attachInterrupt(digitalPinToInterrupt(buttonPin2), button2Interrupt, FALLING); // 绑定按键2的中断函数
Serial.begin(9600); // 初始化串口 }
void loop() { // 读取按键次数并打印到串口 Serial.print('Button 1 count: '); Serial.println(buttonCount1); Serial.print('Button 2 count: '); Serial.println(buttonCount2);
// 计算二进制数并显示到LED上 int binaryNumber = buttonCount1 * 10 + buttonCount2; // 计算十进制数 String binaryString = String(binaryNumber, BIN); // 转换为二进制字符串 while (binaryString.length() < 5) { binaryString = '0' + binaryString; // 补齐为5位二进制数 } Serial.print('Binary number: '); Serial.println(binaryString);
digitalWrite(ledPin1, binaryString.charAt(0) == '1' ? HIGH : LOW); digitalWrite(ledPin2, binaryString.charAt(1) == '1' ? HIGH : LOW); digitalWrite(ledPin3, binaryString.charAt(2) == '1' ? HIGH : LOW); digitalWrite(ledPin4, binaryString.charAt(3) == '1' ? HIGH : LOW); digitalWrite(ledPin5, binaryString.charAt(4) == '1' ? HIGH : LOW); }
void button1Interrupt() { buttonCount1++; // 按键1次数加1 }
void button2Interrupt() { buttonCount2++; // 按键2次数加1 }
原文地址: https://www.cveoy.top/t/topic/nP85 著作权归作者所有。请勿转载和采集!