Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Adafruit_NeoPixel.h>
- #define PIXEL_PIN 3 // On définit le pin où est connecté la patte DATA du bandeau
- #define PIXEL_COUNT 21 // On définit le nombre de LED compris sur le Ruban de LED soit 150 pour le ruban de 5m50
- Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800); // Paramètre l'objet strip qui correspond à toute les LED du ruban
- long luminosite; //Initialise la variable luminosité
- int mode = 0; //Initialise et met la variable mode sur 0
- int BOUTON1 = 5; //Défini le Bouton 1 sur le port 5
- int BOUTON2 = 6; //Défini le Bouton 2 sur le port 6
- long valeurPot; //Initialise la variable de la valeur de potentiomètre
- int r = 255; //
- int g = 255; //
- int b = 255; // Initialise les variables de couleurs sur du blanc
- int temps = 10; //Initialise la variable temps et la met sur 10. Utile par la suite
- void allumerTout(int luminosite, int red, int green, int blue)
- {
- /*
- Allume toutes les LEDs en fonction de la luminosité et du choix des couleurs
- */
- strip.setBrightness(luminosite); //Défini la luminosité en fonction de la variable luminosité obtenue à partir du potentiomètre
- for (int i = 0 ; i < PIXEL_COUNT ; i++)
- {
- strip.setPixelColor(i, strip.Color(red, blue, green)); //Défini la couleur de chaque LED (de 0 à PIXEL_COUNT --> nombre de LEDs défini) en fonction des couleurs choisies
- }
- strip.show(); //Actualise les LEDs
- }
- void actualiserLuminosite()
- {
- /*
- Réccupère l'information du potentiomètre pour adapter la variable de luminosité
- */
- valeurPot = analogRead(A0); //Lecture du potentiomètre (entre 0 et 1015)
- luminosite = 100 * (valeurPot) / 1015; //Adaptation et actualisation de la variable (produit en croix --> entre 0 et 100)
- }
- void choisirCouleurAleatoire()
- {
- /*
- Défini une valeur aléatoire sur chaque variable de couleur. 16.77 millions de possibilités (256^3)
- */
- r = random(255); //défini la couleur rouge à une valeur entre 0 et 255 (sur 1 octet. 2^8=256 possibilités)
- g = random(255); //défini la couleur verte à une valeur entre 0 et 255 (sur 1 octet. 2^8=256 possibilités)
- b = random(255); //défini la couleur bleue à une valeur entre 0 et 255 (sur 1 octet. 2^8=256 possibilités)
- }
- void mode0()
- {
- /*
- Mode de fonctionnement initial : LEDs éteintes
- */
- allumerTout(0, 0, 0, 0); //luminosité à 0 --> éteint
- if (digitalRead(BOUTON2) == true) //Si le bouton 2 est appuyé
- {
- mode++; //On passe au mode suivant
- delay(500); //Délai de sécurité
- }
- }
- void mode1()
- {
- /*
- Premier mode de fonctionnement : Couleur unie
- Lorsque le bouton 1 est appuyé, on choisi une couleur aléatoire. On recommence jusqu'à ce que la couleur nous convienne
- */
- actualiserLuminosite(); //Actualiser la variable luminosité
- allumerTout(luminosite, r, g, b); //Allumer toutes les LEDs sur une couleur prédéfini
- if (digitalRead(BOUTON1) == true) //Si le bouton 1 est pressé,
- {
- choisirCouleurAleatoire(); //On choisi une autre couleur aléatoirement
- delay(200); //On laisse un délai de sécurité
- }
- if (digitalRead(BOUTON2) == true) //Si le bouton 2 est appuyé
- {
- mode++; //On passe au mode suivant
- delay(500); //Délai de sécurité
- }
- }
- void setup() //Initialisation
- {
- Serial.begin(9600); //Ouverture du serial pour débugguer si besoin
- randomSeed(analogRead(0)); //Défini les valeurs aléatoires
- strip.begin(); //fonction d'initialisation du bandeau LEDs
- pinMode(BOUTON1, INPUT); //Déclaration du bouton 1 en entrée
- pinMode(BOUTON2, INPUT); //IDEM pour le bouton 2
- }
- void loop()
- {
- delay(10); //Délai pour éviter une boucle trop rapide
- ////////////////////////////
- if (mode == 0) //Si le mode 0 est séléctionné
- {
- mode0(); //On lance le mode 0
- }
- if (mode == 1) //Si le mode 1 est séléctionné
- {
- mode1(); //On lance le mode 1
- }
- if(mode>1)
- {
- mode=0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement