Jack Hansdampf / Mbed OS ZustandGetreidetrocknungStufe2Loesung

Dependencies:   LCD_i2c_GSOE

Committer:
jack1930
Date:
Thu Jun 03 16:26:49 2021 +0000
Revision:
2:f7beca47603f
Parent:
1:83cf28b993af
Getreidetrocknung mit Haltfunktion

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 0:1f9f0461419d 19 //Zustandsdefinitionen
jack1930 0:1f9f0461419d 20 #define Aus 0b0000
jack1930 0:1f9f0461419d 21 #define Anlaufen 0b1110
jack1930 0:1f9f0461419d 22 #define Betrieb 0b1111
jack1930 0:1f9f0461419d 23 #define Abschalten 0b0111
jack1930 2:f7beca47603f 24 #define HaltAnlaufen 0b010000
jack1930 2:f7beca47603f 25 #define HaltBetrieb 0b100000
jack1930 2:f7beca47603f 26 #define HaltAbschalten 0b110000
jack1930 2:f7beca47603f 27
jack1930 2:f7beca47603f 28
jack1930 0:1f9f0461419d 29
jack1930 0:1f9f0461419d 30 void melden(const char* txt)
jack1930 0:1f9f0461419d 31 {
jack1930 0:1f9f0461419d 32 mylcd.clear();
jack1930 0:1f9f0461419d 33 mylcd.cursorpos(0);
jack1930 0:1f9f0461419d 34 mylcd.printf("%s",txt);
jack1930 0:1f9f0461419d 35 }
jack1930 0:1f9f0461419d 36
jack1930 0:1f9f0461419d 37 void trocknenEin()
jack1930 0:1f9f0461419d 38 {
jack1930 0:1f9f0461419d 39 if (zustand==Aus)
jack1930 0:1f9f0461419d 40 {
jack1930 0:1f9f0461419d 41 zustand=Anlaufen;
jack1930 0:1f9f0461419d 42 melden("Anlauf");
jack1930 0:1f9f0461419d 43 }
jack1930 0:1f9f0461419d 44 }
jack1930 0:1f9f0461419d 45
jack1930 0:1f9f0461419d 46 void trocknenAus()
jack1930 0:1f9f0461419d 47 {
jack1930 0:1f9f0461419d 48 if (zustand==Betrieb)
jack1930 0:1f9f0461419d 49 {
jack1930 0:1f9f0461419d 50 zustand=Abschalten;
jack1930 0:1f9f0461419d 51 melden("Abschalten");
jack1930 0:1f9f0461419d 52 }
jack1930 0:1f9f0461419d 53 }
jack1930 0:1f9f0461419d 54
jack1930 2:f7beca47603f 55 InterruptIn HALT(PB_4);
jack1930 2:f7beca47603f 56 void halt(){
jack1930 2:f7beca47603f 57 switch (zustand)
jack1930 2:f7beca47603f 58 {
jack1930 2:f7beca47603f 59 case Anlaufen: zustand=HaltAnlaufen; melden("Halt"); break;
jack1930 2:f7beca47603f 60 case Betrieb: zustand=HaltBetrieb; melden("Halt"); break;
jack1930 2:f7beca47603f 61 case Abschalten: zustand=HaltAbschalten; melden("Halt"); break;
jack1930 2:f7beca47603f 62 }
jack1930 2:f7beca47603f 63
jack1930 2:f7beca47603f 64
jack1930 2:f7beca47603f 65 }
jack1930 0:1f9f0461419d 66 void init()
jack1930 0:1f9f0461419d 67 {
jack1930 2:f7beca47603f 68 HALT.mode(PullDown);
jack1930 2:f7beca47603f 69 HALT.rise(&halt);
jack1930 0:1f9f0461419d 70 TrocknenEin.mode(PullDown);
jack1930 0:1f9f0461419d 71 TrocknenAus.mode(PullDown);
jack1930 0:1f9f0461419d 72 Lichtschranke.mode(PullDown);
jack1930 0:1f9f0461419d 73
jack1930 0:1f9f0461419d 74 TrocknenEin.rise(&trocknenEin);
jack1930 0:1f9f0461419d 75 TrocknenAus.rise(&trocknenAus);
jack1930 0:1f9f0461419d 76
jack1930 0:1f9f0461419d 77 zustand=Aus;
jack1930 0:1f9f0461419d 78 }
jack1930 0:1f9f0461419d 79
jack1930 0:1f9f0461419d 80 int main()
jack1930 0:1f9f0461419d 81 {
jack1930 0:1f9f0461419d 82 init();
jack1930 0:1f9f0461419d 83 melden("bereit");
jack1930 0:1f9f0461419d 84
jack1930 0:1f9f0461419d 85 while (true) {
jack1930 0:1f9f0461419d 86 switch(zustand)
jack1930 0:1f9f0461419d 87 {
jack1930 0:1f9f0461419d 88 case Anlaufen:
jack1930 0:1f9f0461419d 89 if (Lichtschranke==1)
jack1930 0:1f9f0461419d 90 {
jack1930 0:1f9f0461419d 91 zustand=Betrieb;
jack1930 0:1f9f0461419d 92 melden("Betrieb");
jack1930 0:1f9f0461419d 93 }
jack1930 0:1f9f0461419d 94 break;
jack1930 0:1f9f0461419d 95 case Abschalten:
jack1930 0:1f9f0461419d 96 if (Lichtschranke==0)
jack1930 0:1f9f0461419d 97 {
jack1930 0:1f9f0461419d 98 zustand=Aus;
jack1930 0:1f9f0461419d 99 melden("bereit");
jack1930 0:1f9f0461419d 100 }
jack1930 0:1f9f0461419d 101 break;
jack1930 2:f7beca47603f 102 case HaltAnlaufen:
jack1930 2:f7beca47603f 103 if (HALT==0){
jack1930 2:f7beca47603f 104 zustand=Anlaufen;
jack1930 2:f7beca47603f 105 melden("Anlaufen");
jack1930 2:f7beca47603f 106 }
jack1930 2:f7beca47603f 107 break;
jack1930 2:f7beca47603f 108 case HaltBetrieb:
jack1930 2:f7beca47603f 109 if (HALT==0){
jack1930 2:f7beca47603f 110 zustand=Betrieb;
jack1930 2:f7beca47603f 111 melden("Betrieb");
jack1930 2:f7beca47603f 112 }
jack1930 2:f7beca47603f 113 break;
jack1930 2:f7beca47603f 114 case HaltAbschalten:
jack1930 2:f7beca47603f 115 if (HALT==0){
jack1930 2:f7beca47603f 116 zustand=Abschalten;
jack1930 2:f7beca47603f 117 melden("Abschalten");
jack1930 2:f7beca47603f 118 }
jack1930 2:f7beca47603f 119 break;
jack1930 0:1f9f0461419d 120 }
jack1930 0:1f9f0461419d 121
jack1930 0:1f9f0461419d 122 HAL_Delay(zeit);
jack1930 0:1f9f0461419d 123 }
jack1930 0:1f9f0461419d 124 }