
Interfaçage NeoPixel Ring 12, LPRO MECSE, Arnaud A.
Dependencies: lcd neoPixelRing12 view2 BSP_DISCO_F746NG view1 button
main.cpp@8:aa1e315bf408, 2020-06-14 (annotated)
- 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?
User | Revision | Line number | New 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 |