#8Intermédiaire

Chenillard K2000 à vitesse réglable

4.5(59)
115 terminé
Chenillard K2000 à vitesse réglable
Projet avec potentiomètre qui peut ajuster la vitesse de l'animation LED K2000 en temps réel. Il combine une entrée analogique et un contrôle en boucle bidirectionnel.

Vidéo

Schéma du circuit

Chenillard K2000 à vitesse réglable - Circuit

Code source

Arduino (C++)
1// ─────────────────────────────────────────
2//   BlueGrays · bluegrays.com
3//   Chenillard K2000 à vitesse réglable
4// ─────────────────────────────────────────
5// Un potentiomètre règle la vitesse de l'effet de LED Knight Rider
6// (va-et-vient). A0 est lu à chaque pas et sa valeur de 0-1023 devient le
7// temps de pause (ms).
8//
9// Broches :
10//   D2, D3, D4, D5, D6, D7 -> 6 LED (dans l'ordre)
11//   Chaque LED avec une résistance de 330 ohm
12//   A0 -> Curseur du potentiomètre
13//   (pattes extérieures sur 5V et GND)
14
15int ledPins[] = {2, 3, 4, 5, 6, 7};   // Broches des LED dans l'ordre d'allumage
16int potValue;                         // Valeur du potentiomètre = pause (ms)
17
18void setup() {
19  // Mettre toutes les broches de LED en sortie
20  for(int i = 0; i < 6; i++) {
21    pinMode(ledPins[i], OUTPUT);
22  }
23}
24
25void loop() {
26  // Aller : de D2 à D7
27  for(int i = 0; i < 6; i++) {
28    potValue = analogRead(A0);        // Lire la vitesse (0-1023)
29    digitalWrite(ledPins[i], HIGH);
30    delay(potValue);                  // Attendre autant de ms que la valeur du potentiomètre
31    digitalWrite(ledPins[i], LOW);
32  }
33
34  // Retour : de D6 à D3. Les LED des extrémités sont sautées pour que le rebond paraisse fluide
35  for(int i = 4; i > 0; i--) {
36    potValue = analogRead(A0);
37    digitalWrite(ledPins[i], HIGH);
38    delay(potValue);
39    digitalWrite(ledPins[i], LOW);
40  }
41}
42

FAQ

En quoi ce projet apporte-t-il un enseignement différent des précédents ?▾

Il associe l'entrée analogique (potentiomètre) à une boucle bidirectionnelle : à chaque pas, lorsque la lumière avance ou recule, la valeur du potentiomètre est lue et mise à jour instantanément. C'est le principe de base permettant de modifier le comportement en fonction de la valeur du capteur.

La valeur affichée vacille, comment puis-je la stabiliser ?▾

De légères variations sont normales dans les mesures analogiques. Calculer la moyenne de plusieurs mesures ou diviser la valeur en pas plus grossiers à l'aide de la fonction map() (par exemple, par pas de 10 ms) permet de masquer ces fluctuations.

Puis-je utiliser un autre capteur à la place du potentiomètre ?▾

Oui. Tout capteur fournissant une sortie analogique, comme le LDR, peut être connecté à la même entrée A0 ; par exemple, la lumière peut varier plus rapidement à mesure que l'environnement s'assombrit. Il suffit de réajuster la plage de lecture à l'aide de la fonction map().

Quelle broche analogique dois-je utiliser ?▾

Sur l'Uno, toutes les broches comprises entre A0 et A5 permettent une lecture analogique. Assure-toi que la broche que tu utilises dans ton code correspond bien à celle du circuit ; comme les broches A4 et A5 sont également utilisées pour l'I2C, privilégie la broche A0 si tu envisages d'ajouter un écran ultérieurement.

Chenillard K2000 à vitesse réglable | BlueGrays