使用LPC1768控制 LED
Controlling LED's with LPC1768
我正在尝试编写一个程序,该程序根据按下的不同开关控制一组LED。当按下开关时,红色 LED 应亮起。当按下两个开关时,绿色 LED 应亮起。当按下开关 3 时,红色指示灯熄灭,绿色 LED 熄灭。
当我只包含一段代码时,比如红色 LED 部分,它会正常工作。但是当我为开关 2 或 3 添加代码时,没有任何效果。
int main() {
red1 = 0;
red2 = 0;
red3 = 0;
green1 = 1;
green2 = 1;
green3 = 1;
while(true) {
//controls for switch 1
if (switch1 == true)
{
red1 = 1;
wait_ms(10);
wait(0.4);
while (switch1 == 1) {};
wait_ms(10);
}
else if (switch1 == true && red1 == 1)
{
red2 = 1;
wait_ms(10);
wait(0.4);
while (switch1 == 1) {};
wait_ms(10);
}
else if (switch1 == true && red1 == 1 && red2 == 1)
{
red3 = 1;
wait_ms(10);
wait(0.4);
while (switch1 == 1) {};
wait_ms(10);
}
//controls for switch 2
if (switch2 == true)
{
green1 = 0;
wait_ms(10);
wait(0.4);
while (switch2 == 1) {};
wait_ms(10);
}
else if (switch2 == true && green1 == 0)
{
green1 = 0;
wait_ms(10);
wait(0.4);
while (switch2 == 1) {};
wait_ms(10);
}
else if (switch2 == true && green1 == 0 && green2 == 0)
{
green3 = 0;
wait_ms(10);
wait(0.4);
while (switch2 == 1) {};
wait_ms(10);
}
//controls for switch 3
if (switch3 == true && red3 == 1 && green3 == 0)
{
red3 = 0;
green3 = 1;
wait_ms(10);
wait(0.4);
while (switch3 == 1) {};
wait_ms(10);
}
else if(switch3 == true && red2 == 1 && green2 == 0)
{
red2 = 0;
green2 = 1;
wait_ms(10);
wait(0.4);
while (switch3 == 1) {};
wait_ms(10);
}
else if (switch3 == true && red1 == 1 && green1 == 0)
{
red1 = 0;
green1 = 1;
wait_ms(10);
wait(0.4);
while (switch3 == 1) {};
wait_ms(10);
}
}
我没有错误消息,我知道我的mbed已正确接线,因为我做了一些简单的测试以确保每个开关和灯都正常工作。感谢您的任何帮助
我发现你的 if 语句有问题。
在下面的简化代码中,(2( 和 (3( 永远不会被调用。即使switch1 == true
和red1 == 1
,if 语句首先计算 (1( 和 (2( 不计算。
if (switch1 == true) // (1)
{
red1 = 1;
}
else if (switch1 == true && red1 == 1) // (2)
{
red2 = 1;
}
else if (switch1 == true && red1 == 1 && red2 == 1) //(3)
{
red3 = 1;
}
我想下面是你想要的。
if (switch1 == true && red1 == 1 && red2 == 1)
{
red3 = 1;
}
else if (switch1 == true && red1 == 1)
{
red2 = 1;
}
else if (switch1 == true)
{
red1 = 1;
}
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 控制允许动态运行c++的并发操作数
- 从控制台中删除最后打印的元素
- 是否可以使用if constexpr删除控制流语句
- 无法在windows控制台中为C++程序提供必要的输入
- 为什么我的变量没有更新,我的 LED 没有亮起?
- 控制到达非空函数clang(-Wreturn-type)的末尾
- 如何避免LED在循环状态变化中闪烁?
- 查找 GCD:并非所有控制路径都返回值
- 通过 API 控制 DJI 相机
- 禁止在控制台上记录谷神星
- 是否可以使用一个类来控制 C++ 中另一个类的对象?(阿杜伊诺)
- 如何删除列出的"QGraphicsPathItem"对象以控制进程内存使用情况?
- 我在 C++ 代码中遇到错误警告:控制到达非空函数 [-Wreturn 类型] 的末尾
- C++ Python 模块在 Blender 中崩溃,但在 Python 控制台中不会崩溃
- wx通用目录控制错误"wxTheFileIconsTable was nullptr"
- main() 中的 std::cout 在调试期间不会在调试控制台中打印任何内容
- ATMEGA32 8x8 LED 矩阵控制
- 使用LPC1768控制 LED
- 使用串行监视器 arduino 控制 LED