- Version
- Télécharger 59
- Taille du fichier 0.19 KB
- Date de création 9 mars 2022
- Télécharger
Mise à jour le 09/03/2022 : leds adressables 8 mm Neopixel RGB basées sur le WS2811. Les leds peuvent se raccorder en série, ce qui permet de les commander de manière indépendante avec une seule sortie d'un microcontrôleur type Arduino ou compatible.
Sommaire.
- Information technique .
- Tutoriel sur l'utilisation des led Neopixel
- Programme en 7 onglets
- Onglet principal ( configuration des entrees sorties , création d 'un menu ,etc.. )
- Onglet 01 yeux rouge . Allumage de la led 0 et 1 en rouge
- Onglet 02 yeux bleu . Allumage de la led 0 et 1 en bleu
- Onglet 03 sage mechant
- Onglet 04 sage méchant sage
- Onglet 05 led clignotant
- Onglet 06 clignotant 2
- Pour tout probléme.
- Retour au menu
Information technique |
.
Le principe des led Néopixel est d'intégrer dans un même boîtier une led rouge, verte et bleue avec un circuit qui va piloter ce montage. Ce boîtier en question nous donne accès à 4 pattes à connecter :
- La première patte est le signale de pilotage de la Led appelée data in
- La seconde étant l’alimentation de l’ensemble en 5 V
- La troisième la masse
- La quatrième étant le signal de sortie pour connecter une nouvelle Led afin de la chaîner appelée data out
Il y a quelques règles à respecter côté câblage.
Si vous devez connecter plusieurs Led sur votre Arduino’ , nous vous conseillons de prendre une alimentation externe et ne pas prendre le courant sur la carte Arduino ce qui entraîne forcément l’utilisation de la masse commune.
Je vous conseille de lire la documentation technique du constructeur :
Référence fabricant: 1734
Tutoriel sur l'utilisation des led Neopixel |
.
Code Arduino |
Onglet principal :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
// // //============================================= // //Principe de fonctionnement des led Neopixel // // 19-02-2022 // Herve Mazelin // Pour RedOhm // //============================================= #include <Adafruit_NeoPixel.h> #ifdef __AVR__ // Requis pour 16 MHz Adafruit Trinket #include <avr/power.h> #endif // Quelle broche de l'Arduino est connectée aux NeoPixels ? int pin = 33; // Combien de NeoPixels sont attachés à l'Arduino ? int numPixels = 3; // Format de couleur et débit de données NeoPixel. int pixelFormat = NEO_GRB + NEO_KHZ800; // Plutôt que de déclarer l'ensemble de l'objet NeoPixel ici, nous créons simplement // un pointeur pour un, que nous allouerons ensuite plus tard Adafruit_NeoPixel *pixels; // -- declaration des variables pour la communication // entre le pc et votre Arduino // variable recevant les données transmises par le moniteur IDE char reception_des_donnees ; // objet recevant les chaines de caracteres String chaine_caractere ; int valeur ; // -- declaration des variables pour le passage // dans les menus int passage_menu = 0 ; int passage_1 = 0 ; int passage_2 = 0 ; int passage_3 = 0 ; int passage_4 = 0 ; //********************************************************** // base de temps //********************************************************** // Declaration des variables demarrage // unsigned long-> déclare une variable de type long non signé // pour la base de temps il y a 1 000 microsecondes dans une milliseconde // et // 1 000 000 microsecondes dans une seconde. unsigned long demarrage = millis(); unsigned long demarrage2 = millis(); // -- declaration de la variable de passage pour le temps int passage_led_cli = 0 ; int passage_led_cli2 = 0 ; // variable de confirmation int ok_led_clignotant = 0; int ok_led_clignotant2 = 0; // Un programme Arduino doit impérativement contenir cette fonction // Elle ne sera exécutee une seule fois au démarrage du microcontroleur // Elle sert à configurer globalement les entrées sorties void setup() { // initialisation de la connexion série // IMPORTANT : le terminal côté PC doit être réglé sur la même valeur. Serial.begin(115200); // on attent que le port de communication soit pret while (!Serial) { ; } // créez dynamiquement un nouvel objet NeoPixel avec ces valeurs : pixels = new Adafruit_NeoPixel(numPixels, pin, pixelFormat); pixels->begin(); // INITIALISER l'objet NeoPixel (OBLIGATOIRE) // Eteint l'ensemble des led pixels->clear(); // Envoyez les couleurs de pixel pixels->show(); delay(25);//Pause } // Le programme principal s’exécute par une boucle infinie appelée Loop () void loop() { if (ok_led_clignotant == 1 ) { led_clignotant(); } if (ok_led_clignotant2 == 1 ) { led_clignotant2(); } if (passage_menu == 0 ) { Serial.println("--------------- Menu --------------"); Serial.println(); Serial.println("0 - Eteint "); Serial.println("1 - Yeux rouge "); Serial.println("2 - Yeux bleu "); Serial.println("3 - Sage / mechant "); Serial.println("4 - Sage / mechant / sage "); Serial.println("5 - Led clignotante "); Serial.println("6 - Led clignotante sur la led 1"); Serial.println(); Serial.println("Votre choix --------> "); passage_menu = 1 ; } // -- Lecture du port serie while (Serial.available() > 0) { //lecture du buffer reception_des_donnees = Serial.read(); // chaine_caractere = reception_des_donnees; delay(100); // Fonction -> toInt() // Convertit une chaîne valide en entier. La chaîne d'entrée doit // commencer par un nombre entier. Si la chaîne contient des nombres // non entiers, la fonction arrête d'effectuer la conversion. valeur = chaine_caractere.toInt(); // Affichage a l'ecran du contenu de la variable pour debug // Serial.println(reception_des_donnees); } switch (valeur) { case 0 : pixels->clear();// Eteint l'ensemble des led pixels->show();// Envoyez les couleurs de pixel //Mise a zero des variables de passage passage_1 = 0; passage_2 = 0; passage_3 = 0; passage_4 = 0; //Mise a 0 de la variable memoire ok_led_clignotant = 0; ok_led_clignotant2 = 0; break; case 1 : if (passage_1 == 0) { yeux_rouge(); Serial.println("vous avez choisi les yeux rouge "); passage_1 = 1; passage_2 = 0; passage_3 = 0; passage_4 = 0; } break; case 2 : if (passage_2 == 0) { yeux_bleu(); Serial.println("vous avez choisi les yeux bleu "); passage_2 = 1; passage_1 = 0; passage_3 = 0; passage_4 = 0; } break; case 3 : if (passage_3 == 0) { sage_mechant() ; Serial.println("vous avez choisi les yeux sage_mechant "); passage_3 = 1; passage_1 = 0; passage_2 = 0; passage_4 = 0; } break; case 4 : if (passage_4 == 0) { sage_mechant_sage() ; Serial.println("vous avez choisi les yeux sage_mechant_sage "); passage_4 = 1; passage_1 = 0; passage_2 = 0; passage_3 = 0; } break; case 5: ok_led_clignotant = 1; break; case 6: ok_led_clignotant2 = 1; break; } |
.
Onglet : 01_yeux_rouge
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// // // Affichage de la couleur rouge sur la led 0 et 1 void yeux_rouge() { // Ici, nous utilisons une couleur rouge modérément brillante : // vert / rouge / bleu pixels->setPixelColor(0, pixels->Color(0, 127,0)); pixels->setPixelColor(1, pixels->Color(0, 127,0)); pixels->setPixelColor(2, pixels->Color(0, 0,0)); // Envoyez les couleurs de pixel mise à jour au matériel. pixels->show(); } |
.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// // // Affichage de la couleur bleu sur la led 0 et 1 void yeux_bleu() { // Ici, nous utilisons une couleur bleu modérément brillante : // vert / rouge / bleu pixels->setPixelColor(0, pixels->Color(0, 0, 127)); pixels->setPixelColor(1, pixels->Color(0, 0, 127)); // Envoyez les couleurs des led avec mise à jour au matériel. pixels->show(); } |
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
// // // sage_mechant void sage_mechant() { for (int i = 0 ; i < 127 ; i++) { // vert / rouge / bleu pixels->setPixelColor(0, pixels->Color(0, 0, 127 - i)); pixels->setPixelColor(1, pixels->Color(0, 0, 127 - i)); // Envoyez les couleurs des led avec mise à jour au matériel. pixels->show(); delay(10);// Pause avant le prochain passage dans la boucle } for (int i = 0 ; i < 255 ; i++) { // vert / rouge / bleu pixels->setPixelColor(0, pixels->Color(0, 1 + i, 0)); pixels->setPixelColor(1, pixels->Color(0, 1 + i, 0)); // Envoyez les couleurs des led avec mise à jour au matériel. pixels->show(); delay(10);// Pause avant le prochain passage dans la boucle } } |
.
.
Onglet : 04_sage_mechant_sage_
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
// // // sage_mechant_sage void sage_mechant_sage () { // ---------------------- sage - for (int i = 0 ; i < 127 ; i++) { pixels->setPixelColor(0, pixels->Color(0, 0, 127 - i)); pixels->setPixelColor(1, pixels->Color(0, 0, 127 - i)); // Envoyez les couleurs des led avec mise à jour au matériel. pixels->show(); delay(30);// Pause avant le prochain passage dans la boucle } // ---------------------- mechant + for (int i = 0 ; i < 255 ; i++) { pixels->setPixelColor(0, pixels->Color(0, 1 + i, 0)); pixels->setPixelColor(1, pixels->Color(0, 1 + i, 0)); // Envoyez les couleurs des led avec mise à jour au matériel. pixels->show(); // rampe de monte de la brillance delay (10); } // ---------------------- mechant - for (int i = 0 ; i < 255 ; i++) { pixels->setPixelColor(0, pixels->Color(0, 255 - i, 0)); pixels->setPixelColor(1, pixels->Color(0, 255 - i, 0)); // Envoyez les couleurs de pixel mise à jour au matériel. pixels->show(); delay (10); } // ---------------------- sage + for (int i = 0 ; i < 127 ; i++) { pixels->setPixelColor(0, pixels->Color(0, 0, 0 + i)); pixels->setPixelColor(1, pixels->Color(0, 0, 0 + i)); // Envoyez les couleurs de pixel mise à jour au matériel. pixels->show(); delay (30); } } |
.
.
Onglet : 05_led_clignotant
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
// // // Led clignotant // void led_clignotant() { // la ligne if effectue la difference entre le temps actuel et le // temps de debut de boucle . if ((millis() - demarrage > 500) && (passage_led_cli == 0)) { // vert / rouge / bleu // Envoie de l'information a led pixels->setPixelColor(2, pixels->Color(0, 255, 0)); // Envoyez les couleurs des led avec mise à jour au matériel. pixels->show(); // on reinitialise la variable demarrage avec le contenu de millis() demarrage = millis(); passage_led_cli = 1 ; } else if ((millis() - demarrage > 500) && (passage_led_cli == 1)) { //Envoie de l'information a led6 pixels->setPixelColor(2, pixels->Color(0, 0, 0)); // Envoyez les couleurs des led avec mise à jour au matériel. pixels->show(); // on reinitialise la variable demarrage avec le contenu de millis() demarrage = millis(); // mise a zero la variable passage_led_cli afin de redemarrer un cycle // de clignotement passage_led_cli = 0 ; } } |
.
.
Onglet : 06_clignotant_2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
/ // //Led clignotant2 // void led_clignotant2() { // la ligne if effectue la difference entre le temps actuel et le // temps de debut de boucle . if ((millis() - demarrage2 > 250) && (passage_led_cli2 == 0)) { //preparation de l'envoie de l'information a led pixels->setPixelColor(1, pixels->Color(127, 0, 0)); // Envoyez les couleurs des led avec mise à jour au matériel. pixels->show(); // on reinitialise la variable demarrage2 avec le contenu de millis() demarrage2 = millis(); // mise a 1 de la variable afin d'eteindre la led passage_led_cli2 = 1 ; } else if ((millis() - demarrage2 > 250) && (passage_led_cli2 == 1)) { //Envoie de l'information a led pixels->setPixelColor(1, pixels->Color(0, 0, 0)); // Envoyez les couleurs des led avec mise à jour au matériel. pixels->show(); // on reinitialise la variable demarrage2 avec le contenu de millis() demarrage2 = millis(); // mise a zero la variable passage_led_cli2 afin de redemarrer un cycle // de clignotement passage_led_cli2 = 0 ; } } |
.
.
Pour tout probléme |
.
Pour tout problème de téléchargement ou pour nous suivre sur les réseaux sociaux voici les plateformes sur lesquelles nous éditons.
Cliquez sur celle qui vous intéresse .
Nous avons mis aussi à votre disposition un groupe RedOhm sur Facebook ou vous trouverez un maximun de documentation technique .