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

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?

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