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

Dependencies:   lcd neoPixelRing12 view2 BSP_DISCO_F746NG view1 button

main.cpp

Committer:
Rhamao
Date:
2020-05-28
Revision:
6:91e478ee227e
Parent:
5:e8f8a8037256
Child:
7:1887c4e4b5de

File content as of revision 6:91e478ee227e:

#include "mbed.h"
#include "Thread.h"
#include "rtos_idle.h"
#include "mbed_critical.h"
 
#define  USE_CRITICAL_SECTION_LOCK      1   // Set 0 to see race condition

InterruptIn button(USER_BUTTON)
;
DigitalOut myled(D8);
DigitalOut led1(LED1);

void bit0(){
    myled = 1; 
    wait_ns(190); 
    myled = 0;
    wait_ns(740);
}

void bit1(){
    myled = 1; 
    wait_ns(600); 
    myled = 0;
    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;
    //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;
}


int main()
{
     int i=0;
     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);
    //}
}