15-02-2016, 21:57
Witam
Gdzieś lub kiedyś popełniłem to :-)
Masz tu 3 różne funkcje do obsługi trzech różnych typów klawiatur.
W Twoim przypadku najlepiej będzie pasować czytaj_3()... jest dla 5 klawiszy ale przecież nie musisz wszystkiego używać.
Dla 4 standardem jest: OK, WSTECZ, GÓRA, DÓŁ (lub prawo lewo).
Pozdrawiam
Gdzieś lub kiedyś popełniłem to :-)
Kod:
// --- Poniżej definicje funkcji obsługi kilku różnych klawiatur ------------------------------------/
// --- klawiatura analogowa podpięta pod pin A0 np moduł LCD + 5 key firmy DFRobot ------------------/
int czytaj_1()
{
int pinAnalog=0;
int stan_Analog = analogRead(pinAnalog);delay(30);//Serial.println(stan_Analog);
if (stan_Analog > 1000) return -1; // dla wartosci poza zakresem
if (stan_Analog < 50) return 0; // w prawo
if (stan_Analog < 150) return 1; // do gĂłry
if (stan_Analog < 300) return 2; // w dół
if (stan_Analog < 500) return 3; // w lewo
if (stan_Analog < 700) return 4; // OK
return -1; // nic nie wcisnieto
}
// --- popularny joystick z allegro za ok 20 zł. -----------------------------------------------------/
int czytaj_2()
{
int poziom=0;int pion=1;int pinD=4;
// poziom - nr wejścia analogowego do którego podłączona jest manetka joysticka dla ruchu lewo-prawo
// pion - nr wejścia analogowego do którego podłączona jest manetka joysticka dla ruchu góra-dół
// pinD - nr pinu cyfrowego do którego podłączony jest przycisk OK w joysticku
int stan1= analogRead(pion); {delay(60);if(stan1>0)stan1=(stan1+50)/1024+1;}
int stan2= analogRead(poziom); {delay(60);if(stan2>0)stan2=(stan2+50)/1024+1;}
int stanD=digitalRead(pinD);
if(stanD==LOW) return 4; // OK
if(stan1==0) return 2; // w dół
if(stan1==2) return 1; // do gĂłry
if(stan2==0) return 3; // w lewo
if(stan2==2) return 0; // w prawo
return -1; // nic nie wcisnieto
}
// --- wersja dla 5-ciu przycisków cyfrowych --- (np. 2,4,5,6,8 ) -------------------------------------/
int czytaj_3()
{
int gora=2, lewo=4, ok=5, prawo=6,dol=8;
// gora - nr pinu cyfrowego do którego podłączony jest przyciski góra
// lewo - nr pinu cyfrowego do którego podłączony jest przyciski lewo
// ok - nr pinu cyfrowego do którego podłączony jest przyciski OK
// prawo - nr pinu cyfrowego do którego podłączony jest przyciski prawo
// dol - nr pinu cyfrowego do którego podłączony jest przyciski dół
if(digitalRead(gora)==LOW) return 1;
if(digitalRead(lewo)==LOW) return 3;
if(digitalRead(ok)==LOW) return 4;
if(digitalRead(prawo)==LOW) return 0;
if(digitalRead(dol)==LOW) return 2;
return -1;
}
W Twoim przypadku najlepiej będzie pasować czytaj_3()... jest dla 5 klawiszy ale przecież nie musisz wszystkiego używać.
Dla 4 standardem jest: OK, WSTECZ, GÓRA, DÓŁ (lub prawo lewo).
Pozdrawiam