Auf dieser Bildschirmseite sind acht runde Knöpfe eingebaut, mit denen man die Ausgänge der I2C-DO Baugruppe steuern kann.
//Variablen für Touchlogik bool penDownOn1 = false, penDownOn2 = false, penDownOn3 = false, penDownOn4 = false, penDownOn5 = false, penDownOn6 = false, penDownOn7 = false, penDownOn8 = false; bool but1Dwn = false, but2Dwn = false, but3Dwn = false, but4Dwn = false, but5Dwn = false, but6Dwn = false, but7Dwn = false, but8Dwn = false; void display_do() { CleO.Start(); CleO.StringExt(FONT_MEDIUM, 160, 0, BLUE, TM, 0, 0, „HOKA I2C DEMO“); CleO.RectangleExt(0, 50, 350, 500, WHITE, TL, 0, 0); CleO.LineWidth(30); //Funktionen Buttons if (penDownOn1) { //wenn penDownOn1 if (but1Dwn) { //wenn bt1Dwn true VAL -=1; //globale Variable wird -1 gesetzt } else { //ansonsten VAL += 1; //globale Variable wird +1 gesetzt } but1Dwn = !but1Dwn; //bt1Dwn „schaltet“ delay(del); //kurze Pause zum Finger wegnehmen } else if (penDownOn2) { if (but2Dwn) { VAL -=2; } else { VAL += 2; } but2Dwn = !but2Dwn; delay(del); } else if (penDownOn3) { if (but3Dwn) { VAL -=4; } else { VAL += 4; } but3Dwn = !but3Dwn; delay(del); } else if (penDownOn4) { if (but4Dwn) { VAL -=8; } else { VAL += 8; } but4Dwn = !but4Dwn; delay(del); } else if (penDownOn5) { if (but5Dwn) { VAL -=16; } else { VAL += 16; } but5Dwn = !but5Dwn; delay(del); } else if (penDownOn6) { if (but6Dwn) { VAL -=32; } else { VAL += 32; } but6Dwn = !but6Dwn; delay(del); } else if (penDownOn7) { if (but7Dwn) { VAL -=64; } else { VAL += 64; } but7Dwn = !but7Dwn; delay(del); } else if (penDownOn8) { if (but8Dwn) { VAL -=128; } else { VAL += 128; } but8Dwn = !but8Dwn; delay(del); } else if (penDownOnBack) { penDownOnBack = false; globalCurrSite = 0; } else {} int tiefe = 175; //Tiefe aller 8 Buttons (Des ganzen Kontainers) int fromLeft1 = 40; //Abstand von Links aller 8 Buttons int width1 = 40; //Radius der Buttons int abst = 68; //Abstand zwischen Buttons int tiefe1 = tiefe+60; int fromLeft = fromLeft1+35; int width = width1+35; //setValue-Funktion zum Ansteuern des Moduls setValue(VAL); //Layout Buttons CleO.Tag(1); //Tag fuer identifizierung CleO.CircleExt(fromLeft1, tiefe1, 0, 30, BLUE, MM, 0, 0); //Button zeichnen CleO.StringExt(FONT_MEDIUM, fromLeft1, tiefe1, WHITE, MM, 0, 0, „1“); //Beschriftung CleO.Tag(3); CleO.CircleExt(fromLeft1+abst, tiefe1, 0, 30, BLUE, MM, 0, 0); CleO.StringExt(FONT_MEDIUM, fromLeft1+abst, tiefe1, WHITE, MM, 0, 0, „3“); CleO.Tag(5); CleO.CircleExt(fromLeft1+abst*2, tiefe1, 0, 30, BLUE, MM, 0, 0); CleO.StringExt(FONT_MEDIUM, fromLeft1+abst*2, tiefe1, WHITE, MM, 0, 0, „5“); CleO.Tag(7); CleO.CircleExt(fromLeft1+abst*3, tiefe1, 0, 30, BLUE, MM, 0, 0); CleO.StringExt(FONT_MEDIUM, fromLeft1+abst*3, tiefe1, WHITE, MM, 0, 0, „7“); CleO.Tag(2); CleO.LineColor(BLUE); CleO.CircleExt(fromLeft, tiefe, 0, 30, BLUE, MM, 0, 0); CleO.StringExt(FONT_MEDIUM, fromLeft, tiefe, WHITE, MM, 0, 0, „2“); CleO.Tag(4); CleO.LineColor(BLUE); CleO.CircleExt(fromLeft+abst, tiefe, 0, 30, BLUE, MM, 0, 0); CleO.StringExt(FONT_MEDIUM, fromLeft+abst, tiefe, WHITE, MM, 0, 0, „4“); CleO.Tag(6); CleO.LineColor(BLUE); CleO.CircleExt(fromLeft+abst*2, tiefe, 0, 30, BLUE, MM, 0, 0); CleO.StringExt(FONT_MEDIUM, fromLeft+abst*2, tiefe, WHITE, MM, 0, 0, „6“); CleO.Tag(8); CleO.LineColor(BLUE); CleO.CircleExt(fromLeft+abst*3, tiefe, 0, 30, BLUE, MM, 0, 0); CleO.StringExt(FONT_MEDIUM, fromLeft+abst*3, tiefe, WHITE, MM, 0, 0, „8“); CleO.Tag(100); CleO.LineColor(BLUE); CleO.Line(0, 375, 350, 375); CleO.StringExt(FONT_MEDIUM,160, 375, WHITE, MM, 0, 0, „Startseite“); //Footer CleO.StringExt(FONT_SANS_2, 160, 440, BLUE, TM, 0, 0, „www.horter.de“); CleO.Show(); } void setValue(byte wert) { byte val = 255-wert; //val mit invertiertem Wert belegen Wire.beginTransmission(I2C_OUT_ADDR); //Uebertragung beginnen Wire.write(val); //Werte uebertragen Wire.endTransmission(); //Uebertragung beenden } void control_do() { int16_t x, y, dur, tag; CleO.TouchCoordinates(x, y, dur, tag); //Tag des Beruehrungspunktes einlesen if (previousDur == 0 && dur != 0) //Wenn previousDur == 0 -> Beruehrung aktiv und Dauer der Beruehrung nicht 0 { previousTag = tag; //Tag zwischenspeichern previousDur = 1; //Setze previousDur = 1 fuer „wurde gedrueckt“ if (tag == 1) //Button-Tag herausfinden penDownOn1 = true; //entsprechende bool-Variable schalten (Weitere Verarbeitung in „display_do()“) else if (tag == 2) penDownOn2 = true; else if (tag == 3) penDownOn3 = true; else if (tag == 4) penDownOn4 = true; else if (tag == 5) penDownOn5 = true; else if (tag == 6) penDownOn6 = true; else if (tag == 7) penDownOn7 = true; else if (tag == 8) penDownOn8 = true; else if (tag == 100) penDownOnBack = true; } else if (previousDur == 1 && dur == 0) //Wenn previousDur == 1 -> beruehrung inaktiv und Dauer der Beruehrung ist 0 { previousDur = 0; //Setze previousDur = 1 fuer „wurde losgelassen“ if (previousTag == 1) penDownOn1 = false; else if (previousTag == 2) penDownOn2 = false; else if (previousTag == 3) penDownOn3 = false; else if (previousTag == 4) penDownOn4 = false; else if (previousTag == 5) penDownOn5 = false; else if (previousTag == 6) penDownOn6 = false; else if (previousTag == 7) penDownOn7 = false; else if (previousTag == 8) penDownOn8 = false; else if (previousTag == 8) penDownOnBack = false; } }