c++ - 如何在开关盒中倒车
问题描述
我有 2 个 LED,当我按下按钮时,它应该按以下顺序更改模式:关闭,第一个 LED 亮,两个 LED 都亮,第二个 LED 亮。现在我想添加第二个按钮,它的作用相同但相反:第二个 LED 亮,两个 LED 亮,第一个 LED 亮,灭。
我尝试创建第二个开关盒,但它不起作用。
代码:
void loop()
{
increase.update();
decrease.update();
//~~~Increase LED Pattern~~~
if (increase.fell())
{
isPressed = true;
changePattern();
}
else if (digitalRead(Button_Mode) == HIGH)
{
isPressed = false;
}
//~~~Decrease LED Pattern~~~
if (decrease.fell())
{
isPressed = true;
decreasePattern();
}
else if (digitalRead(Button_Mode) == HIGH)
{
isPressed = false;
}
}
//-----------------Methods------------------
//~~~selects a pattern~~~
void increasePattern()
{
switch (lightPattern)
{
case OFF:
lightPattern = LED_1;
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
break;
case LED_1:
lightPattern = LED_12;
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
break;
case LED_12:
lightPattern = LED_2;
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
break;
case LED_2:
lightPattern = OFF;
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
break;
}
}
void decreasePattern()
{
switch (lightPattern)
{
case LED_2:
lightPattern = LED_12;
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
break;
case LED_12:
lightPattern = LED_1;
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
break;
case LED_1:
lightPattern = OFF;
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
break;
case OFF:
lightPattern = LED_2;
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
break;
}
}
先感谢您。
解决方案
int stateLed1 = HIGH;
digitalWrite(LED_1, stateLed1);
digitalWrite(LED_2, !stateLed1);
推荐阅读
- mysql - 我的 sql order by - 错误代码:1064。您的 SQL 语法有错误;
- javascript - 如何在reactjs中重置模态状态
- html - 如何将html样式标签提取到css中
- imagemagick - Imagemagick 在从 tif 转换为 jpeg 时丢失了 IPTC 元数据
- bash - jq:错误:TOKEN/0 未定义于
,第 1 行: - powerbi - Power BI 中的 MAX 函数和 Group BY
- android - 如何在警报管理器中设置一周或多天的重复警报以应对颤动?
- html - 如何使整个 div 可点击并在 Django 模板中放置一个动态 url?
- django - Django - 更新外键关系
- c# - 使我的代码线程安全时遇到问题