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
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);
}
Nombre de vues: 935