Evo primer sa mogucnoscu stiskanja vise tastera istovremeno:
U ovom primeru mozes da dodajes tastere samo u array byte taster[] dodas pin na koji je vezan taster.
Komanda koja se salje je integer koji je kreiran od vrednost bitova(0 ili 1) u zavisnosti da li je taster pritisnut ili nije.
Posto ti u ovom primeru koristis samo dva tastera to znaci da ce se "komanda" kreirati od dva bita i njena max vrednost ce biti 3
primer:
Na prijemnoj strani treba samo da od pristigle "komnde" ispitas njene bitove koji je stovan a koji nije i tako ces znati koji su tasteri pritisnuti.
Ako nije pritisnut ni jedan taster onda ovaj primer salje stalno "komandu" 0 ako hoces to da izbacis onda posaljes amo jednom 0 i cekas da se to stanje promenmi na taj nacin smanjujes opterecenost wifi modula sa komandom 0
Code:
byte taster[] = {8,9}; // ovde dodas pinove za druge tastere ako ti zatreba
#define numButtons (sizeof(taster)) //array size -> ovde izracunavamo koliko imas tastera
int command=0;
int LED = 12;
volatile int comm = 0;
void setup() {
pinMode(LED, OUTPUT);
for(int i=0;i<numButtons;i++)
pinMode(taster[i], INPUT); // Proglasavamo Pinove ulaznim
Serial.begin(9600);
}
void loop() {
command = 0;
for(byte i = 0; i < numButtons; i++){
int tasterTest = 0; // variable za debounce
comm = 0;
digitalWrite(LED,LOW); // gasimo led kad taster nije pritisnut
while (digitalRead (taster[i]) == HIGH && comm==0){ //vrtimo petlju da budemo sigurni da je taster pritisnut
tasterTest++;
if(tasterTest > 3){ // proveravamo debounce
comm = 1; // bit 1 pritisnut taster (i)
digitalWrite(LED, HIGH); // palimo led da je taster pritisnut
}
}
command = command + (comm<<i) ; // kreiramo INT sa pomeranjem bitova u levo
}
Serial.println(command); // slanje komande
delay(100);
}
U ovom primeru mozes da dodajes tastere samo u array byte taster[] dodas pin na koji je vezan taster.
Komanda koja se salje je integer koji je kreiran od vrednost bitova(0 ili 1) u zavisnosti da li je taster pritisnut ili nije.
Posto ti u ovom primeru koristis samo dva tastera to znaci da ce se "komanda" kreirati od dva bita i njena max vrednost ce biti 3
primer:
Code:
dva tastera :
Taster2 | Taster1 | Komanda
------------------------------
0 1 1
1 0 2
1 1 3
------------------------------
tri tastera :
Taster3 | Taster2 | Taster1 | Komanda
-------------------------------------
0 0 1 1
0 1 0 2
0 1 1 3
1 0 0 4
1 0 1 5
1 1 0 6
1 1 1 7
-------------------------------------
Na prijemnoj strani treba samo da od pristigle "komnde" ispitas njene bitove koji je stovan a koji nije i tako ces znati koji su tasteri pritisnuti.
Ako nije pritisnut ni jedan taster onda ovaj primer salje stalno "komandu" 0 ako hoces to da izbacis onda posaljes amo jednom 0 i cekas da se to stanje promenmi na taj nacin smanjujes opterecenost wifi modula sa komandom 0