// 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 }

Arduino 外部中断与串口通信实验:按键计数和二进制LED显示

原文地址: https://www.cveoy.top/t/topic/nP85 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录