1 | #include <Arduino.h>
|
2 | #include <Wire.h>
|
3 | #include <UTFT.h>
|
4 | #include <UTFT_Buttons_ITDB.h>
|
5 |
|
6 | extern uint8_t SmallFont[];
|
7 | extern uint8_t BigFont[];
|
8 | extern uint8_t Dingbats1_XL[];
|
9 |
|
10 | UTFT myGLCD(SSD1289,38,39,40,41);
|
11 | ITDB02_Touch myTouch(6,5,4,3,2);
|
12 | UTFT_Buttons myButtons(&myGLCD, &myTouch);
|
13 | //Buttonvariablen
|
14 | int Sensor1;
|
15 | int Sensor2;
|
16 | int Back;
|
17 | int Clear;
|
18 | //Checkvariable zur Auswahl
|
19 | int check;
|
20 | boolean default_colors = true;
|
21 | //Durchflusssensor Variablen
|
22 | int Empfangen = 12;
|
23 | int Durchfluss; //Ticks pro 1/10 Sekunden: 10 ist Korrekturfaktor
|
24 | float Durchflusslh;
|
25 | float Durchflusslm;
|
26 |
|
27 | void setup(){
|
28 | myGLCD.InitLCD();
|
29 | myGLCD.clrScr();
|
30 | myGLCD.setFont(BigFont);
|
31 | myGLCD.setColor(VGA_WHITE);
|
32 | myTouch.InitTouch(1);
|
33 | myTouch.setPrecision(PREC_MEDIUM);
|
34 | myButtons.setTextFont(BigFont);
|
35 | myButtons.setSymbolFont(Dingbats1_XL);
|
36 |
|
37 | pinMode(Empfangen, OUTPUT); //Daten Senden/Empfangen
|
38 | digitalWrite(Empfangen, HIGH); //Invertiert -> Keine Daten senden
|
39 | Wire.begin(7); // I2C Beginnen, Teilnehmer 8
|
40 | Wire.onReceive(Empfangsevent); // Register Event: Wird immer ausgeführt: interrupt
|
41 | Serial.begin(9600); // Serieller Ausgang: Terminal
|
42 | }
|
43 |
|
44 | void loop(){
|
45 | Startbild(); //Startbild erzeugen
|
46 | while(1)
|
47 | {
|
48 | if (myTouch.dataAvailable() == true)
|
49 | {
|
50 | check = myButtons.checkButtons();
|
51 |
|
52 | if(check == Sensor1){
|
53 | Serial.println("Sensor 1");
|
54 | Sensorbild1(); //Bild für Sensor 1 erzeugen und Daten verarbeiten
|
55 | }
|
56 | else if(check == Sensor2)
|
57 | {
|
58 | Serial.println("Sensor 2");
|
59 | Sensorbild2(); //Bild für Sensor 2 erzeugen und Daten verarbeiten
|
60 | }
|
61 | else if(check == Clear)
|
62 | {
|
63 | Serial.println("Clear");
|
64 | Startbild(); //Startbild erzeugen
|
65 | }
|
66 | else if(check == Back)
|
67 | {
|
68 | Serial.println("Back");
|
69 | Startbild(); //Startbild erzeugen
|
70 | }
|
71 | }
|
72 | else{}
|
73 | }
|
74 | }
|
75 |
|
76 | void Sensorbild1(){
|
77 | //Sensorbild 1: Durchflusssensor
|
78 | myGLCD.clrScr();
|
79 | myButtons.deleteAllButtons();
|
80 | myGLCD.print("Durchflusssensor", CENTER, 1);
|
81 | Back = myButtons.addButton( 0, 200, 120, 30, "Zurueck");
|
82 | myButtons.drawButton(Back);
|
83 |
|
84 | do{
|
85 | durchflussberechnung();
|
86 | if(Durchflusslh < 1000 && Durchflusslh > 99){ //100-999
|
87 | myGLCD.printNumF(Durchflusslh, 1, (100+16), 120);
|
88 | myGLCD.print("0", 100, 120);
|
89 | myGLCD.printNumF(Durchflusslm, 1, (100+16), 150);
|
90 | myGLCD.print("0", 100, 150);
|
91 | }
|
92 | else if(Durchflusslh < 100){ //0-99
|
93 | myGLCD.printNumF(Durchflusslh, 1, (100+32), 120);
|
94 | myGLCD.print("00", 100, 120);
|
95 | myGLCD.printNumF(Durchflusslm, 1, (100+32), 150);
|
96 | myGLCD.print("00", 100, 150);
|
97 | }
|
98 | else if(Durchflusslh > 999 ){ //1000-9999
|
99 | myGLCD.printNumF(Durchflusslh, 1, 100, 120);
|
100 | myGLCD.printNumF(Durchflusslm, 1, 100, 150);
|
101 | }
|
102 | myGLCD.print(" L/h", 200, 120);
|
103 | myGLCD.print(" L/m", 200, 150);
|
104 | }while(myTouch.dataAvailable() == false);
|
105 | check = Back;
|
106 | }
|
107 | void Sensorbild2(){
|
108 | //Sensorbild 2: Drucksensor
|
109 | myGLCD.clrScr();
|
110 | myButtons.deleteAllButtons();
|
111 | myGLCD.print("Sensor 2", CENTER, 1);
|
112 | Back = myButtons.addButton( 0, 200, 120, 30, "Zurueck");
|
113 | myButtons.drawButton(Back);
|
114 | myGLCD.print("Hier kommts hin!", CENTER, 100);
|
115 | }
|
116 | void Startbild(){
|
117 | //Startbild
|
118 | myGLCD.clrScr();
|
119 | myButtons.deleteAllButtons();
|
120 | myGLCD.print("Auswahl", CENTER, 1);
|
121 | Sensor1 = myButtons.addButton( 10, 40, 300, 30, "Durchflusssenor");
|
122 | Sensor2 = myButtons.addButton( 10, 80, 300, 30, "Sensor 2");
|
123 | Clear = myButtons.addButton( 10, 120, 300, 30, "Clear");
|
124 | myButtons.drawButton(Sensor1);
|
125 | myButtons.drawButton(Sensor2);
|
126 | myButtons.drawButton(Clear);
|
127 | }
|
128 | void durchflussberechnung() {
|
129 | digitalWrite(Empfangen, LOW); //Interrupt auslösen
|
130 | digitalWrite(Empfangen, HIGH); //Statuswechsel -> Sendebefehl Arduino 1
|
131 | Durchflusslm = (Durchfluss*3.6*10/60); //Liter pro Minute
|
132 | Durchflusslh = (Durchfluss*3.6*10); //Liter pro Stunde
|
133 | }
|
134 | void Empfangsevent() {
|
135 | Durchfluss = (Wire.read() | (Wire.read() << 8)); // untere und obere Byte zusammensetzen
|
136 | }
|