Jack Hansdampf / Mbed OS ZustandGetreidetrocknungStufe3Loesung

Dependencies:   LCD_i2c_GSOE

Committer:
jack1930
Date:
Thu Jun 03 16:58:45 2021 +0000
Revision:
3:138c53fedf4e
Parent:
2:f7beca47603f
Child:
4:5d2c270135ef
Getreidetrocknung mit Luefterueberwachung Stufe 2 geloest

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jack1930 0:1f9f0461419d 1 /* mbed Microcontroller Library
jack1930 0:1f9f0461419d 2 * Copyright (c) 2019 ARM Limited
jack1930 0:1f9f0461419d 3 * SPDX-License-Identifier: Apache-2.0
jack1930 0:1f9f0461419d 4 */
jack1930 0:1f9f0461419d 5
jack1930 0:1f9f0461419d 6 #include "mbed.h"
jack1930 0:1f9f0461419d 7 #include "LCD.h"
jack1930 0:1f9f0461419d 8
jack1930 0:1f9f0461419d 9 lcd mylcd;
jack1930 1:83cf28b993af 10 int zeit= 100; //Zeit in ms
jack1930 0:1f9f0461419d 11
jack1930 2:f7beca47603f 12 PortOut zustand(PortC,0b111111);
jack1930 0:1f9f0461419d 13 DigitalOut warnlampe(PC_7);
jack1930 0:1f9f0461419d 14
jack1930 0:1f9f0461419d 15 InterruptIn TrocknenEin(PA_10);
jack1930 0:1f9f0461419d 16 InterruptIn TrocknenAus(PA_6);
jack1930 0:1f9f0461419d 17 DigitalIn Lichtschranke(PB_0);
jack1930 0:1f9f0461419d 18
jack1930 3:138c53fedf4e 19
jack1930 0:1f9f0461419d 20 //Zustandsdefinitionen
jack1930 0:1f9f0461419d 21 #define Aus 0b0000
jack1930 0:1f9f0461419d 22 #define Anlaufen 0b1110
jack1930 0:1f9f0461419d 23 #define Betrieb 0b1111
jack1930 0:1f9f0461419d 24 #define Abschalten 0b0111
jack1930 2:f7beca47603f 25 #define HaltAnlaufen 0b010000
jack1930 2:f7beca47603f 26 #define HaltBetrieb 0b100000
jack1930 2:f7beca47603f 27 #define HaltAbschalten 0b110000
jack1930 2:f7beca47603f 28
jack1930 2:f7beca47603f 29
jack1930 0:1f9f0461419d 30
jack1930 3:138c53fedf4e 31
jack1930 0:1f9f0461419d 32 void melden(const char* txt)
jack1930 0:1f9f0461419d 33 {
jack1930 0:1f9f0461419d 34 mylcd.clear();
jack1930 0:1f9f0461419d 35 mylcd.cursorpos(0);
jack1930 0:1f9f0461419d 36 mylcd.printf("%s",txt);
jack1930 0:1f9f0461419d 37 }
jack1930 0:1f9f0461419d 38
jack1930 0:1f9f0461419d 39 void trocknenEin()
jack1930 0:1f9f0461419d 40 {
jack1930 0:1f9f0461419d 41 if (zustand==Aus)
jack1930 0:1f9f0461419d 42 {
jack1930 0:1f9f0461419d 43 zustand=Anlaufen;
jack1930 0:1f9f0461419d 44 melden("Anlauf");
jack1930 0:1f9f0461419d 45 }
jack1930 0:1f9f0461419d 46 }
jack1930 0:1f9f0461419d 47
jack1930 0:1f9f0461419d 48 void trocknenAus()
jack1930 0:1f9f0461419d 49 {
jack1930 0:1f9f0461419d 50 if (zustand==Betrieb)
jack1930 0:1f9f0461419d 51 {
jack1930 3:138c53fedf4e 52 warnlampe=0;
jack1930 0:1f9f0461419d 53 zustand=Abschalten;
jack1930 0:1f9f0461419d 54 melden("Abschalten");
jack1930 0:1f9f0461419d 55 }
jack1930 0:1f9f0461419d 56 }
jack1930 0:1f9f0461419d 57
jack1930 2:f7beca47603f 58 InterruptIn HALT(PB_4);
jack1930 2:f7beca47603f 59 void halt(){
jack1930 2:f7beca47603f 60 switch (zustand)
jack1930 2:f7beca47603f 61 {
jack1930 2:f7beca47603f 62 case Anlaufen: zustand=HaltAnlaufen; melden("Halt"); break;
jack1930 2:f7beca47603f 63 case Betrieb: zustand=HaltBetrieb; melden("Halt"); break;
jack1930 2:f7beca47603f 64 case Abschalten: zustand=HaltAbschalten; melden("Halt"); break;
jack1930 2:f7beca47603f 65 }
jack1930 2:f7beca47603f 66
jack1930 2:f7beca47603f 67
jack1930 2:f7beca47603f 68 }
jack1930 3:138c53fedf4e 69 int z=0;
jack1930 3:138c53fedf4e 70 void ueberwachen()
jack1930 3:138c53fedf4e 71 {
jack1930 3:138c53fedf4e 72 if (z>5) warnlampe=0;
jack1930 3:138c53fedf4e 73 else warnlampe=1;
jack1930 3:138c53fedf4e 74 z=0;
jack1930 3:138c53fedf4e 75 }
jack1930 3:138c53fedf4e 76 void luefter()
jack1930 3:138c53fedf4e 77 {
jack1930 3:138c53fedf4e 78 z++;
jack1930 3:138c53fedf4e 79 }
jack1930 3:138c53fedf4e 80 InterruptIn Luefter(PA_1);
jack1930 0:1f9f0461419d 81 void init()
jack1930 0:1f9f0461419d 82 {
jack1930 3:138c53fedf4e 83 Luefter.rise(&luefter);
jack1930 2:f7beca47603f 84 HALT.mode(PullDown);
jack1930 2:f7beca47603f 85 HALT.rise(&halt);
jack1930 0:1f9f0461419d 86 TrocknenEin.mode(PullDown);
jack1930 0:1f9f0461419d 87 TrocknenAus.mode(PullDown);
jack1930 0:1f9f0461419d 88 Lichtschranke.mode(PullDown);
jack1930 0:1f9f0461419d 89
jack1930 0:1f9f0461419d 90 TrocknenEin.rise(&trocknenEin);
jack1930 0:1f9f0461419d 91 TrocknenAus.rise(&trocknenAus);
jack1930 0:1f9f0461419d 92
jack1930 0:1f9f0461419d 93 zustand=Aus;
jack1930 0:1f9f0461419d 94 }
jack1930 0:1f9f0461419d 95
jack1930 3:138c53fedf4e 96
jack1930 3:138c53fedf4e 97
jack1930 0:1f9f0461419d 98 int main()
jack1930 0:1f9f0461419d 99 {
jack1930 0:1f9f0461419d 100 init();
jack1930 0:1f9f0461419d 101 melden("bereit");
jack1930 0:1f9f0461419d 102
jack1930 0:1f9f0461419d 103 while (true) {
jack1930 0:1f9f0461419d 104 switch(zustand)
jack1930 0:1f9f0461419d 105 {
jack1930 0:1f9f0461419d 106 case Anlaufen:
jack1930 0:1f9f0461419d 107 if (Lichtschranke==1)
jack1930 0:1f9f0461419d 108 {
jack1930 0:1f9f0461419d 109 zustand=Betrieb;
jack1930 0:1f9f0461419d 110 melden("Betrieb");
jack1930 0:1f9f0461419d 111 }
jack1930 0:1f9f0461419d 112 break;
jack1930 0:1f9f0461419d 113 case Abschalten:
jack1930 0:1f9f0461419d 114 if (Lichtschranke==0)
jack1930 0:1f9f0461419d 115 {
jack1930 0:1f9f0461419d 116 zustand=Aus;
jack1930 0:1f9f0461419d 117 melden("bereit");
jack1930 0:1f9f0461419d 118 }
jack1930 0:1f9f0461419d 119 break;
jack1930 2:f7beca47603f 120 case HaltAnlaufen:
jack1930 2:f7beca47603f 121 if (HALT==0){
jack1930 2:f7beca47603f 122 zustand=Anlaufen;
jack1930 2:f7beca47603f 123 melden("Anlaufen");
jack1930 2:f7beca47603f 124 }
jack1930 2:f7beca47603f 125 break;
jack1930 2:f7beca47603f 126 case HaltBetrieb:
jack1930 2:f7beca47603f 127 if (HALT==0){
jack1930 2:f7beca47603f 128 zustand=Betrieb;
jack1930 2:f7beca47603f 129 melden("Betrieb");
jack1930 2:f7beca47603f 130 }
jack1930 2:f7beca47603f 131 break;
jack1930 2:f7beca47603f 132 case HaltAbschalten:
jack1930 2:f7beca47603f 133 if (HALT==0){
jack1930 2:f7beca47603f 134 zustand=Abschalten;
jack1930 2:f7beca47603f 135 melden("Abschalten");
jack1930 2:f7beca47603f 136 }
jack1930 2:f7beca47603f 137 break;
jack1930 3:138c53fedf4e 138 case Betrieb: ueberwachen();
jack1930 3:138c53fedf4e 139 break;
jack1930 0:1f9f0461419d 140 }
jack1930 0:1f9f0461419d 141
jack1930 0:1f9f0461419d 142 HAL_Delay(zeit);
jack1930 0:1f9f0461419d 143 }
jack1930 0:1f9f0461419d 144 }