top of page

       code du ruban led:

​

#include <VirtualWire.h>  // on initialise la librairie virtualwire qui est la librairie qui gère la reception de données

uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;

long randNumber;     // variable qui stokera des valeurs tirées au hasard 
int unBoutona  = 0;
int unBoutonb = 0;
int unBoutonc = 0;
int a;

unsigned long previousMillis = 0;  // fait partie de la fonction millis
long interval = 3000;   // on initialise la variable intervalle a 3000 ( elle pourra etre modifiée )
    
void setup() {

pinMode(8, INPUT);      //bouton 1
pinMode(10, INPUT);     // bouton 2
pinMode(12, INPUT);      //bouton 3
pinMode(2, OUTPUT);     // sortie vers la vitrine
pinMode(3, OUTPUT);
pinMode(5, OUTPUT);  // le reste sont des sorties propres au ruban led et a la vitrine
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);


Serial.begin(9600);               
vw_setup(2000);                  
vw_set_rx_pin(11);     // recepteur 433mhz sur pin 11           
vw_rx_start();         // on debute la reception

randomSeed(analogRead(0));

}

void loop() {

unsigned long currentMillis = millis();    // on debute la fonction millis

unBoutona = digitalRead(8);
unBoutonb = digitalRead(12);
unBoutonc = digitalRead(10);

if(unBoutona == HIGH){
randNumber = random(1, 6);   // si on appuis sur le bouton on choisi un nombre entre un et 6 (randnumber = couleur tirée au sort), on execute la boucle couleur);
Serial.println(randNumber);
couleur();
delay(300);
}
if(unBoutonb == HIGH){
a = 1;   // mode 1
}
if(unBoutonc == HIGH){
a = 2;    // mode 2
}
if(a == 0){
analogWrite(3, 0); analogWrite(5, 0); analogWrite(6, 0); 
digitalWrite(7, LOW); 
}

if(a == 1){
interval = 8000;
}
if(a == 2){
interval = 5000;
}
if(a == 3){
interval = 3000;
}
if(a == 4){
interval = 1000;
}
if(a == 5){
interval = 50;
}
if(a > 0){
digitalWrite(7, HIGH); 
}

if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
randNumber = random(1, 6);             //si millis vaut l'intervalle alor on choisi un nombre entre 1 et six (randnumber) et on execute la boucle couleur
Serial.println(randNumber);
couleur();
}

  if (vw_get_message(buf, &buflen))
    {
    int i; 
    Serial.println("");
    for (i = 0; i < buflen; i++)  // on attend de recevoir un message
    {  
    Serial.write(buf[i]);
    } 
   if(strcmp("cof", (char*)buf) == 0)
    {
     a = 0;     // si je recois cof, j'eteint le ruban led
    }
   if(strcmp("cfu", (char*)buf) == 0)
    {
     a = 1;     // (mode 1) l'intervalle vaut 8 secondes
    }
    if(strcmp("cfd", (char*)buf) == 0)
    {
     a = 2;    // (mode 2) l'intervalle vaut 5 secondes
    }
    if(strcmp("cft", (char*)buf) == 0)
    {   
    a = 3;    // (mode 3) l'intervalle vaut 3 secondes
    }
    if(strcmp("cfq", (char*)buf) == 0)
    {
     a = 4;  // (mode 4) l'intervalle vaut 1 secondes
    }
     if(strcmp("cfc", (char*)buf) == 0)
    {
     a = 5; // (mode 5) c'est le mode flash
    }
    if(strcmp("csc", (char*)buf) == 0)
    {
    a = 1;
    }
    if(strcmp("von", (char*)buf) == 0)
    {
    digitalWrite(2, HIGH);        // si on recois von, on allume la vitrine
    }
    if(strcmp("vof", (char*)buf) == 0)
    {
    digitalWrite(2, LOW);     // si on recois vof, on eteint la vitrine
    }

    
 }
}

void couleur() {    // void avec quelques couleurs programées
if(randNumber == 1){
analogWrite(3, 200); analogWrite(5, 0); analogWrite(6, 0);
}
if(randNumber == 2){
analogWrite(3, 0); analogWrite(5, 200); analogWrite(6, 0);
}
if(randNumber == 3){
analogWrite(3, 0); analogWrite(5, 0); analogWrite(6, 200);
}
if(randNumber == 4){
analogWrite(3, 200); analogWrite(5, 200); analogWrite(6, 200);
}
if(randNumber == 5){
analogWrite(3, 200); analogWrite(5, 0); analogWrite(6, 200);
}
if(randNumber == 6){
analogWrite(3, 100); analogWrite(5, 50); analogWrite(6, 100);
}
}
 

bottom of page