• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
program obsługi enkodera, lcd 4x20
#7
Popatrzmy na kod...
int n = digitalRead(xyz);
W tej linii zmienna n przybiera wartość 0 lub 1, w zależności od stanu pinu "xyz".

for ( n =0 ; n<4 ; n++)
W tej zaś linii, zmienna n przybiera wartość 0 i dla tej wartości wykonywany jest kod:
lcd.setCursor(7,0);
lcd.print(pozycja_x+(obsluga_enc ()));
break;
Teraz następuje inkrementacja (n++), n przybiera wartość 1 i wykonywana jest instrukcja dla case 1

i tak dalej, aż warunek n<4 stanie się fałszem.
Jesteśmy w funkcji loop() więc znowu int n = digitalRead(xyz);

Dla każdego n jeszcze wyskakujesz do obsługi enkodera, ale to i tak nie ma znaczenia na tym etapie.

Mógłbyś napisać coś w tym stylu:

Deklaracje zmiennych globalnych
int iOs=0; //oś którą chcesz sterować
int axis=0// zmienna pomocnicza

W funkcji loop

int n = digitalRead(xyz);
if (n==LOW) {
iOs=wyborOsi(); //wykonujemy funkcję wyborOsi()
};
//tutaj możesz sobie dać tą swoją funkcję switch ... case
switch(iOs)
{
case 0:
lcd.setCursor(7,0);
lcd.print(pozycja_x+(obsluga_enc ()));
break;
..................itd.itd...............


I napisać funkcję wyboru osi.
Coś w tym stylu:

int wyborOsi() {
// wartość początkowa zmiennej axis przechowującej numer osi wynosi 0, co oznacza że mamy wybraną oś X

if (axis==0) axis=1;
else if (axis==1) axis=2;
else axis=3;
return axis;
}



A dla czego enkoder nie działa prawidłowo?
Wykorzystaj gotową bibliotekę do jego obsługi, albo dodaj jakąś pauzę aby wyeliminować drgania styków, albo obsługuj go w przerwaniu.
Zresztą w przerwaniu było by najpewniej, ale musisz enkoder podpiąć pod piny z przerwaniem int0 oraz int1.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
  


Wiadomości w tym wątku
RE: program obsługi enkodera, lcd 4x20 - przez Robson Kerman - 18-05-2017, 09:18

Skocz do:


Przeglądający: 1 gości