|
本帖最后由 dpxiachixx 于 2021-4-8 15:09 编辑
问题已解决,谢谢各位大佬!!!
方案1:按下开关,一位数码管从0数到9方案2:按下开关不松手时,1位数码管从0数到9,如果松手就停下
目前,方案2拆了10个if,但是运行效果和方案1一模一样毫无差别。。。
为什么方案2,我松手后不会停下??????10个if,全都读到了HIGH???
方案1的代码:
// 自定义清除数字的函数
void OffLed()
{
for (int i = 1; i <= 7; i++)
{
digitalWrite(i, HIGH);
}
}
// 自定义展示数字的函数
void ShowLed(int a, int b, int c, int d, int e, int f, int g)
{
// 接通电源
digitalWrite(12, HIGH);
// 展示数字0.5秒
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
delay(500);
// 清除数字0.5秒
OffLed();
delay(500);
}
void setup()
{
// 初始化电源IO
pinMode(12, OUTPUT);
// 初始化判断IO
pinMode(10, INPUT_PULLUP);
// 初始化控制IO(一次7个)
for (int i = 1; i <= 7; i++)
{
pinMode(i, OUTPUT);
}
}
void loop()
{
// 读取开关状态
int BTN = digitalRead(10);
// 如果开关按下,则运行我定义的函数
if (BTN == LOW)
{
OffLed(); // 清除屏幕
ShowLed(1, 2, 3, 4, 5, 6, 0); // 显示数字0
ShowLed(0, 2, 3, 0, 0, 0, 0); // 显示数字1
ShowLed(1, 2, 0, 4, 5, 0, 7); // 显示数字2
ShowLed(1, 2, 3, 4, 0, 0, 7); // 显示数字3
ShowLed(0, 2, 3, 0, 0, 6, 7); // 显示数字4
ShowLed(1, 0, 3, 4, 6, 0, 7); // 显示数字5
ShowLed(1, 0, 3, 4, 5, 6, 7); // 显示数字6
ShowLed(1, 2, 3, 0, 0, 0, 0); // 显示数字7
ShowLed(1, 2, 3, 4, 5, 6, 7); // 显示数字8
ShowLed(1, 2, 3, 4, 0, 6, 7); // 显示数字9
}
}
方案2的代码:
// 自定义清除数字的函数
void OffLed()
{
for (int i = 1; i <= 7; i++)
{
digitalWrite(i, HIGH);
}
}
// 自定义展示数字的函数
void ShowLed(int a, int b, int c, int d, int e, int f, int g)
{
// 接通电源
digitalWrite(12, HIGH);
// 展示数字0.5秒
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
delay(500);
// 清除数字0.5秒
OffLed();
delay(500);
}
void setup()
{
// 初始化电源IO
pinMode(12, OUTPUT);
// 初始化判断IO
pinMode(10, INPUT_PULLUP);
// 初始化控制IO(一次7个)
for (int i = 1; i <= 7; i++)
{
pinMode(i, OUTPUT);
}
Serial.begin(9600);
}
void loop()
{
OffLed(); // 清除屏幕
int BTN = digitalRead(10); // 读取开关状态
Serial.println(BTN);
if (BTN == LOW) // 如果开关按下,显示数字0
{
ShowLed(1, 2, 3, 4, 5, 6, 0);
}
if (BTN == LOW) // 如果开关按下,显示数字1
{
ShowLed(0, 2, 3, 0, 0, 0, 0);
}
if (BTN == LOW) // 如果开关按下,显示数字2
{
ShowLed(1, 2, 0, 4, 5, 0, 7);
}
if (BTN == LOW) // 如果开关按下,显示数字3
{
ShowLed(1, 2, 3, 4, 0, 0, 7);
}
if (BTN == LOW) // 如果开关按下,显示数字4
{
ShowLed(0, 2, 3, 0, 0, 6, 7);
}
if (BTN == LOW) // 如果开关按下,显示数字5
{
ShowLed(1, 0, 3, 4, 6, 0, 7);
}
if (BTN == LOW) // 如果开关按下,显示数字6
{
ShowLed(1, 0, 3, 4, 5, 6, 7);
}
if (BTN == LOW) // 如果开关按下,显示数字7
{
ShowLed(1, 2, 3, 0, 0, 0, 0);
}
if (BTN == LOW) // 如果开关按下,显示数字8
{
ShowLed(1, 2, 3, 4, 5, 6, 7);
}
if (BTN == LOW) // 如果开关按下,显示数字9
{
ShowLed(1, 2, 3, 4, 0, 6, 7);
}
}
|
|