энкодер из 4 входов
- Войдите на сайт для отправки комментариев
Втр, 28/11/2017 - 01:03
4 кнопки подключены к 9,10,11,12 пинам.
надо получить данные в виде :
при нажатии на кнопку 12 получить 0001;
при нажатии на кнопки 10 и 12 получить 0101
итд итп
int in1 = 9;
int in2 = 10;
int in3 = 11;
int in4 = 12;
void setup()
{
Serial.begin(9600);
pinMode(in1, INPUT);
pinMode(in2, INPUT);
pinMode(in3, INPUT);
pinMode(in4, INPUT);
}
void loop()
{
int a = digitalRead(in1);
int b = digitalRead(in2);
int c = digitalRead(in3);
int d = digitalRead(in4);
int val = a|b|c|d;
Serial.println(val);
if (val == 0001){Serial.println("ok");}
if (val == 0100){Serial.println("ok2");}
delay(1000);
}
/**/ const byte pin1 = 9; const byte pin2 = 10; const byte pin3 = 11; const byte pin4 = 12; //---main()--------------------------------- void setup() { Serial.begin(9600); pinMode(pin1, INPUT); pinMode(pin2, INPUT); pinMode(pin3, INPUT); pinMode(pin4, INPUT); } void loop() { delay(1000); int val = 8 * digitalRead(pin4) + 4 * digitalRead(pin3) + 2 * digitalRead(pin2) + digitalRead(pin1); Serial.println(val,2); }Или так, результат такой же только выполнится быстрее
/**/ const byte pin1 = 9; const byte pin2 = 10; const byte pin3 = 11; const byte pin4 = 12; //---main()--------------------------------- void setup() { Serial.begin(9600); pinMode(pin1, INPUT); pinMode(pin2, INPUT); pinMode(pin3, INPUT); pinMode(pin4, INPUT); } void loop() { delay(1000); int val = (uint8_t)(PINB << 3)>> 4; Serial.println(val,2); }Спасибо работает.
но мне надо что бы значение с выходов получалось B0100; B1001 и тд итп, а то выбор не работает
switch (val) { case 1000: //выполняется, когда var равно 1 Serial.println("sever"); break; case 0100: //выполняется когда var равно 2 Serial.println("ug"); break;case B100 не пробовали?
Спасибо. Заработало.
/**/ const byte pin1 = 9; const byte pin2 = 10; const byte pin3 = 11; const byte pin4 = 12; //---main()--------------------------------- void setup() { Serial.begin(9600); pinMode(pin1, INPUT); pinMode(pin2, INPUT); pinMode(pin3, INPUT); pinMode(pin4, INPUT); } void loop() { delay(1000); int val = 8 * digitalRead(pin4) + 4 * digitalRead(pin3) + 2 * digitalRead(pin2) + digitalRead(pin1); Serial.println(val,2); switch (val) { case B1000: //выполняется, когда var равно 1 Serial.println("sever"); break; case B0100: //выполняется когда var равно 2 Serial.println("ug"); break; } }