Christian Weiß / Grenzwert_copy

Dependencies:   mbed

Committer:
Wizo
Date:
Thu Nov 15 17:57:59 2018 +0000
Revision:
0:e0011dded132
Grenzwert_copy

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Wizo 0:e0011dded132 1 // Beispiel GRENZWERTE
Wizo 0:e0011dded132 2 // Peter Beck - 16.04.2018
Wizo 0:e0011dded132 3
Wizo 0:e0011dded132 4 #include "mbed.h"
Wizo 0:e0011dded132 5 #include "C12832.h"
Wizo 0:e0011dded132 6
Wizo 0:e0011dded132 7 // -----------------------------------------------------------------------------
Wizo 0:e0011dded132 8 // -----------------------------------------------------------------------------
Wizo 0:e0011dded132 9 // RGBLED-Klasse
Wizo 0:e0011dded132 10
Wizo 0:e0011dded132 11 class RGBLed
Wizo 0:e0011dded132 12 {
Wizo 0:e0011dded132 13 public:
Wizo 0:e0011dded132 14 RGBLed(PinName redpin, PinName greenpin, PinName bluepin);
Wizo 0:e0011dded132 15 void write(float red,float green, float blue);
Wizo 0:e0011dded132 16 private:
Wizo 0:e0011dded132 17 PwmOut _redpin;
Wizo 0:e0011dded132 18 PwmOut _greenpin;
Wizo 0:e0011dded132 19 PwmOut _bluepin;
Wizo 0:e0011dded132 20 };
Wizo 0:e0011dded132 21
Wizo 0:e0011dded132 22 RGBLed::RGBLed (PinName redpin, PinName greenpin, PinName bluepin)
Wizo 0:e0011dded132 23 : _redpin(redpin), _greenpin(greenpin), _bluepin(bluepin)
Wizo 0:e0011dded132 24 {
Wizo 0:e0011dded132 25 //50Hz PWM clock default a bit too low, go to 2000Hz (less flicker)
Wizo 0:e0011dded132 26 _redpin.period(0.0005);
Wizo 0:e0011dded132 27 }
Wizo 0:e0011dded132 28
Wizo 0:e0011dded132 29 void RGBLed::write(float red,float green, float blue)
Wizo 0:e0011dded132 30 {
Wizo 0:e0011dded132 31 _redpin = red;
Wizo 0:e0011dded132 32 _greenpin = green;
Wizo 0:e0011dded132 33 _bluepin = blue;
Wizo 0:e0011dded132 34 }
Wizo 0:e0011dded132 35
Wizo 0:e0011dded132 36 //Setup RGB led using PWM pins and class
Wizo 0:e0011dded132 37 RGBLed myRGBled(p23,p24,p25); //RGB PWM pins
Wizo 0:e0011dded132 38
Wizo 0:e0011dded132 39 // -----------------------------------------------------------------------------
Wizo 0:e0011dded132 40 // -----------------------------------------------------------------------------
Wizo 0:e0011dded132 41
Wizo 0:e0011dded132 42 C12832 lcd(p5, p7, p6, p8, p11);
Wizo 0:e0011dded132 43 AnalogIn aiPoti1(p19);
Wizo 0:e0011dded132 44 //AnalogIn aiPoti2(p20);
Wizo 0:e0011dded132 45
Wizo 0:e0011dded132 46
Wizo 0:e0011dded132 47 DigitalIn diDown(p12);
Wizo 0:e0011dded132 48 DigitalIn diUp(p15);
Wizo 0:e0011dded132 49 InterruptIn iiDown(p12);
Wizo 0:e0011dded132 50 InterruptIn iiUp(p15);
Wizo 0:e0011dded132 51
Wizo 0:e0011dded132 52 Timeout BlinkTimeoutTmr;
Wizo 0:e0011dded132 53 Timeout ClearMSGtimeout;
Wizo 0:e0011dded132 54 Ticker toreadPoti1;
Wizo 0:e0011dded132 55
Wizo 0:e0011dded132 56
Wizo 0:e0011dded132 57 int mode = 0; //Messmodus
Wizo 0:e0011dded132 58 BusOut doLeds(LED1,LED2,LED3,LED4);
Wizo 0:e0011dded132 59
Wizo 0:e0011dded132 60 int poti1Wert;
Wizo 0:e0011dded132 61 int Warngrenze = 800;
Wizo 0:e0011dded132 62 int Alarmgrenze = 950;
Wizo 0:e0011dded132 63
Wizo 0:e0011dded132 64 // -----------------------------------------------------------------------------
Wizo 0:e0011dded132 65
Wizo 0:e0011dded132 66 void BlinkTimeout()
Wizo 0:e0011dded132 67 {
Wizo 0:e0011dded132 68 doLeds = 0;
Wizo 0:e0011dded132 69 }
Wizo 0:e0011dded132 70
Wizo 0:e0011dded132 71
Wizo 0:e0011dded132 72 void ClearMSG()
Wizo 0:e0011dded132 73 {
Wizo 0:e0011dded132 74 // Leere die mittlere Zeile und schreibe den Standardtext weider aud den Sceen..
Wizo 0:e0011dded132 75 lcd.locate(0,10);
Wizo 0:e0011dded132 76 lcd.fillrect(0, 10, 128, 20, 0);
Wizo 0:e0011dded132 77 lcd.locate(0,10); // Setze Cursor auf X=0, Y=10
Wizo 0:e0011dded132 78 lcd.printf("W=%d A=%d",Warngrenze, Alarmgrenze);
Wizo 0:e0011dded132 79 lcd.copy_to_lcd();
Wizo 0:e0011dded132 80 }
Wizo 0:e0011dded132 81
Wizo 0:e0011dded132 82
Wizo 0:e0011dded132 83
Wizo 0:e0011dded132 84 void readPoti1()
Wizo 0:e0011dded132 85 {
Wizo 0:e0011dded132 86 // Poti-Wert auslesen
Wizo 0:e0011dded132 87 poti1Wert = (int)(1023 * aiPoti1.read()); // Wert soll von 0-1023 gehen anstatt von 0-1
Wizo 0:e0011dded132 88
Wizo 0:e0011dded132 89 lcd.locate(0,0);
Wizo 0:e0011dded132 90 lcd.printf("%5.3f V / %d", ((float)(poti1Wert))*3.3/1023, poti1Wert); // Schreibe..
Wizo 0:e0011dded132 91 lcd.copy_to_lcd();
Wizo 0:e0011dded132 92
Wizo 0:e0011dded132 93
Wizo 0:e0011dded132 94
Wizo 0:e0011dded132 95 if (mode > 0) { // nur aktiv wenn nicht auf Standby
Wizo 0:e0011dded132 96
Wizo 0:e0011dded132 97 if (poti1Wert >= Warngrenze && mode != 3) {
Wizo 0:e0011dded132 98 mode=2; // Warnmodus
Wizo 0:e0011dded132 99 myRGBled.write(0,0,1.0); //yellow
Wizo 0:e0011dded132 100
Wizo 0:e0011dded132 101 lcd.cls();
Wizo 0:e0011dded132 102 lcd.locate(0,10);
Wizo 0:e0011dded132 103 lcd.printf("Warnung!");
Wizo 0:e0011dded132 104 lcd.copy_to_lcd();
Wizo 0:e0011dded132 105 ClearMSGtimeout.attach(&ClearMSG,3);
Wizo 0:e0011dded132 106
Wizo 0:e0011dded132 107 }
Wizo 0:e0011dded132 108
Wizo 0:e0011dded132 109 if (poti1Wert < Warngrenze && mode != 3) {
Wizo 0:e0011dded132 110 mode=1;
Wizo 0:e0011dded132 111 myRGBled.write(1,0,1); //green
Wizo 0:e0011dded132 112
Wizo 0:e0011dded132 113 }
Wizo 0:e0011dded132 114 if (poti1Wert >= Alarmgrenze) {
Wizo 0:e0011dded132 115 mode=3; // Alarmmodus
Wizo 0:e0011dded132 116 myRGBled.write(0,1,1); //red
Wizo 0:e0011dded132 117
Wizo 0:e0011dded132 118 lcd.cls();
Wizo 0:e0011dded132 119 lcd.locate(0,10);
Wizo 0:e0011dded132 120 lcd.printf("ALARM!!!!");
Wizo 0:e0011dded132 121 lcd.copy_to_lcd();
Wizo 0:e0011dded132 122 ClearMSGtimeout.attach(&ClearMSG,3);
Wizo 0:e0011dded132 123
Wizo 0:e0011dded132 124
Wizo 0:e0011dded132 125
Wizo 0:e0011dded132 126 }
Wizo 0:e0011dded132 127
Wizo 0:e0011dded132 128
Wizo 0:e0011dded132 129 }
Wizo 0:e0011dded132 130
Wizo 0:e0011dded132 131
Wizo 0:e0011dded132 132 }
Wizo 0:e0011dded132 133
Wizo 0:e0011dded132 134 void swUp()
Wizo 0:e0011dded132 135 {
Wizo 0:e0011dded132 136 // Starte Messung
Wizo 0:e0011dded132 137 mode = 1;
Wizo 0:e0011dded132 138 myRGBled.write(1,0,1); //green
Wizo 0:e0011dded132 139
Wizo 0:e0011dded132 140 lcd.cls();
Wizo 0:e0011dded132 141 lcd.locate(0,0);
Wizo 0:e0011dded132 142 lcd.printf("Mess. gestartet");
Wizo 0:e0011dded132 143 lcd.copy_to_lcd();
Wizo 0:e0011dded132 144 }
Wizo 0:e0011dded132 145 void swDown()
Wizo 0:e0011dded132 146 {
Wizo 0:e0011dded132 147 // Beende Messung
Wizo 0:e0011dded132 148 mode = 0;
Wizo 0:e0011dded132 149 myRGBled.write(1,1,1); //off
Wizo 0:e0011dded132 150 lcd.cls(); // löscht lcd (clear screen)
Wizo 0:e0011dded132 151 lcd.locate(0,10); // Setze Cursor auf X=0, Y=10
Wizo 0:e0011dded132 152 lcd.printf("W=%d A=%d",Warngrenze, Alarmgrenze );
Wizo 0:e0011dded132 153 lcd.copy_to_lcd();
Wizo 0:e0011dded132 154 wait_ms(400);
Wizo 0:e0011dded132 155
Wizo 0:e0011dded132 156 }
Wizo 0:e0011dded132 157
Wizo 0:e0011dded132 158 int main()
Wizo 0:e0011dded132 159 {
Wizo 0:e0011dded132 160
Wizo 0:e0011dded132 161 myRGBled.write(1,1,1); //RGB-LED leeren
Wizo 0:e0011dded132 162
Wizo 0:e0011dded132 163 lcd.cls(); // löscht lcd (clear screen)
Wizo 0:e0011dded132 164 lcd.locate(0,10); // Setze Cursor auf X=0, Y=10
Wizo 0:e0011dded132 165 lcd.printf("Willkommen!");
Wizo 0:e0011dded132 166 lcd.copy_to_lcd();
Wizo 0:e0011dded132 167 wait_ms(500);
Wizo 0:e0011dded132 168
Wizo 0:e0011dded132 169 //myRGBled.write(0,1,1); //red
Wizo 0:e0011dded132 170 //wait(0.3);
Wizo 0:e0011dded132 171 //myRGBled.write(1,0,1); //green
Wizo 0:e0011dded132 172 //wait(0.3);
Wizo 0:e0011dded132 173 //myRGBled.write(1,1,0); //blue
Wizo 0:e0011dded132 174 //wait(0.3);
Wizo 0:e0011dded132 175
Wizo 0:e0011dded132 176
Wizo 0:e0011dded132 177 swDown(); // Rest and goto HOME
Wizo 0:e0011dded132 178 toreadPoti1.attach(&readPoti1, 0.5);
Wizo 0:e0011dded132 179
Wizo 0:e0011dded132 180 iiDown.rise(&swDown);
Wizo 0:e0011dded132 181 iiUp.rise(&swUp);
Wizo 0:e0011dded132 182
Wizo 0:e0011dded132 183 while(1) {
Wizo 0:e0011dded132 184
Wizo 0:e0011dded132 185 }
Wizo 0:e0011dded132 186
Wizo 0:e0011dded132 187 }