Version 0.1
Dependencies: mbed
FTKL_Test_Gruppe_A.cpp
- Committer:
- ocsid
- Date:
- 2015-06-16
- Revision:
- 0:b8dbe4592e91
File content as of revision 0:b8dbe4592e91:
#include "mbed.h" #define ARR_SIZE 5 BusOut _led1(LED1), _led2(LED2), _led3(LED3), _led4(LED4); Serial _pc(USBTX, USBRX); InterruptIn _async(P1_16); Timer t1; char _recChar = 0, _recArr[ARR_SIZE]; int _index = 0, _failstate = 0; void ReadData(); void Interrupt(); void Error(); void WriteData(); void ToggleLeds(); void FlushSerialBuffer(); void Start(); void Init(); void Output(); void Failstate(); int main(){ Init(); Start(); _pc.attach(&ReadData); Interrupt(); while(1){ if(_failstate == 1){ t1.start(); if(t1.read_ms() >= 100 && _failstate == 1){ ToggleLeds(); t1.stop(); t1.reset(); } } } } void ReadData(){ _recChar = _pc.getc(); _recArr[_index] = _recChar; _index++; if(_recChar == 'a' || _recChar == 'A'){ _led1 = _led2 = _led3 = _led4 = 0; Output(); _recArr[_index] = 0; _index = 0; FlushSerialBuffer(); } else if(_recChar == 'e' || _recChar == 'E'){ _led1 = _led2 = _led3 = _led4 = 1; Output(); _recArr[_index] = 0; _index = 0; FlushSerialBuffer(); } else if(_recChar == 't' || _recChar == 'T'){ ToggleLeds(); Output(); _recArr[_index] = 0; _index = 0; FlushSerialBuffer(); } else{ Failstate(); FlushSerialBuffer(); } } void Interrupt(){ _async.rise(&Error); } void Error(){ _failstate = 0; _led1 = _led4 = 1; _led2 = _led3 = 0; } void ToggleLeds(){ _led1 = !_led1; _led2 = !_led2; _led3 = !_led3; _led4 = !_led4; } void FlushSerialBuffer(){ while(_pc.readable()){ _pc.getc(); } } void Start(){ _pc.printf("Hallo\r\nBitte geben Sie einen Steuerstring nach untem stehenden Format ein\r\nFormat des Strings:\r\n\ a oder A --> LEDs aus\r\n e oder E --> LEDs ein\r\n Lx,E --> LED x ein (x = 1..4)\r\n Lx,A --> LED x aus (x = 1..4)\r\n t --> alle LEDs toggeln (leuchtende LEDs aus, dunkle LEDs ein)\r\n"); } void Init(){ _led1 = _led2 = _led3 = _led4 = 0; _pc.baud(115200); _pc.format(8,SerialBase::None, 1); } void Output(){ _pc.printf("Steuerbefehl <%s> ausgefuehrt\r\nBitte geben Sie einen Steuerstring ein\r\n", _recArr); } void Failstate(){ _failstate = 1; _led1 = _led2 = _led3 = _led4 = 0; _pc.printf("Ein Fehler ist aufgetreten\r\n"); _recArr[_index] = 0; _index = 0; }