使用 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。当按下开关时,红色 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;
}