Jack Hansdampf / Mbed OS ZustandGetreidetrocknungStufe1oesung

Dependencies:   LCD_i2c_GSOE

Committer:
jack1930
Date:
Thu Jun 03 15:28:49 2021 +0000
Revision:
1:83cf28b993af
Parent:
0:1f9f0461419d
Stufe 1 Loesung

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 0:1f9f0461419d 12 PortOut zustand(PortC,0b1111);
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 0:1f9f0461419d 24
jack1930 0:1f9f0461419d 25 void melden(const char* txt)
jack1930 0:1f9f0461419d 26 {
jack1930 0:1f9f0461419d 27 mylcd.clear();
jack1930 0:1f9f0461419d 28 mylcd.cursorpos(0);
jack1930 0:1f9f0461419d 29 mylcd.printf("%s",txt);
jack1930 0:1f9f0461419d 30 }
jack1930 0:1f9f0461419d 31
jack1930 0:1f9f0461419d 32 void trocknenEin()
jack1930 0:1f9f0461419d 33 {
jack1930 0:1f9f0461419d 34 if (zustand==Aus)
jack1930 0:1f9f0461419d 35 {
jack1930 0:1f9f0461419d 36 zustand=Anlaufen;
jack1930 0:1f9f0461419d 37 melden("Anlauf");
jack1930 0:1f9f0461419d 38 }
jack1930 0:1f9f0461419d 39 }
jack1930 0:1f9f0461419d 40
jack1930 0:1f9f0461419d 41 void trocknenAus()
jack1930 0:1f9f0461419d 42 {
jack1930 0:1f9f0461419d 43 if (zustand==Betrieb)
jack1930 0:1f9f0461419d 44 {
jack1930 0:1f9f0461419d 45 zustand=Abschalten;
jack1930 0:1f9f0461419d 46 melden("Abschalten");
jack1930 0:1f9f0461419d 47 }
jack1930 0:1f9f0461419d 48 }
jack1930 0:1f9f0461419d 49
jack1930 0:1f9f0461419d 50 void init()
jack1930 0:1f9f0461419d 51 {
jack1930 0:1f9f0461419d 52 TrocknenEin.mode(PullDown);
jack1930 0:1f9f0461419d 53 TrocknenAus.mode(PullDown);
jack1930 0:1f9f0461419d 54 Lichtschranke.mode(PullDown);
jack1930 0:1f9f0461419d 55
jack1930 0:1f9f0461419d 56 TrocknenEin.rise(&trocknenEin);
jack1930 0:1f9f0461419d 57 TrocknenAus.rise(&trocknenAus);
jack1930 0:1f9f0461419d 58
jack1930 0:1f9f0461419d 59 zustand=Aus;
jack1930 0:1f9f0461419d 60 }
jack1930 0:1f9f0461419d 61
jack1930 0:1f9f0461419d 62 int main()
jack1930 0:1f9f0461419d 63 {
jack1930 0:1f9f0461419d 64 init();
jack1930 0:1f9f0461419d 65 melden("bereit");
jack1930 0:1f9f0461419d 66
jack1930 0:1f9f0461419d 67 while (true) {
jack1930 0:1f9f0461419d 68 switch(zustand)
jack1930 0:1f9f0461419d 69 {
jack1930 0:1f9f0461419d 70 case Anlaufen:
jack1930 0:1f9f0461419d 71 if (Lichtschranke==1)
jack1930 0:1f9f0461419d 72 {
jack1930 0:1f9f0461419d 73 zustand=Betrieb;
jack1930 0:1f9f0461419d 74 melden("Betrieb");
jack1930 0:1f9f0461419d 75 }
jack1930 0:1f9f0461419d 76 break;
jack1930 0:1f9f0461419d 77 case Abschalten:
jack1930 0:1f9f0461419d 78 if (Lichtschranke==0)
jack1930 0:1f9f0461419d 79 {
jack1930 0:1f9f0461419d 80 zustand=Aus;
jack1930 0:1f9f0461419d 81 melden("bereit");
jack1930 0:1f9f0461419d 82 }
jack1930 0:1f9f0461419d 83 break;
jack1930 0:1f9f0461419d 84 }
jack1930 0:1f9f0461419d 85
jack1930 0:1f9f0461419d 86 HAL_Delay(zeit);
jack1930 0:1f9f0461419d 87 }
jack1930 0:1f9f0461419d 88 }