STM32-F746NG-DISCO Project.

Dependencies:   BSP_DISCO_F746NG

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?

UserRevisionLine numberNew 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 }