![]()
| Touchscreen - Schaltzentrale(Eine Schaltung mit Arduino und TFT-LCD Touchscreen)![]()
![]() Arduino Mega Um Verdrahtung der einzelnen Komponenten zu minimieren bzw. ganz auszuschließen, werden in der Arduino-Welt oft
sogenannte Shields verwendet. Dabei handelt es sich um fertige elektronische Platinen, die so konstruiert sind, dass sie
direkt auf die Steckleisten des Arduino aufgesteckt werden können. ![]() Arduino Mega mit aufgestecktem Display-Shield. Das hier eingesetzte Touch-Display ist ein solches Shield. Es kann zusammen mit Arduino Uno oder Mega benutzt
werden. Die relevanten Anschlüsse sind bei beiden Arduino-Modellen identisch ausgeführt. Schaltplan![]() Testschaltung![]() Das Programm (Sketch)Bevor man die Touch-Funktionen des Moduls anwenden kann, muss es kalibriert werden. Für das eigentliche
Programm (Sketch) wird unter anderen die Bibliothek „MCUFRIEND_kbv.h“ benötigt. Die Bibliothek wird mithilfe des
Bibliothekverwalters installiert. Nach erfolgreicher Installation stehen mehrere Test- und Hilfsprogramme zur Verfügung.
Sie findet man unter Datei/Beispiele/ MCUFRIEND_kbv. ![]() Installation der Bibliothek MCUFRIEND_kbv.h Für die Kalibrierung wird das Programm „TouchScrenn_Calibr_native“ verwendet. Das Programm wird in Arduino
hochgeladen und gestartet. Davor wird das Display-Shield aufgesteckt.
![]() Ergebnisse der Kalibrierung (Serieller Monitor) // Arduino - Sketch // Touchscreen - Schaltzentrale // Mit Arduino Mega 2560 R3, TFT LCD 320x240 // // MCUFRIEND_kbv.h - V 2.9.9 // Adafruit_GFX.h - V 1.5.3 // TouchScreen.h - V 1.0.3 // Arduino IDE - V 1.8.13 // ------------------------------------------------------------------------------------- #include <Adafruit_GFX.h> // Bibliotheken #include <MCUFRIEND_kbv.h> #include <TouchScreen.h> MCUFRIEND_kbv tft; #define MinDruck 200 #define MaxDruck 1000 #define BLACK 0x0000 // Farben Hexadezimal #define BLUE 0x001F #define RED 0xF800 #define GREEN 0x07E0 #define CYAN 0x07FF #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF int LED_rot = 23; // Ausgangsnummern für die LEDs int LED_blau = 25; int LED_gruen = 27; int LED_gelb = 29; int LED_weiss = 31; const int XP = 8, XM = A2, YP = A3, YM = 9; // Kalibrierungswerte const int TS_LEFT = 70, TS_RT = 895, TS_TOP = 929, TS_BOT = 100; TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300); Adafruit_GFX_Button red_button, blue_button, green_button, yellow_button, white_button, alle_button, aus_button; int pixel_x, pixel_y; bool Touch_getXY(void) { TSPoint p = ts.getPoint(); pinMode(YP, OUTPUT); pinMode(XM, OUTPUT); digitalWrite(YP, HIGH); digitalWrite(XM, HIGH); bool pressed = (p.z > MinDruck && p.z < MaxDruck); if (pressed) { pixel_x = map(p.y, TS_LEFT, TS_RT, 0, 320); pixel_y = map(p.x, TS_TOP, TS_BOT, 0, 240); } return pressed; } void LEDs_AUS () { // Alle LEDs aus digitalWrite(LED_rot,LOW); digitalWrite(LED_blau,LOW); digitalWrite(LED_gruen,LOW); digitalWrite(LED_gelb,LOW); digitalWrite(LED_weiss,LOW); } void setup(void) // SetUp { pinMode(LED_rot, OUTPUT); pinMode(LED_blau, OUTPUT); pinMode(LED_gruen, OUTPUT); pinMode(LED_gelb, OUTPUT); pinMode(LED_weiss, OUTPUT); tft.begin(0x9341); tft.setRotation(1); // Ausrichtung tft.fillScreen(BLUE); // Hintergrundfarbe red_button.initButton(&tft, 65, 35, 120, 50, WHITE, RED, BLACK, "ROT", 3); red_button.drawButton(false); blue_button.initButton(&tft, 110, 140, 100, 40, WHITE, BLUE, YELLOW, "BLAU", 2); blue_button.drawButton(false); green_button.initButton(&tft, 240, 130, 120, 50, WHITE, GREEN, WHITE, "GRUEN", 3); green_button.drawButton(false); yellow_button.initButton(&tft, 120, 200, 180, 50, WHITE, YELLOW, BLACK, "YELLOW", 3); yellow_button.drawButton(false); white_button.initButton(&tft, 95, 90, 90, 30, BLACK, WHITE, RED, "WEISS", 1); white_button.drawButton(false); alle_button.initButton(&tft, 280, 215, 70, 40, WHITE, MAGENTA, BLACK, "ALLE", 2); alle_button.drawButton(false); aus_button.initButton(&tft, 30, 130, 50, 30, WHITE, CYAN, BLACK, "AUS", 2); aus_button.drawButton(false); tft.setTextSize(2); // Schriftgrösse tft.setTextColor(CYAN); // Textfarbe tft.setCursor(160, 30); // Cursorposition tft.print("Touchscreen"); tft.setCursor(145, 50); tft.print("Schaltzentrale"); } void loop(void) { bool down = Touch_getXY(); red_button.press(down && red_button.contains(pixel_x, pixel_y)); blue_button.press(down && blue_button.contains(pixel_x, pixel_y)); green_button.press(down && green_button.contains(pixel_x, pixel_y)); yellow_button.press(down && yellow_button.contains(pixel_x, pixel_y)); white_button.press(down && white_button.contains(pixel_x, pixel_y)); alle_button.press(down && alle_button.contains(pixel_x, pixel_y)); aus_button.press(down && aus_button.contains(pixel_x, pixel_y)); if (red_button.justReleased()) red_button.drawButton(); if (blue_button.justReleased()) blue_button.drawButton(); if (green_button.justReleased()) green_button.drawButton(); if (yellow_button.justReleased()) yellow_button.drawButton(); if (white_button.justReleased()) white_button.drawButton(); if (alle_button.justReleased()) alle_button.drawButton(); if (aus_button.justReleased()) aus_button.drawButton(); if (red_button.justPressed()) { LEDs_AUS (); digitalWrite(LED_rot,HIGH); } if (blue_button.justPressed()) { LEDs_AUS (); digitalWrite(LED_blau,HIGH); } if (green_button.justPressed()) { LEDs_AUS (); digitalWrite(LED_gruen,HIGH); } if (yellow_button.justPressed()) { LEDs_AUS (); digitalWrite(LED_gelb,HIGH); } if (white_button.justPressed()) { LEDs_AUS (); digitalWrite(LED_weiss,HIGH); } if (alle_button.justPressed()) { digitalWrite(LED_rot,HIGH); digitalWrite(LED_blau,HIGH); digitalWrite(LED_gruen,HIGH); digitalWrite(LED_gelb,HIGH); digitalWrite(LED_weiss,HIGH); } if (aus_button.justPressed()) { LEDs_AUS (); } } // -------------------------------------------------------------------------------------
|
Google-Suche auf MEINE-SCHALTUNG.de : |