10 | 1 = 3, работает 10 | 0 = 2, работает 00 | 1 = 1, работает 00 | 0 = 0, не работает Когда сравниваю 2 false побитовым ИЛИ, то переменная position = ничему... Как это исправить, чтобы position = 0? Код (C++): byte prePosition; ISR(TIMER5_OVF_vect) { byte position = ((1 << digitalRead(45)) | digitalRead(46)); if(prePosition != position){ prePosition = position; Serial.println(position); } }
А как ОНО должно работать? 00 | 0 будет 0 Вы понимаете что делается в этой строке? Код (C++): ((1 << digitalRead(45)) | digitalRead(46)); Если вы считываете "0" на 45 и 46 входе, данная строка вам вернет "1" А эта: Код (C++): ((digitalRead(45) << 1) | digitalRead(46)); при "0" на 45 и 46 входе, вернет "0"