Martin Werluschnig
/
TINF_MittelwerteUeberwachung
TINF_MittelwerteUeberwachung
main.cpp
- Committer:
- martwerl
- Date:
- 2018-11-15
- Revision:
- 0:fb8791842ef8
File content as of revision 0:fb8791842ef8:
// Beispiel Mittelwerte // Peter Beck - 16.04.2018 #include "mbed.h" #include "C12832.h" C12832 lcd(p5, p7, p6, p8, p11); AnalogIn aiPoti1(p19); DigitalIn diDown(p12); DigitalIn diUp(p15); InterruptIn iiDown(p12); InterruptIn iiUp(p15); //AnalogIn aiPoti2(p20); Timeout BlinkTimeoutTmr; Ticker toreadPoti1; float poti1Wert; float poti1Durchschnitt; float poti1Array[10]; int slot = 0; int mode = 0; //Messmodus BusOut doLeds(LED1,LED2,LED3,LED4); // functions void BlinkTimeout() { doLeds = 0; } void readPoti1() { // Poti-Wert auslesen poti1Wert = 3.3 * aiPoti1.read(); poti1Array[slot] = poti1Wert; slot++; if (slot>9) slot = 0; // Ausgabe: poti1Durchschnitt = 0; for (int i=0; i<10; i++) { poti1Durchschnitt += poti1Array[slot]; } poti1Durchschnitt /= 10; lcd.locate(0,0); lcd.printf("Spannung aktuell = %5.3f V", poti1Wert); // Schreibe.. lcd.locate(0,10); // Setze Cursor auf X=0, Y=10 lcd.printf("Spannung gerundet = %5.3f V", poti1Durchschnitt); // Schreibe.. lcd.fillrect(0, 20, (int)(poti1Wert*128/3.3), 24, 1); // Schreibe Block mit X=0,Y=20, X2=(errechnet), Y2=28 in der Farbe 1 lcd.fillrect(0, 25, (int)(poti1Durchschnitt*128/3.3), 28, 1); // Schreibe Block mit X=0,Y=20, X2=(errechnet), Y2=28 in der Farbe 1 lcd.fillrect((int)(poti1Durchschnitt*128/3.3), 20, 128, 28, 0); // Schreibe eine weissen Block auf der restlichen Fläche in der Farbe 1 lcd.copy_to_lcd(); } int main() { lcd.cls(); // löscht lcd (clear screen) lcd.locate(0,10); // Setze Cursor auf X=0, Y=10 lcd.printf("Willkommen!"); lcd.copy_to_lcd(); wait_ms(300); // Erstellung von 2 Arrays für die gleitende Mittelwertbildung // 2 Hz mit Ticker realisieren lcd.cls(); // löscht lcd (clear screen) lcd.locate(0,0); // x-position, y-position (x: 0-128; y: 0-32) lcd.printf("Werte von Poti 1 und 2:"); toreadPoti1.attach(&readPoti1, 0.5); while(1) { } }