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

Committer:
hexfactory
Date:
Mon Jan 30 20:58:13 2017 +0000
Revision:
0:da00b5dd65c6
Child:
1:f316de154ff7
First Release; 0x08 ARM mbed 001 -  Display Steuerung - GUI und Schalter (Relai) [DE]; https://www.youtube.com/watch?v=_CupBMcZ8Xc

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hexfactory 0:da00b5dd65c6 1 #include "mbed.h"
hexfactory 0:da00b5dd65c6 2 #include "F746_GUI.hpp"
hexfactory 0:da00b5dd65c6 3 #include "flash.h"
hexfactory 0:da00b5dd65c6 4
hexfactory 0:da00b5dd65c6 5 /************************************
hexfactory 0:da00b5dd65c6 6 local variables / objects
hexfactory 0:da00b5dd65c6 7 ************************************/
hexfactory 0:da00b5dd65c6 8 static DigitalOut light1Fet1(D4, 0);
hexfactory 0:da00b5dd65c6 9 static DigitalOut light1Fet2(D5, 0);
hexfactory 0:da00b5dd65c6 10 static DigitalOut light2Fet1(D6, 0);
hexfactory 0:da00b5dd65c6 11 static DigitalOut light2Fet2(D7, 0);
hexfactory 0:da00b5dd65c6 12 static uint8_t flashData[FLASH_DATA_SIZE];
hexfactory 0:da00b5dd65c6 13
hexfactory 0:da00b5dd65c6 14 /************************************
hexfactory 0:da00b5dd65c6 15 local function declaration
hexfactory 0:da00b5dd65c6 16 ************************************/
hexfactory 0:da00b5dd65c6 17
hexfactory 0:da00b5dd65c6 18 static void _switchButton(DigitalOut out1, DigitalOut out2, uint8_t *toggleByte);
hexfactory 0:da00b5dd65c6 19
hexfactory 0:da00b5dd65c6 20 /************************************
hexfactory 0:da00b5dd65c6 21 local function definition
hexfactory 0:da00b5dd65c6 22 ************************************/
hexfactory 0:da00b5dd65c6 23
hexfactory 0:da00b5dd65c6 24 static void _switchButton(DigitalOut out1, DigitalOut out2, uint8_t *toggleByte) {
hexfactory 0:da00b5dd65c6 25 /* toggle byte invertieren */
hexfactory 0:da00b5dd65c6 26 *toggleByte = !(*toggleByte);
hexfactory 0:da00b5dd65c6 27 /* schreibe Daten ins Flash. Stellt Datenkonsistenz zwischen RAM und ROM sicher. */
hexfactory 0:da00b5dd65c6 28 flash_write(flashData);
hexfactory 0:da00b5dd65c6 29
hexfactory 0:da00b5dd65c6 30 /* Je nach Stellung des toggle Bytes,
hexfactory 0:da00b5dd65c6 31 wird Ausgang 1 oder 2 kurzzeitig geschaltet (Spannung angelegt). */
hexfactory 0:da00b5dd65c6 32 if(*toggleByte){
hexfactory 0:da00b5dd65c6 33 out1 = 1;
hexfactory 0:da00b5dd65c6 34 wait(0.5);
hexfactory 0:da00b5dd65c6 35 out1 = 0;
hexfactory 0:da00b5dd65c6 36 } else{
hexfactory 0:da00b5dd65c6 37 out2 = 1;
hexfactory 0:da00b5dd65c6 38 wait(0.5);
hexfactory 0:da00b5dd65c6 39 out2 = 0;
hexfactory 0:da00b5dd65c6 40 }
hexfactory 0:da00b5dd65c6 41 }
hexfactory 0:da00b5dd65c6 42
hexfactory 0:da00b5dd65c6 43 /************************************
hexfactory 0:da00b5dd65c6 44 global function definition
hexfactory 0:da00b5dd65c6 45 ************************************/
hexfactory 0:da00b5dd65c6 46
hexfactory 0:da00b5dd65c6 47 int main() {
hexfactory 0:da00b5dd65c6 48 /***************************
hexfactory 0:da00b5dd65c6 49 init
hexfactory 0:da00b5dd65c6 50 ***************************/
hexfactory 0:da00b5dd65c6 51 /* GUI Ojects */
hexfactory 0:da00b5dd65c6 52 Label label1(240, 2, "Display Steuerung v0.1", Label::CENTER, Font16);
hexfactory 0:da00b5dd65c6 53 Button btnLight1(10, 40, 70, 40, "Lampe 1");
hexfactory 0:da00b5dd65c6 54 Button btnLight2(90, 40, 70, 40, "Lampe 2");
hexfactory 0:da00b5dd65c6 55
hexfactory 0:da00b5dd65c6 56 /* flash */
hexfactory 0:da00b5dd65c6 57 flash_init();
hexfactory 0:da00b5dd65c6 58 flash_read(flashData); /* Lese Daten von flash (ROM) in das RAM */
hexfactory 0:da00b5dd65c6 59
hexfactory 0:da00b5dd65c6 60 /***************************
hexfactory 0:da00b5dd65c6 61 main loop
hexfactory 0:da00b5dd65c6 62 ***************************/
hexfactory 0:da00b5dd65c6 63 while(1) {
hexfactory 0:da00b5dd65c6 64 /* prüft ob button "btnLight1" gerade gedrück ist */
hexfactory 0:da00b5dd65c6 65 if (btnLight1.Touched()){
hexfactory 0:da00b5dd65c6 66 _switchButton(light1Fet1, light1Fet2, flashData + FLASH_TOGGLE_BYTE_LIGHT1);
hexfactory 0:da00b5dd65c6 67 btnLight1.Draw();
hexfactory 0:da00b5dd65c6 68 }
hexfactory 0:da00b5dd65c6 69 /* prüft ob button "btnLight2" gerade gedrück ist */
hexfactory 0:da00b5dd65c6 70 if (btnLight2.Touched()){
hexfactory 0:da00b5dd65c6 71 _switchButton(light2Fet1, light2Fet2, flashData + FLASH_TOGGLE_BYTE_LIGHT2);
hexfactory 0:da00b5dd65c6 72 btnLight2.Draw();
hexfactory 0:da00b5dd65c6 73 }
hexfactory 0:da00b5dd65c6 74 }
hexfactory 0:da00b5dd65c6 75 }