Цитата:
Сообщение от lti1
Второй энкодер подключается к D10 и D16, так же с резисторами и конденсаторами:
PHP код:
int analogPin=0; int data;
void setup() { PCICR=1<<PCIE0; PCMSK0=(1<<PCINT5)|(1<<PCINT4)|(1<<PCINT2)|(1<<PCINT6); pinMode (9,INPUT); pinMode (8,INPUT); pinMode (16,INPUT); pinMode (10,INPUT); Keyboard.begin(); } void loop() { }
ISR (PCINT0_vect){ static byte old_n=PINB&B01110100; byte new_n=PINB&B01110100;
if ((old_n & B00110000) == 32 && (new_n & B00110000) == 48 || (old_n & B00110000) == 16 && (new_n & B00110000) == 0) { Remote.increase(); Remote.clear(); } if ((old_n & B00110000) == 16 && (new_n & B00110000) == 48 || (old_n & B00110000) == 32 && (new_n & B00110000) == 0) { Remote.decrease(); Remote.clear(); } if ((old_n & B01000100) == 64 && (new_n & B01000100) == 68 || (old_n & B01000100) == 4 && (new_n & B01000100) == 0) { Remote.next(); Remote.clear(); } if ((old_n & B01000100) == 4 && (new_n & B01000100) == 68 || (old_n & B01000100) == 64 && (new_n & B01000100) == 0) { Remote.previous(); Remote.clear(); } old_n= new_n; }
|
Спасибо огромнейшее, теперь всё ровно и четко.
А не подскажете принцип вот этой строчки
if ((old_n & B01000100) == 4 && (new_n & B01000100) == 68 || (old_n & B01000100) == 64 && (new_n & B01000100) == 0) {
для собственного понимания?