Bogusław Kempny

Klawiatura numeryczna

×
Autor English
Początek HC-SR04 LCD Kamera fork() sms strfry() GPIO impulsy Klawiatura Brama GPIO PWM SG90 RFID Grafolog RCP Shutdown Temperatura ....











Jak w innych opisach, przygotowałem gotowy, działający, przykładowy program keyb.c i prosty skrypt do jego skompilowania ck

No to teraz jak to działa.
Definiujemy, do których pinów GPIO podłączyliśmy wyprowadzenia wierszy i kolumn klawiatury:


#define IN1 26
#define IN2 27
#define IN3 28
#define IN4 29

#define OU1 22
#define OU2 23
#define OU3 24
#define OU4 25


void Delay();
W tej zmiennej zapamiętamy ostatnio naciśnięty i jeszcze nie puszczony klawisz - nie chcemy przecież po jednym naciśnięciu klawisza tysięcy odczytów!
int last;
No i główna procedura:
int main (void)
{
  int k;

  if (wiringPiSetup () == -1)
  exit (1) ;
Piny GPIO podłączone do wierszy klawiatury programujemy na wyjście i ustawiamy na nich zero logiczne:
    pinMode(IN1, OUTPUT);
    digitalWrite (IN1, 0);
    pinMode(IN2, OUTPUT);
    digitalWrite (IN2, 0);
    pinMode(IN3, OUTPUT);
    digitalWrite (IN3, 0);
    pinMode(IN4, OUTPUT);
    digitalWrite (IN4, 0);
Piny kolumn ustawiamy na wejście i wbudowanym rezystorem przywieramy je do masy:
    pinMode(OU1, INPUT);
    pullUpDnControl (OU1, PUD_DOWN) ;
    pinMode(OU2, INPUT);
    pullUpDnControl (OU2, PUD_DOWN) ;
    pinMode(OU3, INPUT);
    pullUpDnControl (OU3, PUD_DOWN) ;
    pinMode(OU4, INPUT);
    pullUpDnControl (OU4, PUD_DOWN) ;
Teraz w nie kończącej się petli czytamy klawiaturę wyświetlając jaki klawisz naciśnięto:
  for(;;)
 {
   if (k=read_key() ) printf("%c", k);
 }
}
Sam odczyt klawiszy wykonuje funkcja read_key którą opiszemy dalej.