Interfaçage NeoPixel Ring 12, LPRO MECSE, Arnaud A.

Dependencies:   lcd neoPixelRing12 view2 BSP_DISCO_F746NG view1 button

Committer:
Rhamao
Date:
Sun Jun 14 19:14:21 2020 +0000
Revision:
8:aa1e315bf408
Parent:
7:1887c4e4b5de
Child:
9:89d39fc98b17
1er version de linterface

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bcostm 0:b045ca817e2c 1 #include "mbed.h"
Rhamao 6:91e478ee227e 2 #include "Thread.h"
Rhamao 6:91e478ee227e 3 #include "rtos_idle.h"
Rhamao 6:91e478ee227e 4 #include "mbed_critical.h"
Rhamao 7:1887c4e4b5de 5 #include "NeoPixelRing12.h"
Rhamao 8:aa1e315bf408 6 #include "view.h"
Rhamao 8:aa1e315bf408 7 #include "stm32746g_discovery_lcd.h"
Rhamao 8:aa1e315bf408 8 #include "stm32746g_discovery_ts.h"
Rhamao 8:aa1e315bf408 9 #include <list>
Rhamao 8:aa1e315bf408 10 #define SCREENWIDTH 480
Rhamao 8:aa1e315bf408 11 #define SCREENHEIGHT 272
Rhamao 6:91e478ee227e 12
Rhamao 6:91e478ee227e 13 #define USE_CRITICAL_SECTION_LOCK 1 // Set 0 to see race condition
Rhamao 6:91e478ee227e 14
Rhamao 8:aa1e315bf408 15 uint8_t text[30];
Rhamao 7:1887c4e4b5de 16 InterruptIn button(USER_BUTTON);
Rhamao 6:91e478ee227e 17 DigitalOut myled(D8);
Rhamao 6:91e478ee227e 18 DigitalOut led1(LED1);
Rhamao 7:1887c4e4b5de 19 NeoPixelRing12 npr(D8);
Rhamao 8:aa1e315bf408 20 char blank[7] = "000000";
Rhamao 8:aa1e315bf408 21 char r[7] = "ff0000";
Rhamao 8:aa1e315bf408 22 char g[7] = "00ff00";
Rhamao 8:aa1e315bf408 23 char b[7] = "0000ff";
Rhamao 6:91e478ee227e 24
Rhamao 6:91e478ee227e 25 void bit0(){
Rhamao 6:91e478ee227e 26 myled = 1;
Rhamao 6:91e478ee227e 27 wait_ns(190);
Rhamao 6:91e478ee227e 28 myled = 0;
Rhamao 6:91e478ee227e 29 wait_ns(740);
Rhamao 6:91e478ee227e 30 }
Rhamao 6:91e478ee227e 31
Rhamao 6:91e478ee227e 32 void bit1(){
Rhamao 6:91e478ee227e 33 myled = 1;
Rhamao 6:91e478ee227e 34 wait_ns(600);
Rhamao 6:91e478ee227e 35 myled = 0;
Rhamao 6:91e478ee227e 36 wait_ns(600);
Rhamao 6:91e478ee227e 37 }
Rhamao 6:91e478ee227e 38
Rhamao 7:1887c4e4b5de 39 void pressed(){
Rhamao 7:1887c4e4b5de 40 led1=1;
Rhamao 6:91e478ee227e 41 }
Rhamao 6:91e478ee227e 42
Rhamao 7:1887c4e4b5de 43 void released(){
Rhamao 7:1887c4e4b5de 44 npr.setLights(1, "000000");
Rhamao 7:1887c4e4b5de 45 npr.rst();
Rhamao 7:1887c4e4b5de 46 npr.setLights(12, "000000");
Rhamao 7:1887c4e4b5de 47 led1=true;
Rhamao 6:91e478ee227e 48 }
Rhamao 6:91e478ee227e 49
bcostm 0:b045ca817e2c 50
bcostm 0:b045ca817e2c 51 int main()
Jerome Coutant 5:e8f8a8037256 52 {
Rhamao 8:aa1e315bf408 53 TS_StateTypeDef TS_State;
Rhamao 8:aa1e315bf408 54 uint16_t x, y;
Rhamao 8:aa1e315bf408 55 uint8_t idx;
Rhamao 8:aa1e315bf408 56 uint8_t cleared = 0;
Rhamao 8:aa1e315bf408 57 uint8_t prev_nb_touches = 0;
Rhamao 8:aa1e315bf408 58
Rhamao 8:aa1e315bf408 59 View v;
Rhamao 8:aa1e315bf408 60
Rhamao 8:aa1e315bf408 61 while(1) {
Rhamao 8:aa1e315bf408 62
Rhamao 8:aa1e315bf408 63 v.updateLoop();
Rhamao 8:aa1e315bf408 64 BSP_TS_GetState(&TS_State);
Rhamao 8:aa1e315bf408 65 if (TS_State.touchDetected) { //Detecte si l'écran tactile est touché
Rhamao 8:aa1e315bf408 66 cleared = 0;
Rhamao 8:aa1e315bf408 67 //sprintf((char*)text, "Touches: %d", TS_State.touchDetected);
Rhamao 8:aa1e315bf408 68 //BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE);
Rhamao 8:aa1e315bf408 69 for (idx = 0; idx < TS_State.touchDetected; idx++) {
Rhamao 8:aa1e315bf408 70 x = TS_State.touchX[idx];
Rhamao 8:aa1e315bf408 71 y = TS_State.touchY[idx];
Rhamao 8:aa1e315bf408 72 v.contain(x, y);
Rhamao 8:aa1e315bf408 73
Rhamao 8:aa1e315bf408 74 }
Rhamao 8:aa1e315bf408 75
Rhamao 8:aa1e315bf408 76
Rhamao 8:aa1e315bf408 77 } else {
Rhamao 8:aa1e315bf408 78 if (!cleared) {
Rhamao 8:aa1e315bf408 79 v.draw();
Rhamao 8:aa1e315bf408 80 //sprintf((char*)text, "Touches: 0");
Rhamao 8:aa1e315bf408 81 //BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE);
Rhamao 8:aa1e315bf408 82 cleared = 1;
Rhamao 8:aa1e315bf408 83
Rhamao 8:aa1e315bf408 84 }
Rhamao 8:aa1e315bf408 85 }
Rhamao 8:aa1e315bf408 86 }
Rhamao 8:aa1e315bf408 87 //*************************************************
Rhamao 6:91e478ee227e 88 int i=0;
Rhamao 6:91e478ee227e 89 button.rise(&pressed);
Rhamao 6:91e478ee227e 90 button.fall(&released);
Rhamao 6:91e478ee227e 91 //CriticalSectionLock lock;
Rhamao 6:91e478ee227e 92 //bit0();
Rhamao 6:91e478ee227e 93 //CriticalSectionLock unlock;
Rhamao 7:1887c4e4b5de 94
Rhamao 7:1887c4e4b5de 95 //Une led à 0 avant d'envoyer la trame pour éviter
Rhamao 7:1887c4e4b5de 96 //le bug de trame
Rhamao 7:1887c4e4b5de 97 npr.setLights(1, "ff0000");
Rhamao 7:1887c4e4b5de 98 npr.rst();
Rhamao 7:1887c4e4b5de 99 //la trame
Rhamao 7:1887c4e4b5de 100 npr.setLights(5, r);
Rhamao 7:1887c4e4b5de 101 npr.setLights(2, g);
Rhamao 7:1887c4e4b5de 102 npr.setLights(4, b);
Rhamao 7:1887c4e4b5de 103 npr.rst();
Rhamao 7:1887c4e4b5de 104 wait(100.0);
Rhamao 6:91e478ee227e 105 }
bcostm 0:b045ca817e2c 106
bcostm 0:b045ca817e2c 107