Smart Home Controller
Dependencies: TS_DISCO_F746NG mbed LCD_DISCO_F746NG BSP_DISCO_F746NG sMotor
main.cpp@3:ffdd4d778110, 2019-01-09 (annotated)
- 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?
User | Revision | Line number | New 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 | } |