SRF08 sur STM32f746NG en I2C avec configuration des registres. Affichage des boutons de réglage et des valeurs de luminosité et de distance
Dependencies: BSP_DISCO_F746NG LCD_DISCO_F746NG SRF08 TS_DISCO_F746NG mbed
main.cpp@0:6f45024d79bc, 2016-02-08 (annotated)
- Committer:
- dommbed
- Date:
- Mon Feb 08 11:24:12 2016 +0000
- Revision:
- 0:6f45024d79bc
- Child:
- 1:726e6fd13180
First Version;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dommbed | 0:6f45024d79bc | 1 | #include "mbed.h" |
dommbed | 0:6f45024d79bc | 2 | #include "TS_DISCO_F746NG.h" |
dommbed | 0:6f45024d79bc | 3 | #include "LCD_DISCO_F746NG.h" |
dommbed | 0:6f45024d79bc | 4 | #include "SRF08.h" |
dommbed | 0:6f45024d79bc | 5 | LCD_DISCO_F746NG lcd; |
dommbed | 0:6f45024d79bc | 6 | TS_DISCO_F746NG ts; |
dommbed | 0:6f45024d79bc | 7 | |
dommbed | 0:6f45024d79bc | 8 | int main() |
dommbed | 0:6f45024d79bc | 9 | { |
dommbed | 0:6f45024d79bc | 10 | SRF08 srf08(D14, D15, 0xE0); // Define SDA, SCL pin and I2C address |
dommbed | 0:6f45024d79bc | 11 | |
dommbed | 0:6f45024d79bc | 12 | TS_StateTypeDef TS_State; |
dommbed | 0:6f45024d79bc | 13 | uint16_t x, y; |
dommbed | 0:6f45024d79bc | 14 | uint8_t text[30]; |
dommbed | 0:6f45024d79bc | 15 | uint8_t status; |
dommbed | 0:6f45024d79bc | 16 | uint8_t idx; |
dommbed | 0:6f45024d79bc | 17 | uint8_t cleared = 0; |
dommbed | 0:6f45024d79bc | 18 | uint8_t prev_nb_touches = 0; |
dommbed | 0:6f45024d79bc | 19 | |
dommbed | 0:6f45024d79bc | 20 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN DEMO", CENTER_MODE); |
dommbed | 0:6f45024d79bc | 21 | wait(1); |
dommbed | 0:6f45024d79bc | 22 | |
dommbed | 0:6f45024d79bc | 23 | status = ts.Init(lcd.GetXSize(), lcd.GetYSize()); |
dommbed | 0:6f45024d79bc | 24 | if (status != TS_OK) { |
dommbed | 0:6f45024d79bc | 25 | lcd.Clear(LCD_COLOR_RED); |
dommbed | 0:6f45024d79bc | 26 | lcd.SetBackColor(LCD_COLOR_RED); |
dommbed | 0:6f45024d79bc | 27 | lcd.SetTextColor(LCD_COLOR_WHITE); |
dommbed | 0:6f45024d79bc | 28 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT FAIL", CENTER_MODE); |
dommbed | 0:6f45024d79bc | 29 | } else { |
dommbed | 0:6f45024d79bc | 30 | lcd.Clear(LCD_COLOR_GREEN); |
dommbed | 0:6f45024d79bc | 31 | lcd.SetBackColor(LCD_COLOR_GREEN); |
dommbed | 0:6f45024d79bc | 32 | lcd.SetTextColor(LCD_COLOR_WHITE); |
dommbed | 0:6f45024d79bc | 33 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT OK", CENTER_MODE); |
dommbed | 0:6f45024d79bc | 34 | } |
dommbed | 0:6f45024d79bc | 35 | |
dommbed | 0:6f45024d79bc | 36 | wait(1); |
dommbed | 0:6f45024d79bc | 37 | lcd.SetFont(&Font12); |
dommbed | 0:6f45024d79bc | 38 | lcd.SetBackColor(LCD_COLOR_BLUE); |
dommbed | 0:6f45024d79bc | 39 | lcd.SetTextColor(LCD_COLOR_WHITE); |
dommbed | 0:6f45024d79bc | 40 | |
dommbed | 0:6f45024d79bc | 41 | printf("Measured range : %d cm\n",srf08.getRange()); |
dommbed | 0:6f45024d79bc | 42 | wait(0.1); |
dommbed | 0:6f45024d79bc | 43 | while(1) { |
dommbed | 0:6f45024d79bc | 44 | |
dommbed | 0:6f45024d79bc | 45 | |
dommbed | 0:6f45024d79bc | 46 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"test", CENTER_MODE); |
dommbed | 0:6f45024d79bc | 47 | |
dommbed | 0:6f45024d79bc | 48 | ts.GetState(&TS_State); |
dommbed | 0:6f45024d79bc | 49 | if (TS_State.touchDetected) { |
dommbed | 0:6f45024d79bc | 50 | // Clear lines corresponding to old touches coordinates |
dommbed | 0:6f45024d79bc | 51 | if (TS_State.touchDetected < prev_nb_touches) { |
dommbed | 0:6f45024d79bc | 52 | for (idx = (TS_State.touchDetected + 1); idx <= 5; idx++) { |
dommbed | 0:6f45024d79bc | 53 | lcd.ClearStringLine(idx); |
dommbed | 0:6f45024d79bc | 54 | } |
dommbed | 0:6f45024d79bc | 55 | } |
dommbed | 0:6f45024d79bc | 56 | prev_nb_touches = TS_State.touchDetected; |
dommbed | 0:6f45024d79bc | 57 | |
dommbed | 0:6f45024d79bc | 58 | cleared = 0; |
dommbed | 0:6f45024d79bc | 59 | |
dommbed | 0:6f45024d79bc | 60 | sprintf((char*)text, "Touches: %d", TS_State.touchDetected); |
dommbed | 0:6f45024d79bc | 61 | lcd.DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); |
dommbed | 0:6f45024d79bc | 62 | |
dommbed | 0:6f45024d79bc | 63 | for (idx = 0; idx < TS_State.touchDetected; idx++) { |
dommbed | 0:6f45024d79bc | 64 | x = TS_State.touchX[idx]; |
dommbed | 0:6f45024d79bc | 65 | y = TS_State.touchY[idx]; |
dommbed | 0:6f45024d79bc | 66 | sprintf((char*)text, "Touch %d: x=%d y=%d ", idx+1, x, y); |
dommbed | 0:6f45024d79bc | 67 | lcd.DisplayStringAt(0, LINE(idx+1), (uint8_t *)&text, LEFT_MODE); |
dommbed | 0:6f45024d79bc | 68 | } |
dommbed | 0:6f45024d79bc | 69 | |
dommbed | 0:6f45024d79bc | 70 | lcd.DrawPixel(TS_State.touchX[0], TS_State.touchY[0], LCD_COLOR_ORANGE); |
dommbed | 0:6f45024d79bc | 71 | } else { |
dommbed | 0:6f45024d79bc | 72 | if (!cleared) { |
dommbed | 0:6f45024d79bc | 73 | lcd.Clear(LCD_COLOR_BLUE); |
dommbed | 0:6f45024d79bc | 74 | sprintf((char*)text, "Touches: 0"); |
dommbed | 0:6f45024d79bc | 75 | lcd.DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); |
dommbed | 0:6f45024d79bc | 76 | cleared = 1; |
dommbed | 0:6f45024d79bc | 77 | } |
dommbed | 0:6f45024d79bc | 78 | } |
dommbed | 0:6f45024d79bc | 79 | } |
dommbed | 0:6f45024d79bc | 80 | } |