Оператор else не работает должным образом
Я работал над довольно простым проектом Arduino-макета, который должен имитировать перекресток светофора. Есть два набора огней, один называется Север-Юг, а другой - Восток-Запад (очень похоже на светофоры, которые вы видите на перекрестке на дороге). Цель состоит в том, чтобы заставить светофоры менять свой правильный цвет в нужное время; однако один из моих желтых огней вообще не включается, а светодиоды макета, которые я использую, полностью пропускают рассматриваемый желтый свет и переходят прямо к красно-зеленой конфигурации, которая должна случится после.
Вот код, который у меня есть:
void setup() {
pinMode(2, OUTPUT); //R-ns
pinMode(3, OUTPUT); //Y-ns
pinMode(4, OUTPUT); //G-ns
pinMode(5, OUTPUT); //R-ew
pinMode(6, OUTPUT); //Y-ew
pinMode(7, OUTPUT); //G-ew
}
void loop() {
for(int count = 0; count<16; count++) {
if (count<7) {
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
}
else if (count==7) {
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
}
else if (7<count<15) {
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
}
else {
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
}
delay(1000);
}
}
Как вы можете видеть, светофор Север-Юг должен включиться на 16-й секунде, за исключением того, что я не вижу этого на физическом светодиоде. Я не понимаю, почему это происходит; может ли кто-нибудь объяснить, что происходит?
@Zayd, 👍0
Обсуждение1 ответ
7<count<15
интерпретируется как (7<count)<15
. 7<count
приведет к false или true , которые будут интерпретироваться как 0 и 1, когда позже будут задействованы в части выражения < 15 , что означает
, что 7<count<15
всегда истинно.
То, что вы, вероятно, ищете, - это 7 < count && count < 15
.
- Подключение Arduino к сервоприводу с внешним источником питания
- Как подключить несколько разных датчиков, использующих одни и те же контакты?
- Использование Arduino UNO в качестве FTDI
- Где находятся положительные и отрицательные отверстия на мини-макете arduino?
- Ограничение питания макетной платы MB-102
- Макетные платы и точные измерения напряжения
- Скорость передачи данных Arduino в 8 раз выше?
- Макет Arduino Uno не работает должным образом
используйте serial.print() для отладки вашего кода, @jsotola