Menu
CoddyTech

Horloge NeoPixel : les minutes

Fait partie de la section Projets du Journey Arduino de Coddy. Leçon 22 sur 24.

L’Uno ne connaît pas l’heure de la journée : millis() ne compte que depuis la mise sous tension. Le sketch démarre donc l’horloge à une heure qui y est inscrite et ajoute les secondes écoulées depuis la mise sous tension. La dernière étape ajoute des boutons pour la régler.

Gardez l’heure sous la forme d’un seul nombre : le nombre de secondes écoulées depuis minuit. 10:24:50, c’est 10 heures, 24 minutes et 50 secondes :

const unsigned long startTime = 10 * 3600UL + 24 * 60 + 50;
unsigned long now = startTime + millis() / 1000;

Le UL après 3600 fait de la somme un unsigned long. Sans lui, la carte effectue la multiplication en int, qui s’arrête à 32767, et 10 fois 3600 ne tient pas dans cette plage.

Les secondes et les minutes sont des restes : elles repartent donc chacune de 0 lorsqu’elles atteignent 60 :

int seconds = now % 60;
int minutes = (now / 60) % 60;

L’aiguille des minutes avance également d’un pixel toutes les 5 minutes, minutes / 5, et est dessinée en vert.

challenge icon

Défi

Moyen

Ajoute l’aiguille des minutes :

  • l’horloge démarre à 10:24:50 : startTime en secondes depuis minuit
  • now correspond à startTime plus le nombre de secondes écoulées depuis la mise sous tension
  • aiguille des secondes : (now % 60) / 5, bleue
  • aiguille des minutes : ((now / 60) % 60) / 5, verte ring.Color(0, 255, 0)

Appuie sur Run : à 10:25, l’aiguille des minutes avance d’un cran. Puis clique sur Check.

Essayez vous-même

#include <Adafruit_NeoPixel.h>

const int ringPin = 6;
const int pixelCount = 12;
Adafruit_NeoPixel ring(pixelCount, ringPin, NEO_GRB + NEO_KHZ800);

void setup() {
  ring.begin();
}

void loop() {
  unsigned long seconds = millis() / 1000;  // secondes depuis la mise sous tension
  int secondPixel = (seconds % 60) / 5;     // un pixel toutes les 5 secondes

  ring.clear();
  ring.setPixelColor(secondPixel, ring.Color(0, 0, 255));
  ring.show();
  delay(100);  // redessiner dix fois par seconde
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Projets

Entraînez-vous par vous-même : Playground Arduino