1 | #include <UTFT.h>
|
2 | #include <Wire.h>
|
3 | #include <HX711.h>
|
4 |
|
5 | HX711 scale(A1, A0);
|
6 |
|
7 | long Rohwert; // vom HX711 gelieferter Rohwert
|
8 | long offset = 5300; // offset
|
9 | float Scale = 50000; // scale
|
10 | float Kraft_alt, Kraft_neu; // berechnete Kraft in N
|
11 |
|
12 |
|
13 | // Declare which fonts we will be using
|
14 | extern uint8_t SmallFont[];
|
15 |
|
16 | UTFT myGLCD(ILI9486,38,39,40,41);
|
17 |
|
18 | int i, j; // Zählvariable
|
19 |
|
20 | const int offsetPin = 2; // the number of the pushbutton pin
|
21 | int offsetState = 0; // variable for reading the pushbutton status
|
22 | const int startPin = 3; // the number of the switch pin
|
23 | int startState = 0; // variable for reading the switch status
|
24 |
|
25 |
|
26 |
|
27 | // ====================================
|
28 | // === ===
|
29 | // === SETUP ===
|
30 | // === ===
|
31 | // ====================================
|
32 |
|
33 | void setup()
|
34 | {
|
35 | Serial.begin(9600);
|
36 | // while(!Serial); // time to get serial running
|
37 |
|
38 | pinMode(offsetPin, INPUT);
|
39 | pinMode(startPin, INPUT);
|
40 |
|
41 | // Setup the LCD
|
42 | myGLCD.InitLCD();
|
43 | myGLCD.setFont(SmallFont);
|
44 | myGLCD.clrScr();
|
45 |
|
46 | myGLCD.setColor(255, 255, 0);
|
47 | myGLCD.fillRect(0, 0, 479, 13);
|
48 | myGLCD.setColor(0, 0, 0);
|
49 | myGLCD.setBackColor(255, 255, 0);
|
50 | myGLCD.print("Newtonmeter - stoppi", CENTER, 1);
|
51 |
|
52 |
|
53 | scale.set_gain(128); // A-Kanal: gain = 64 oder 128; B-Kanal: fix 32
|
54 |
|
55 | Kraft_alt = 0.0;
|
56 | }
|
57 |
|
58 |
|
59 |
|
60 |
|
61 | // ====================================
|
62 | // === ===
|
63 | // === HAUPTSCHLEIFE ===
|
64 | // === ===
|
65 | // ====================================
|
66 |
|
67 | void loop()
|
68 | {
|
69 | while(startState = digitalRead(startPin)) // Warten bis start-Taster betätigt wurde
|
70 | {
|
71 | Rohwert = scale.read(); // Einlesen eines Rohwerts
|
72 |
|
73 | Kraft_neu = (Rohwert - offset) / Scale; // Berechnung der Kraft in Newton
|
74 |
|
75 | //Serial.println(Kraft_neu);
|
76 |
|
77 | myGLCD.setColor(0, 255, 0);
|
78 | myGLCD.setBackColor(0, 0, 0);
|
79 | myGLCD.print(" ", 70, 18);
|
80 | myGLCD.printNumF(Kraft_neu, 2, 70, 18);
|
81 |
|
82 | offsetState = digitalRead(offsetPin); // button for new tara (offset)
|
83 |
|
84 | if (offsetState == LOW)
|
85 | {
|
86 | offset = scale.read(); // Einlesen eines Rohwerts zur Ermittlung des offsets
|
87 | }
|
88 |
|
89 | delay(20);
|
90 | }
|
91 |
|
92 | Kraft_alt = 0.0;
|
93 |
|
94 | myGLCD.clrScr();
|
95 |
|
96 | myGLCD.setColor(255, 255, 0);
|
97 | myGLCD.fillRect(0, 0, 479, 13);
|
98 | myGLCD.setColor(0, 0, 0);
|
99 | myGLCD.setBackColor(255, 255, 0);
|
100 | myGLCD.print("Newtonmeter - stoppi", CENTER, 1);
|
101 |
|
102 | // Zeichnen der beiden Achsen
|
103 |
|
104 | myGLCD.setColor(255, 255, 255);
|
105 | myGLCD.drawLine(50,290,430,290);
|
106 | myGLCD.drawLine(50,20,50,290);
|
107 |
|
108 | myGLCD.setColor(255, 255, 255);
|
109 | myGLCD.setBackColor(0, 0, 0);
|
110 | myGLCD.print("F[N]", 5, 18);
|
111 | myGLCD.setColor(255, 255, 255);
|
112 | myGLCD.setBackColor(0, 0, 0);
|
113 | myGLCD.print("t[sec]", 420, 300);
|
114 |
|
115 | myGLCD.setColor(255, 255, 255);
|
116 | myGLCD.drawLine(45,290,50,290);
|
117 | myGLCD.drawLine(45,240,50,240);
|
118 | myGLCD.drawLine(45,190,50,190);
|
119 | myGLCD.drawLine(45,140,50,140);
|
120 | myGLCD.drawLine(45,90,50,90);
|
121 | myGLCD.drawLine(45,40,50,40);
|
122 |
|
123 | myGLCD.drawLine(50,290,50,295);
|
124 | myGLCD.drawLine(100,290,100,295);
|
125 | myGLCD.drawLine(150,290,150,295);
|
126 | myGLCD.drawLine(200,290,200,295);
|
127 | myGLCD.drawLine(250,290,250,295);
|
128 | myGLCD.drawLine(300,290,300,295);
|
129 | myGLCD.drawLine(350,290,350,295);
|
130 | myGLCD.drawLine(400,290,400,295);
|
131 |
|
132 | myGLCD.setColor(255, 255, 255);
|
133 | myGLCD.setBackColor(0, 0, 0);
|
134 | myGLCD.printNumI(0,30,285);
|
135 | myGLCD.printNumI(2,30,235);
|
136 | myGLCD.printNumI(4,30,185);
|
137 | myGLCD.printNumI(6,30,135);
|
138 | myGLCD.printNumI(8,30,85);
|
139 | myGLCD.printNumI(10,25,35);
|
140 |
|
141 | myGLCD.printNumI(0,48,300);
|
142 | myGLCD.printNumI(4,98,300);
|
143 | myGLCD.printNumI(8,148,300);
|
144 | myGLCD.printNumI(12,194,300);
|
145 | myGLCD.printNumI(16,244,300);
|
146 | myGLCD.printNumI(20,294,300);
|
147 | myGLCD.printNumI(24,344,300);
|
148 | myGLCD.printNumI(28,394,300);
|
149 |
|
150 |
|
151 | // graues Gitternetz zeichnen
|
152 |
|
153 | myGLCD.setColor(120, 120, 120);
|
154 | myGLCD.drawLine(51,265,430,265);
|
155 | myGLCD.drawLine(51,240,430,240);
|
156 | myGLCD.drawLine(51,215,430,215);
|
157 | myGLCD.drawLine(51,190,430,190);
|
158 | myGLCD.drawLine(51,165,430,165);
|
159 | myGLCD.drawLine(51,140,430,140);
|
160 | myGLCD.drawLine(51,115,430,115);
|
161 | myGLCD.drawLine(51,90,430,90);
|
162 | myGLCD.drawLine(51,65,430,65);
|
163 | myGLCD.drawLine(51,40,430,40);
|
164 |
|
165 | myGLCD.drawLine(100,40,100,289);
|
166 | myGLCD.drawLine(150,40,150,289);
|
167 | myGLCD.drawLine(200,40,200,289);
|
168 | myGLCD.drawLine(250,40,250,289);
|
169 | myGLCD.drawLine(300,40,300,289);
|
170 | myGLCD.drawLine(350,40,350,289);
|
171 | myGLCD.drawLine(400,40,400,289);
|
172 |
|
173 |
|
174 | myGLCD.setColor(0, 255, 0);
|
175 |
|
176 | for(i = 1; i <= 380; i++)
|
177 | {
|
178 | offsetState = digitalRead(offsetPin); // button for new tara (offset)
|
179 |
|
180 | if (offsetState == LOW)
|
181 | {
|
182 | offset = scale.read(); // Einlesen eines Rohwerts zur Ermittlung des offsets
|
183 | }
|
184 |
|
185 |
|
186 | //Rohwert = scale.read_average(2); // Einlesen der gemittelten Rohwerten
|
187 | Rohwert = scale.read(); // Einlesen eines Rohwerts
|
188 |
|
189 | Kraft_neu = (Rohwert - offset) / Scale; // Berechnung der Kraft in Newton
|
190 |
|
191 | //Serial.println(Rohwert);
|
192 |
|
193 | myGLCD.print(" ", 70, 18);
|
194 | myGLCD.printNumF(Kraft_neu, 2, 70, 18);
|
195 |
|
196 | if(Kraft_neu >= 0 && Kraft_neu <= 10)
|
197 | {
|
198 | //myGLCD.drawPixel(50 + i, 290 - Kraft * 25);
|
199 | myGLCD.drawLine(50 + (i - 1),290 - Kraft_alt * 25,50 + i,290 - Kraft_neu * 25);
|
200 |
|
201 | Kraft_alt = Kraft_neu;
|
202 | }
|
203 |
|
204 | }
|
205 |
|
206 | }
|