List. 4. Funkcja odczytująca pozycję X miejsca dotknięcia panelu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
/* Odczyt pozycji X z panelu dotykowego */ int Odczyt_X(void) { int i; // linia CS jest ustawiana w stan niski TP_CS(0); // opóźnienie potrzebne do aktywacji kontrolera DelayUS(1); // Wysłanie komendy ‘10010000’ Wyslij_Komende (CHX); // opóźnienie związane z odczytem napiecia DelayUS(20); // odczyt napięcia i=Odczytaj_Pomiar(); // ustawienie linii CS w stan niski TP_CS(1); // konwersja odczytanego napięcia return ( 320 - i/12+18 ); } |
List. 5. Funkcja odczytująca pozycję Y miejsca dotknięcia panelu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
/* Odczyt pozycji Y z panelu dotykowego */ int Odczyt_Y(void) { int i; // linia CS jest ustawiana w stan niski TP_CS(0); // opóźnienie potrzebne do aktywacji kontrolera DelayUS(1); // Wysłanie komendy ‘11010000’ Wyslij_Komende (CHY); // opóźnienie związane z odczytem napiecia DelayUS(20); // odczyt napięcia i=Odczytaj_Pomiar(); // ustawienie linii CS w stan niski TP_CS(1); // konwersja odczytanego napięcia return i/17; } |
Przy odczycie pozycji X wysyłana jest komenda ‘10010000’, co oznacza, że pomiar napięcia ma nastąpić na kanale pierwszym – linia X+. Przy odczycie pozycji Y wysyłana jest komenda ‘11010000’ stąd pomiar ma nastąpić na kanale piątym – linia Y+. Dodatkowo obydwie komendy ustawiają kontroler w następujący sposób:
- rozdzielczość konwersji: 12bit,
- pomiary w trybie Differential Reference Mode,
- automatyczne „uśpienie” układu po każdej konwersji.
Przy wykorzystaniu powyższych funkcji można bez większego problemu konstruować urządzenia wykorzystujące panel dotykowy, jako dodatkowy interfejs użytkownika.
Jan Rogalski