Display Steuerung für Lampen per Relais. https://www.youtube.com/watch?v=_CupBMcZ8Xc
Dependencies: BSP_DISCO_F746NG F746_GUI LCD_DISCO_F746NG TS_DISCO_F746NG mbed
relay.cpp
- Committer:
- hexfactory
- Date:
- 2017-04-23
- Revision:
- 1:f316de154ff7
File content as of revision 1:f316de154ff7:
/*============================================================================================= section 1 - includes ==============================================================================================*/ /* imported libs */ #include "mbed.h" #include "F746_GUI.hpp" /* project files */ #include "relay.h" #include "flash.h" /*============================================================================================= section 2 - private defines / enumerations ==============================================================================================*/ /*============================================================================================= section 3 - private typedefs ==============================================================================================*/ /*============================================================================================= section 4 - private macros ==============================================================================================*/ /*============================================================================================= section 5 - public constants definition ==============================================================================================*/ /*============================================================================================= section 6 - public variables/pointers definition ==============================================================================================*/ /* definition public variables */ /* definition public pointers */ /*============================================================================================= section 7 - private constants definition ==============================================================================================*/ /*============================================================================================= section 8 - private variables/objects/pointers definition ==============================================================================================*/ /* definition private variables */ /* definition private pointers */ static Label *pLabelLight1; static Button *pBtnLight1; static Label *pLabelLight2; static Button *pBtnLight2; /*============================================================================================= section 9 - private functions - declaration ==============================================================================================*/ /*============================================================================================= section 10 - private functions - implementation (definition) ==============================================================================================*/ /*============================================================================================= section 11 - public functions - implementation (definition) ==============================================================================================*/ void relay_init(void) { pLabelLight1 = new Label( 10, 40 + 12, "Lampe 1: ", Label::LEFT, Font16); pBtnLight1 = new Button(100, 40, 70, 40, "schalten"); pLabelLight2 = new Label( 10, 90 + 12, "Lampe 2: ", Label::LEFT, Font16); pBtnLight2 = new Button(100, 90, 70, 40, "schalten"); } void relay_switch(E_RELAY_LIGHT lightNumber) { DigitalOut *out1; DigitalOut *out2; uint8_t toggleByte; if (lightNumber == RELAY_LIGHT1) { out1 = &g_light1Fet1; out2 = &g_light1Fet2; toggleByte = flash_read(FLASH_TOGGLE_BYTE_LIGHT1); toggleByte = !toggleByte; flash_write(FLASH_TOGGLE_BYTE_LIGHT1, toggleByte); } else if (lightNumber == RELAY_LIGHT2) { out1 = &g_light2Fet1; out2 = &g_light2Fet2; toggleByte = flash_read(FLASH_TOGGLE_BYTE_LIGHT2); toggleByte = !toggleByte; flash_write(FLASH_TOGGLE_BYTE_LIGHT2, toggleByte); } /* Je nach Stellung des toggle Bytes, wird Ausgang 1 oder 2 kurzzeitig geschaltet (Spannung angelegt). */ if(toggleByte) { out1->write(1); wait(0.5); out1->write(0); } else { out2->write(1); wait(0.5); out2->write(0); } } void relay_task(void) { /* Objekte nicht initialisiert => Fehler */ if ((pBtnLight1 == NULL) || (pBtnLight2 == NULL)) { return; } /* prüft ob button "pBtnLight1" gerade gedrück ist */ if (pBtnLight1->Touched()) { relay_switch(RELAY_LIGHT1); pBtnLight1->Draw(); } /* prüft ob button "pBtnLight2" gerade gedrück ist */ if (pBtnLight2->Touched()) { relay_switch(RELAY_LIGHT2); pBtnLight2->Draw(); } } /*============================================================================================= section 12 - interrupt service routines (ISRs) ==============================================================================================*/ /*============================================================================================= end of file ==============================================================================================*/