Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Grenzwert.cpp@0:e0011dded132, 2018-11-15 (annotated)
- Committer:
- Wizo
- Date:
- Thu Nov 15 17:57:59 2018 +0000
- Revision:
- 0:e0011dded132
Grenzwert_copy
Who changed what in which revision?
User | Revision | Line number | New 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 | } |