
Interfaçage NeoPixel Ring 12, LPRO MECSE, Arnaud A.
Dependencies: lcd neoPixelRing12 view2 BSP_DISCO_F746NG view1 button
Diff: main.cpp
- Revision:
- 7:1887c4e4b5de
- Parent:
- 6:91e478ee227e
- Child:
- 8:aa1e315bf408
--- a/main.cpp Thu May 28 15:32:34 2020 +0000 +++ b/main.cpp Thu Jun 04 23:35:29 2020 +0000 @@ -2,13 +2,14 @@ #include "Thread.h" #include "rtos_idle.h" #include "mbed_critical.h" +#include "NeoPixelRing12.h" #define USE_CRITICAL_SECTION_LOCK 1 // Set 0 to see race condition -InterruptIn button(USER_BUTTON) -; +InterruptIn button(USER_BUTTON); DigitalOut myled(D8); DigitalOut led1(LED1); +NeoPixelRing12 npr(D8); void bit0(){ myled = 1; @@ -24,69 +25,41 @@ wait_ns(600); } -void rst(){ - myled=0; - wait_us(70); -} - -void setLights(bool state, int nbOfLeds){ - if(state){ - for(int i=0; i<24*nbOfLeds; i++){ - bit1(); - } - } - else{ - for(int i=0; i<24*nbOfLeds; i++){ - bit0(); - } - } +void pressed(){ + led1=1; } -void pressed() -{ - led1=1; - //rst(); - //setLights(true, 1); - //setLights(false, 5); - //setLights(true, 1); - for(int i=0; i<16; i++){ - bit0(); - } - /*setLights(true, 1); - setLights(false, 1); - setLights(true, 1);*/ - rst(); - -} - -void released() - -{ - led1=0; +void released(){ + npr.setLights(1, "000000"); + npr.rst(); + npr.setLights(12, "000000"); + led1=true; } int main() { int i=0; + char blank[100] = "000000"; + char r[100] = "ff0000"; + char g[100] = "00ff00"; + char b[100] = "0000ff"; button.rise(&pressed); button.fall(&released); - /*while(1){ - myled = 1; - wait_ns(350); - myled = 0; - }*/ - //while(1){ //CriticalSectionLock lock; //bit0(); //CriticalSectionLock unlock; - setLights(false, 1); - rst(); - setLights(false, 5); - setLights(true, 2); - setLights(true, 4); - wait(100.0); - //} + + //Une led à 0 avant d'envoyer la trame pour éviter + //le bug de trame + npr.setLights(1, "ff0000"); + npr.rst(); + //la trame + npr.setLights(5, r); + npr.setLights(2, g); + npr.setLights(4, b); + npr.rst(); + wait(100.0); }