• Post category:Nano
  • Commentaires de la publication :0 commentaire
  • Dernière modification de la publication :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