
STM32-F746NG-DISCO Project.
Dependencies: BSP_DISCO_F746NG
main.cpp@1:0c13955ae7ae, 2020-01-07 (annotated)
- Committer:
- chri721u
- Date:
- Tue Jan 07 14:12:48 2020 +0000
- Revision:
- 1:0c13955ae7ae
- Parent:
- 0:6b60860a3ffe
- Child:
- 2:f3bee2fcc2a0
Fixed Button_count and Touch_count to properly display on screen;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
chri721u | 0:6b60860a3ffe | 1 | #include "mbed.h" |
chri721u | 0:6b60860a3ffe | 2 | #include "stm32746g_discovery_lcd.h" |
chri721u | 1:0c13955ae7ae | 3 | #include <string> |
chri721u | 0:6b60860a3ffe | 4 | |
chri721u | 0:6b60860a3ffe | 5 | /* |
chri721u | 0:6b60860a3ffe | 6 | Author: Christian Andresen |
chri721u | 1:0c13955ae7ae | 7 | Website: xcha11.skp-dp.sde.dk |
chri721u | 0:6b60860a3ffe | 8 | Date: 07-01-2020 |
chri721u | 0:6b60860a3ffe | 9 | Brief: Basic arduino project involving sensors (Touch), digital output (Buzzer), and onboard LCD Screen. |
chri721u | 0:6b60860a3ffe | 10 | |
chri721u | 0:6b60860a3ffe | 11 | */ |
chri721u | 0:6b60860a3ffe | 12 | // D2-D4: DigitalIN, D5-D8: DigitalOut |
chri721u | 0:6b60860a3ffe | 13 | DigitalIn button(D2); |
chri721u | 0:6b60860a3ffe | 14 | DigitalIn touch(D3); |
chri721u | 0:6b60860a3ffe | 15 | DigitalOut led(D5); |
chri721u | 0:6b60860a3ffe | 16 | DigitalOut buzzer(D6); |
chri721u | 0:6b60860a3ffe | 17 | |
chri721u | 0:6b60860a3ffe | 18 | void bluescreen(); |
chri721u | 0:6b60860a3ffe | 19 | int button_count; |
chri721u | 0:6b60860a3ffe | 20 | int touch_count; |
chri721u | 0:6b60860a3ffe | 21 | |
chri721u | 0:6b60860a3ffe | 22 | // Main part of the program |
chri721u | 0:6b60860a3ffe | 23 | int main() |
chri721u | 0:6b60860a3ffe | 24 | { |
chri721u | 1:0c13955ae7ae | 25 | uint8_t text1[30]; |
chri721u | 1:0c13955ae7ae | 26 | uint8_t text2[30]; |
chri721u | 0:6b60860a3ffe | 27 | button_count = 0; |
chri721u | 0:6b60860a3ffe | 28 | touch_count = 0; |
chri721u | 1:0c13955ae7ae | 29 | |
chri721u | 0:6b60860a3ffe | 30 | // Boot up LCD screen |
chri721u | 0:6b60860a3ffe | 31 | BSP_LCD_Init(); |
chri721u | 0:6b60860a3ffe | 32 | BSP_LCD_LayerDefaultInit(LTDC_ACTIVE_LAYER, LCD_FB_START_ADDRESS); |
chri721u | 0:6b60860a3ffe | 33 | BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER); |
chri721u | 0:6b60860a3ffe | 34 | // Clear the screen, add black background and red text |
chri721u | 0:6b60860a3ffe | 35 | BSP_LCD_Clear(LCD_COLOR_BLACK); |
chri721u | 0:6b60860a3ffe | 36 | BSP_LCD_SetBackColor(LCD_COLOR_BLACK); |
chri721u | 0:6b60860a3ffe | 37 | BSP_LCD_SetTextColor(LCD_COLOR_RED); |
chri721u | 0:6b60860a3ffe | 38 | // Bootup Message |
chri721u | 0:6b60860a3ffe | 39 | BSP_LCD_DisplayStringAt(0, 130, (uint8_t *) "SYSTEM BOOTING", CENTER_MODE); |
chri721u | 1:0c13955ae7ae | 40 | HAL_Delay(5000); |
chri721u | 0:6b60860a3ffe | 41 | // Change LCD Screen |
chri721u | 0:6b60860a3ffe | 42 | BSP_LCD_Clear(LCD_COLOR_BLACK); |
chri721u | 0:6b60860a3ffe | 43 | //Message On Screen |
chri721u | 0:6b60860a3ffe | 44 | BSP_LCD_DisplayStringAt(0, 50, (uint8_t *) "HELLDROP STUDIO SOFTWARE", CENTER_MODE); |
chri721u | 0:6b60860a3ffe | 45 | |
chri721u | 0:6b60860a3ffe | 46 | // While device is on, do.. |
chri721u | 0:6b60860a3ffe | 47 | while(1) { |
chri721u | 0:6b60860a3ffe | 48 | // If the button is pressed, do.. |
chri721u | 0:6b60860a3ffe | 49 | if(button) { |
chri721u | 0:6b60860a3ffe | 50 | led = 1; // LED is ON |
chri721u | 0:6b60860a3ffe | 51 | buzzer = 1; |
chri721u | 1:0c13955ae7ae | 52 | wait(0.25); |
chri721u | 0:6b60860a3ffe | 53 | button_count++; |
chri721u | 1:0c13955ae7ae | 54 | led = 0; |
chri721u | 1:0c13955ae7ae | 55 | buzzer = 0; |
chri721u | 0:6b60860a3ffe | 56 | } |
chri721u | 0:6b60860a3ffe | 57 | // Else if Touch Sensor is touched, do.. |
chri721u | 0:6b60860a3ffe | 58 | else if(touch) { |
chri721u | 0:6b60860a3ffe | 59 | led = 1; |
chri721u | 1:0c13955ae7ae | 60 | wait(1); |
chri721u | 0:6b60860a3ffe | 61 | touch_count++; |
chri721u | 1:0c13955ae7ae | 62 | led = 0; |
chri721u | 0:6b60860a3ffe | 63 | } |
chri721u | 0:6b60860a3ffe | 64 | // Else, turn off LED |
chri721u | 0:6b60860a3ffe | 65 | else { |
chri721u | 0:6b60860a3ffe | 66 | led = 0; |
chri721u | 0:6b60860a3ffe | 67 | buzzer = 0; |
chri721u | 0:6b60860a3ffe | 68 | } |
chri721u | 1:0c13955ae7ae | 69 | |
chri721u | 1:0c13955ae7ae | 70 | sprintf((char*)text1, "Button count: %d", button_count); |
chri721u | 1:0c13955ae7ae | 71 | sprintf((char*)text2, "Touch count: %d", touch_count); |
chri721u | 1:0c13955ae7ae | 72 | |
chri721u | 1:0c13955ae7ae | 73 | BSP_LCD_DisplayStringAt(0, 100, (uint8_t *)&text1, CENTER_MODE); |
chri721u | 1:0c13955ae7ae | 74 | BSP_LCD_DisplayStringAt(0, 150, (uint8_t *)&text2, CENTER_MODE); |
chri721u | 0:6b60860a3ffe | 75 | } |
chri721u | 0:6b60860a3ffe | 76 | } |
chri721u | 0:6b60860a3ffe | 77 | |
chri721u | 0:6b60860a3ffe | 78 | void bluescreen() |
chri721u | 0:6b60860a3ffe | 79 | { |
chri721u | 0:6b60860a3ffe | 80 | HAL_Delay(25000); |
chri721u | 0:6b60860a3ffe | 81 | //BLUE SCREEN OF DEATH |
chri721u | 0:6b60860a3ffe | 82 | BSP_LCD_Clear(LCD_COLOR_BLUE); |
chri721u | 0:6b60860a3ffe | 83 | BSP_LCD_SetBackColor(LCD_COLOR_BLUE); |
chri721u | 0:6b60860a3ffe | 84 | BSP_LCD_SetTextColor(LCD_COLOR_WHITE); |
chri721u | 1:0c13955ae7ae | 85 | BSP_LCD_DisplayStringAt(0, 50, (uint8_t *) ":(", LEFT_MODE); |
chri721u | 0:6b60860a3ffe | 86 | BSP_LCD_DisplayStringAt(0, 80, (uint8_t *) "This device has encountered", CENTER_MODE); |
chri721u | 0:6b60860a3ffe | 87 | BSP_LCD_DisplayStringAt(0, 110, (uint8_t *) "a fatal error.", CENTER_MODE); |
chri721u | 0:6b60860a3ffe | 88 | BSP_LCD_DisplayStringAt(0, 140, (uint8_t *) "Please Reboot.", CENTER_MODE); |
chri721u | 0:6b60860a3ffe | 89 | BSP_LCD_DisplayStringAt(0, 170, (uint8_t *) "HAL Error", CENTER_MODE); |
chri721u | 0:6b60860a3ffe | 90 | } |
chri721u | 0:6b60860a3ffe | 91 | |
chri721u | 0:6b60860a3ffe | 92 | void counter() |
chri721u | 0:6b60860a3ffe | 93 | { |
chri721u | 0:6b60860a3ffe | 94 | |
chri721u | 0:6b60860a3ffe | 95 | } |