编辑
2026-05-25
测试数据
0
以下为文章正文

image.png

arduino
// 定义控制LED的引脚数组 int num = 100; const int ledPins[] = {16, 5, 4, 0, 2}; // 计算引脚的数量,方便循环遍历 const int ledCount = sizeof(ledPins) / sizeof(ledPins[0]); const int state[] = {2, 2, 2, 2, 2, 2, 2, 1, 0, 2, 2, 1, 2, 0, 2, 2, 1, 0, 2, 2, 2, 0, 1, 2, 2, 2, 2, 0, 1, 2, 2, 0, 2, 1, 2, 2, 0, 2, 2, 1, 2, 2, 0, 2, 1, 2, 2, 2, 0, 1, 1, 0, 2, 2, 2, 0, 1, 2, 2, 2, 1, 2, 0, 2, 2, 0, 2, 1, 2, 2, 1, 2, 2, 0, 2, 0, 2, 2, 1, 2, 0, 2, 2, 2, 1 }; void setstate(int data) { for (int i = 0; i < ledCount; i++) { if (state[data * 5 + i] == 1) { pinMode(ledPins[i], OUTPUT); digitalWrite(ledPins[i], HIGH); } else if (state[data * 5 + i] == 0) { pinMode(ledPins[i], OUTPUT); digitalWrite(ledPins[i], LOW); } else if (state[data * 5 + i] == 2) { pinMode(ledPins[i], INPUT); digitalWrite(ledPins[i], LOW); } else if (state[data * 5 + i] == 3) { pinMode(ledPins[i], INPUT); digitalWrite(ledPins[i], HIGH); } } delay(1); } void setup() { // 遍历数组,将所有LED引脚设置为输出模式 for (int i = 0; i < ledCount; i++) { pinMode(ledPins[i], OUTPUT); // 初始状态设为高电平(熄灭),防止上电瞬间误亮 digitalWrite(ledPins[i], HIGH); } Serial.begin(115200); } void loop() { int num100, num10, num1; num100 = (num / 100) % 10; num10 = (num / 10) % 10; num1 = num % 10; if ((num100) == 1) { setstate(1); } if ((num100) == 1) { setstate(2); } if ((num10 == 0) || (num10 == 2) || (num10 == 3) || (num10 == 5) || (num10 == 6) || (num10 == 7) || (num10 == 8) || (num10 == 9)) { if(num>9)setstate(3); } if ((num10 == 0) || (num10 == 1) || (num10 == 2) || (num10 == 3) || (num10 == 4) || (num10 == 7) || (num10 == 8) || (num10 == 9)) { if(num>9)setstate(4); } if ((num10 == 0) || (num10 == 1) || (num10 == 3) || (num10 == 4) || (num10 == 5) || (num10 == 6) || (num10 == 7) || (num10 == 8) || (num10 == 9)) { if(num>9)setstate(5); } if ((num10 == 0) || (num10 == 2) || (num10 == 3) || (num10 == 5) || (num10 == 6) || (num10 == 8) || (num10 == 9)) { if(num>9)setstate(6); } if ((num10 == 0) || (num10 == 2) || (num10 == 6) || (num10 == 8)) { if(num>9)setstate(7); } if ((num10 == 0) || (num10 == 4) || (num10 == 5) || (num10 == 6) || (num10 == 8) || (num10 == 9)) { if(num>9)setstate(8); } if ((num10 == 2) || (num10 == 3) || (num10 == 4) || (num10 == 5) || (num10 == 6) || (num10 == 8) || (num10 == 9)) { if(num>9)setstate(9); } if ((num1 == 0) || (num1 == 2) || (num1 == 3) || (num1 == 5) || (num1 == 6) || (num1 == 7) || (num1 == 8) || (num1 == 9)) { setstate(10); } if ((num1 == 0) || (num1 == 1) || (num1 == 2) || (num1 == 3) || (num1 == 4) || (num1 == 7) || (num1 == 8) || (num1 == 9)) { setstate(11); } if ((num1 == 0) || (num1 == 1) || (num1 == 3) || (num1 == 4) || (num1 == 5) || (num1 == 6) || (num1 == 7) || (num1 == 8) || (num1 == 9)) { setstate(12); } if ((num1 == 0) || (num1 == 2) || (num1 == 3) || (num1 == 5) || (num1 == 6) || (num1 == 8) || (num1 == 9)) { setstate(13); } if ((num1 == 0) || (num1 == 2) || (num1 == 6) || (num1 == 8)) { setstate(14); } if ((num1 == 0) || (num1 == 4) || (num1 == 5) || (num1 == 6) || (num1 == 8) || (num1 == 9)) { setstate(15); } if ((num1 == 2) || (num1 == 3) || (num1 == 4) || (num1 == 5) || (num1 == 6) || (num1 == 8) || (num1 == 9)) { setstate(16); } if (Serial.available() > 0) { // parseInt() 会读取串口数据中的第一个有效整数 // 它会自动跳过10非数字字符(比如回车、换行符) num = Serial.parseInt(); // 在这里你可以把 num 传递给数码管显示函数 // 例如:displayNumber(num); } }

以上为文章正文

本文作者:Kellermen

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!