Тернарные операторы не пропускают delay
Всех приветствую.
Есть такой код:
int btn1 = 2;
int wb = 0;
uint8_t LED1pin = 0;
uint8_t LED2pin = 1;
void setup(void) {
#define fen2 wb==2?
#define RDS1 digitalWrite(LED1pin, LOW)
#define REN1 digitalWrite(LED1pin, HIGH)
#define REN2 digitalWrite(LED2pin, HIGH)
#define RDS2 digitalWrite(LED2pin, LOW)
#define SLE1 delay(1000);
}
void loop(void) {
if(digitalRead(btn1)==HIGH){
wb == 2;
}
fen2 REN1 SLE1 REN2:RDS2 SLE1 RDS1;
}
Если убрать SLE, то всё работает нормально. Но мне нужна возможность установки задержки.
В loop будет находиться конфигурационный файл, в котором и будет записано, какое реле включать и какая будет задержка.
Что не так, не понимаю.
Ответы (1 шт):
В тернарной операции второй и третий операнд - конструкции, которые что-то возвращают - константы, переменные, функции. А тут попытка вписать две-три подряд идущие функции, еще и точку с запятой забыли, на которой компилятор ругнётся, что ожидает ':'. Если б они что-то возвращали, можно между ними плюсов понаставить, но это извращение. If и читается понятней, и работает не хуже.
А что делает вот это wb == 2;? Тут с точностью до наоборот - используется возвращающая конструкция, но возвращает в никуда.