User manual

83 84
10.5 Das OLED Display mit A/D-Umsetzer als Voltmeter
Früher hatten wir ja schon die 7-Segment-Anzeigen zur Anzeige verwendet, nun kann man das Display auch
komfortabler gestalten. Hier wird der Wert in mV ausgegeben.
Dazu wird zunächst der A/D-Umsetzer A0 verwendet und dann der Wert vom Bereich 0..1023 auf 0..5V umge-
rechnet. Dazu wird die Formel verwendet:
double mverg = (double)poti * 5000.0 / 1023.0;
Der Wert 5000.0 kann auch angepasst werden, wenn man eine genauere Ausgabe sehen möchte. Dazu muss
man eine denierte Spannungsquelle verwenden oder ein genaues Voltmeter und die tatsächliche Spannung
berechnen. Den Korrekturwert multipliziert man dann mit 5000.0 und setzt den korrigierten Wert in die Formel
ein.
+
-
9V
1A
SCLS DA
+9V
A0
A1
Tx
Rx
PD2
SCLKMOSI
PD3
PD 6
PD 4
PD 5
PD 7
A7
A3
A2
A6
NANO
to
Br ick`R`
3,3V 5V
USB
B0
SS
MISC
B1
C
C OLED 64x48
SCL
SDA
SCL
SDA
+9V
Adr:8x,Xx
+9V
1N41481N4148
// DE_29 OLED Beispiele - AD Voltmeter
#include <Wire.h>
#include <avr/pgmspace.h>
// Hier ggf Adresse anpassen 78 oder 7A je nach Schalter
#dene i2coledssd (0x7A>>1) // default ist 7A
// -------------------------OLED ----------------------------------------------
...
// -------------------------END OLED ----------------------------------------------
void setup() {
Wire.begin(); // I2C Initialisierung
i2c_oled_initall(i2coledssd); // OLED Initialisierun
}
void loop() { // Schleife
// 64x48 Pixel OLED
int poti = analogRead(A0); // Einlesen A/D-Umsetzer
char buffer[40]; // Buffer zur Umrechnung in ASCII
disp_buffer_clear(COLOR_BLACK); // Virtuellen Buffer loeschen
double mverg = (double)poti * 5000.0 / 1023.0; // ggf Korrekturfaktor.
int mvint = (int) mverg; // Umrechnen in Integer zur Anzaige
sprintf(buffer,“%4d mV“,mvint); // Ausgabe in mV als ASCII
disp_print_xy_lcd(10, 20, (unsigned char *)buffer, COLOR_WHITE, 0);
disp_lcd_frombuffer(); // dann ausgeben
delay(10); // Damit das Update nicht zu schnell wird.
}
Was passiert? Der gemessene Spannungswert wird auf dem Bildschirm in mV ausgegeben. Wenn
man an dem Poti dreht, kann man einen Bereich von ca. 0 mV bis maximal 5000mV überdecken.
Dabei wird dann die Hälfte der Betriebsspanung als Maximalwert angezeigt, also normalerweise ca.
4500 mV.