| 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. SchaltplanTestschaltungDas 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 : |