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.
main.cpp
- Committer:
- jack1930
- Date:
- 2021-06-03
- Revision:
- 3:138c53fedf4e
- Parent:
- 2:f7beca47603f
- Child:
- 4:5d2c270135ef
File content as of revision 3:138c53fedf4e:
/* mbed Microcontroller Library
* Copyright (c) 2019 ARM Limited
* SPDX-License-Identifier: Apache-2.0
*/
#include "mbed.h"
#include "LCD.h"
lcd mylcd;
int zeit= 100; //Zeit in ms
PortOut zustand(PortC,0b111111);
DigitalOut warnlampe(PC_7);
InterruptIn TrocknenEin(PA_10);
InterruptIn TrocknenAus(PA_6);
DigitalIn Lichtschranke(PB_0);
//Zustandsdefinitionen
#define Aus 0b0000
#define Anlaufen 0b1110
#define Betrieb 0b1111
#define Abschalten 0b0111
#define HaltAnlaufen 0b010000
#define HaltBetrieb 0b100000
#define HaltAbschalten 0b110000
void melden(const char* txt)
{
mylcd.clear();
mylcd.cursorpos(0);
mylcd.printf("%s",txt);
}
void trocknenEin()
{
if (zustand==Aus)
{
zustand=Anlaufen;
melden("Anlauf");
}
}
void trocknenAus()
{
if (zustand==Betrieb)
{
warnlampe=0;
zustand=Abschalten;
melden("Abschalten");
}
}
InterruptIn HALT(PB_4);
void halt(){
switch (zustand)
{
case Anlaufen: zustand=HaltAnlaufen; melden("Halt"); break;
case Betrieb: zustand=HaltBetrieb; melden("Halt"); break;
case Abschalten: zustand=HaltAbschalten; melden("Halt"); break;
}
}
int z=0;
void ueberwachen()
{
if (z>5) warnlampe=0;
else warnlampe=1;
z=0;
}
void luefter()
{
z++;
}
InterruptIn Luefter(PA_1);
void init()
{
Luefter.rise(&luefter);
HALT.mode(PullDown);
HALT.rise(&halt);
TrocknenEin.mode(PullDown);
TrocknenAus.mode(PullDown);
Lichtschranke.mode(PullDown);
TrocknenEin.rise(&trocknenEin);
TrocknenAus.rise(&trocknenAus);
zustand=Aus;
}
int main()
{
init();
melden("bereit");
while (true) {
switch(zustand)
{
case Anlaufen:
if (Lichtschranke==1)
{
zustand=Betrieb;
melden("Betrieb");
}
break;
case Abschalten:
if (Lichtschranke==0)
{
zustand=Aus;
melden("bereit");
}
break;
case HaltAnlaufen:
if (HALT==0){
zustand=Anlaufen;
melden("Anlaufen");
}
break;
case HaltBetrieb:
if (HALT==0){
zustand=Betrieb;
melden("Betrieb");
}
break;
case HaltAbschalten:
if (HALT==0){
zustand=Abschalten;
melden("Abschalten");
}
break;
case Betrieb: ueberwachen();
break;
}
HAL_Delay(zeit);
}
}