FTDI NerO + Startseite

von dieser Seite aus wird in die Untermenüs verzweigt

Grundprogramm und Logik

#include <SPI.h> //Fuer Serielle Verbindung
#include <CleO.h> //CleO Bibliothek
#include <Wire.h> //I2C Bibliothek
#include <stdlib.h> //Für Zahlendarstellung
#include "DHT.h" //Für Tempsensor

#define I2C_OUT_ADDR 64 >> 1 // I2C-Addresse als 7 Bit
#define I2C_IN_ADDR 112 >> 1 // I2C-INPUT-Addresse als 7 Bit
#define I2C_433MHz_ADDR 16 >> 1 // I2C-433MHz-Addresse als 7 Bit
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
#define DHTPIN 2 // Benutzter Pin auf dem NerO

byte VAL=0; //Glob. Variable für Digital Output
int globalCurrSite = 4, del=150; //Glob. Variable für derzeitige Seite und delay bei Buttonpress
bool penDownOnBack = false; //Glob. Variable für Startseite-Button
int16_t previousDur = 0, previousTag = 0; //Glob. Variable für Tag-Management
DHT dht(DHTPIN, DHTTYPE); //DHT für Temperatursensor

void setup()
{
Serial.begin(9600); //Serielle Schnittstelle konfigurieren
CleO.begin(); //CleO initialisieren
Wire.begin(); //Wire initialisieren
dht.begin(); //dht initialisieren
setSystemcode(); //Systemcode übertragen
}

void setSystemcode()
{
Wire.beginTransmission(I2C_433MHz_ADDR);
Wire.write(0); //Register Systemcode einstellen
Wire.write(0); //DIP1 = ON
Wire.write(0); //DIP2 = ON
Wire.write(0); //DIP3 = ON
Wire.write(15); //DIP4 = OFF
Wire.write(15); //DIP5 = OFF
Wire.endTransmission();
}

void loop()
{
initSite();
}

void initSite()
{
//Seiten-Weiche
switch(globalCurrSite)
{
case 0:
display_start();
control_start();
break;
case 1:
display_do();
control_do();
break;
case 2:
display_di();
control_di();
break;
case 3:
display_terra();
control_terra();
break;
case 4:
display_funk();
control_funk();
}
}

Code für die Startseite

//Variablen für Touchlogik
bool penDownOn20 = false, penDownOn21 = false, penDownOn22 = false, penDownOn23 = false;
bool butADwn=false, butBDwn=false;

void display_start()
{
CleO.Start();
int tiefeBt1 = 100;
int tiefeBt2 = tiefeBt1+75;
int tiefeBt3 = tiefeBt2+75;
int tiefeBt4 = tiefeBt3+75;
//int tiefeBt5 = tiefeBt4+75;
//int tiefeBt6 = tiefeBt5+75;

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

if (penDownOn20) {
penDownOn20 = false;
globalCurrSite = 1;
}
else if (penDownOn21) {
penDownOn21 = false;
globalCurrSite = 2;
}
else if (penDownOn22) {
penDownOn22 = false;
globalCurrSite = 3;
}
else if (penDownOn23) {
penDownOn23 = false;
globalCurrSite = 4;
}

CleO.Tag(20);
CleO.LineColor(BLUE);
CleO.Line(0, tiefeBt1, 350, tiefeBt1);
CleO.StringExt(FONT_MEDIUM, 160, tiefeBt1, WHITE, MM, 0, 0, "Digital Output");
CleO.Tag(21);
CleO.LineColor(BLUE);
CleO.Line(0, tiefeBt2, 350, tiefeBt2);
CleO.StringExt(FONT_MEDIUM, 160, tiefeBt2, WHITE, MM, 0, 0, "Digital Input");
CleO.Tag(22);
CleO.LineColor(BLUE);
CleO.Line(0, tiefeBt3, 350, tiefeBt3);
CleO.StringExt(FONT_MEDIUM, 160, tiefeBt3, WHITE, MM, 0, 0, "Terrarium Daten");
CleO.Tag(23);
CleO.LineColor(BLUE);
CleO.Line(0, tiefeBt4, 350, tiefeBt4);
CleO.StringExt(FONT_MEDIUM, 160, tiefeBt4, WHITE, MM, 0, 0, "Funkmodul");

CleO.StringExt(FONT_SANS_2, 160, 440, BLUE, TM, 0, 0, "www.horter.de");
CleO.Show();
}

void control_start()
{
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 == 20) //Button-Tag herausfinden
penDownOn20 = true; //entsprechende bool-Variable schalten (Weitere Verarbeitung in "display_do()")
else if (tag == 21)
penDownOn21 = true;
else if (tag == 22)
penDownOn22 = true;
else if (tag == 23)
penDownOn23 = true;
}
else if (previousDur == 1 && dur == 0)
{
previousDur = 0;
if (previousTag == 20)
penDownOn20 = false;
else if (previousTag == 21)
penDownOn21 = false;
else if (previousTag == 22)
penDownOn22 = false;
else if (previousTag == 23)
penDownOn23 = false;
}
}

Der Code der einzelnen Bildschirmseiten finden Sie hier:

        

FTDI NerO + Startseite
FTDI NerO + I2C-Digital Output
FTDI NerO + I2C-Digital Input
FTDI NerO + AM2322 T/F-Sensor

Den kompletten Code kann hier heruntergeladen werden:
Demoprogramm für Arduino-IDE FTDI NerO und CleO35 mit I2C-Modulen (154 Downloads)

 


			

Schreibe einen Kommentar

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