viky
par Mattéo électrored
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);
}
}