Smart Home Controller

Dependencies:   TS_DISCO_F746NG mbed LCD_DISCO_F746NG BSP_DISCO_F746NG sMotor

Committer:
TwinToe
Date:
Wed Jan 09 12:58:26 2019 +0000
Revision:
3:ffdd4d778110
Parent:
2:2f4e4558277c
Mathias skal ha den

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TwinToe 0:dfbc18a77337 1 #include "mbed.h"
TwinToe 0:dfbc18a77337 2 #include "TS_DISCO_F746NG.h"
TwinToe 0:dfbc18a77337 3 #include "LCD_DISCO_F746NG.h"
TwinToe 2:2f4e4558277c 4 #include "sMotor.h"
TwinToe 3:ffdd4d778110 5 #include "Draw.h"
TwinToe 0:dfbc18a77337 6
TwinToe 2:2f4e4558277c 7 // Devices
TwinToe 0:dfbc18a77337 8 LCD_DISCO_F746NG lcd;
TwinToe 0:dfbc18a77337 9 TS_DISCO_F746NG ts;
TwinToe 2:2f4e4558277c 10 sMotor motor(A0, A1, A2, A3);
TwinToe 2:2f4e4558277c 11 int step_speed = 2200;
TwinToe 2:2f4e4558277c 12 int numstep = 1;
TwinToe 1:7f6f6627aacd 13 DigitalOut led(D8);
TwinToe 3:ffdd4d778110 14 Draw draw;
TwinToe 0:dfbc18a77337 15
TwinToe 0:dfbc18a77337 16 int main()
TwinToe 0:dfbc18a77337 17 {
TwinToe 0:dfbc18a77337 18 // Variables
TwinToe 0:dfbc18a77337 19 TS_StateTypeDef TS_State;
TwinToe 0:dfbc18a77337 20 uint16_t x, y;
TwinToe 1:7f6f6627aacd 21 uint8_t text[30];
TwinToe 2:2f4e4558277c 22 uint8_t status;
TwinToe 1:7f6f6627aacd 23 uint8_t idx;
TwinToe 1:7f6f6627aacd 24 uint8_t touches = 0;
TwinToe 1:7f6f6627aacd 25 bool touched;
TwinToe 0:dfbc18a77337 26
TwinToe 0:dfbc18a77337 27 //Initial conf
TwinToe 0:dfbc18a77337 28 status = ts.Init(lcd.GetXSize(), lcd.GetYSize());
TwinToe 0:dfbc18a77337 29 lcd.Clear(LCD_COLOR_RED);
TwinToe 0:dfbc18a77337 30 lcd.SetBackColor(LCD_COLOR_RED);
TwinToe 2:2f4e4558277c 31 lcd.SetTextColor(LCD_COLOR_BLUE);
TwinToe 0:dfbc18a77337 32 lcd.SetFont(&Font24);
TwinToe 0:dfbc18a77337 33
TwinToe 0:dfbc18a77337 34 //Start screen
TwinToe 2:2f4e4558277c 35 lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"Smart Home Controller", CENTER_MODE);
TwinToe 0:dfbc18a77337 36 wait(2);
TwinToe 1:7f6f6627aacd 37 lcd.Clear(LCD_COLOR_RED);
TwinToe 0:dfbc18a77337 38
TwinToe 1:7f6f6627aacd 39 while(1) {
TwinToe 2:2f4e4558277c 40 // Drawing GUI
TwinToe 1:7f6f6627aacd 41 x = TS_State.touchX[idx];
TwinToe 1:7f6f6627aacd 42 y = TS_State.touchY[idx];
TwinToe 1:7f6f6627aacd 43 sprintf((char*)text, "Touch %d: x=%d y=%d ", touches, x, y);
TwinToe 1:7f6f6627aacd 44 lcd.DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE);
TwinToe 1:7f6f6627aacd 45 ts.GetState(&TS_State);
TwinToe 2:2f4e4558277c 46 lcd.FillRect(0, 192, 80, 80);
TwinToe 2:2f4e4558277c 47 lcd.FillRect(133, 192, 80, 80);
TwinToe 2:2f4e4558277c 48 lcd.FillRect(266, 192, 80, 80);
TwinToe 2:2f4e4558277c 49 lcd.FillRect(399, 192, 80, 80);
TwinToe 1:7f6f6627aacd 50
TwinToe 2:2f4e4558277c 51 if ((TS_State.touchDetected == 0) && (touched == true)){
TwinToe 1:7f6f6627aacd 52 touches++;
TwinToe 1:7f6f6627aacd 53 touched = false;
TwinToe 1:7f6f6627aacd 54 }
TwinToe 2:2f4e4558277c 55 if (TS_State.touchDetected == 1){
TwinToe 1:7f6f6627aacd 56 touched = true;
TwinToe 1:7f6f6627aacd 57 }
TwinToe 2:2f4e4558277c 58
TwinToe 2:2f4e4558277c 59 // Button 1
TwinToe 2:2f4e4558277c 60 if ((TS_State.touchDetected) && (TS_State.touchX[0] < 100) && (TS_State.touchY[0] > 190 )){
TwinToe 1:7f6f6627aacd 61 led = 1;
TwinToe 1:7f6f6627aacd 62 }
TwinToe 2:2f4e4558277c 63 else{
TwinToe 2:2f4e4558277c 64 led = 0;
TwinToe 2:2f4e4558277c 65 }
TwinToe 2:2f4e4558277c 66
TwinToe 2:2f4e4558277c 67 // Button 2
TwinToe 2:2f4e4558277c 68 if ((TS_State.touchDetected) && (TS_State.touchX[0] > 130) && (TS_State.touchX[0] < 210) && (TS_State.touchY[0] > 190 )){
TwinToe 2:2f4e4558277c 69 motor.step(numstep,0,step_speed);
TwinToe 2:2f4e4558277c 70 }
TwinToe 2:2f4e4558277c 71
TwinToe 2:2f4e4558277c 72 // Button 3
TwinToe 2:2f4e4558277c 73 if ((TS_State.touchDetected) && (TS_State.touchX[0] > 240) && (TS_State.touchX[0] < 320) && (TS_State.touchY[0] > 190 ))
TwinToe 1:7f6f6627aacd 74 {
TwinToe 3:ffdd4d778110 75 lcd.Clear(LCD_COLOR_RED);
TwinToe 3:ffdd4d778110 76 lcd.DrawBitmap(0, 0, (uint8_t *)draw.GetStarWars());
TwinToe 3:ffdd4d778110 77 wait(5);
TwinToe 2:2f4e4558277c 78 }
TwinToe 2:2f4e4558277c 79
TwinToe 2:2f4e4558277c 80 // Button 4
TwinToe 2:2f4e4558277c 81 if ((TS_State.touchDetected) && (TS_State.touchX[0] > 350) && (TS_State.touchX[0] < 430) && (TS_State.touchY[0] > 190 ))
TwinToe 2:2f4e4558277c 82 {
TwinToe 2:2f4e4558277c 83
TwinToe 1:7f6f6627aacd 84 }
TwinToe 1:7f6f6627aacd 85 }
TwinToe 0:dfbc18a77337 86 }