FTDI NerO + I2C-Digital Output

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;
 }
 }

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.