• Post category:Nano
  • Post comments:0 commentaire
  • Post last modified:mars 12, 2022
  • Temps de lecture :5 min de lecture

Simulateur de couleur RGB avec anneau 24 LEDS et 3 potentiomètres avec Arduino Nano *

 

 

    Prérequis :

Matériel :

  • 1 x Carte Arduino Nano
  • 1 x Anneau 24 Leds NeoPixel
  • 3 x Potentiomètres 10 KΩ
  • Fils de connexion
  • 1 x Breadboard

Version IDE :

Bibliothèque :

  • Adafruit_NeoPixel.h

 

 

Vidéo de démonstration :

 

Schéma de câblage :

 

Code :

#define PIN        9               //Définit la sortie D1 de l'anneau sur le Pin 9 
#define NUMPIXELS 24               //Définit le nombre de Led sur l'anneau
#include <Adafruit_NeoPixel.h>     //Appelle bibliothèque Neopixel
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define Potar1 A0                  //Définit le potentiomètre 1 sur le Pin A0
#define Potar2 A1                  //Définit le potentiomètre 2 sur le Pin A1
#define Potar3 A2                  //Définit le potentiomètre 3 sur le Pin A2

int Led[] = {4, 3, 2, 1, 0};       //Stock la valeur des positions des Leds à allumer + leur position au démarrage

unsigned long heureactuelle = 0;   //Variable pour stocker la valeur heure actuelle (millis)
unsigned long heureprecedente = 0; //Variable pour stocker la valeur de l'heure précédente
unsigned long interval = 100;      //Définis l'intervalle de temps pour l'animation

void setup() {
  Serial.begin(9600);              //Défini la vitesse du moniteur série
  pixels.begin();                  //INITIALIZE NeoPixel strip object
}

void loop() {
  heureactuelle = millis();        //Stock la valeur millis dans la variable heure actuelle
  //Mise à l'échelle des valeurs des potentiomètres
  int ValuePotar1 = map(analogRead(Potar1), 0, 1024, 0, 255);
  int ValuePotar2 = map(analogRead(Potar2), 0, 1024, 0, 255);
  int ValuePotar3 = map(analogRead(Potar3), 0, 1024, 0, 255);
  //Calcul temporisation
  if ((heureactuelle - heureprecedente) > interval) {
    heureprecedente = heureactuelle;
    //Incrémentation des positions des Leds à allumer
    Led[0]++;
    Led[1]++;
    Led[2]++;
    Led[3]++;
    Led[4]++;
    //Si la valeur d'une Led est > que le nombre de Led de l'anneau on la remet à 0 dans le tableau pour repartir au début.
    if (Led[0] == NUMPIXELS) {
      Led[0] = 0;
    }
    if (Led[1] == NUMPIXELS) {
      Led[1] = 0;
    }
    if (Led[2] == NUMPIXELS) {
      Led[2] = 0;
    }
    if (Led[3] == NUMPIXELS) {
      Led[3] = 0;
    }
    if (Led[4] == NUMPIXELS) {
      Led[4] = 0;
    }
    //Définit les LED à allumer avec la valeur des potentiomètres
    pixels.setPixelColor(Led[0], pixels.Color(ValuePotar1 , ValuePotar2, ValuePotar3));
    pixels.setPixelColor(Led[1], pixels.Color(ValuePotar1 , ValuePotar2, ValuePotar3));
    pixels.setPixelColor(Led[2], pixels.Color(ValuePotar1 , ValuePotar2, ValuePotar3));
    pixels.setPixelColor(Led[3], pixels.Color(ValuePotar1 , ValuePotar2, ValuePotar3));
    //On éteint la dernière LED du chenillard
    pixels.setPixelColor(Led[4], pixels.Color(0 , 0, 0));
    pixels.show(); // Envoie les couleurs de pixels mises à jour au matériel.
  }
  //Affiche la valeur des couleurs dans le moniteur série
  Serial.print(ValuePotar1);
  Serial.print(",");
  Serial.print(ValuePotar2);
  Serial.print(",");
  Serial.println(ValuePotar3);
}

 


 

Laisser un commentaire