Horloge lumineuse Neopixel Arduino

Le ws2812b LED adressable (Neopixel strip) clock est un projet qui peut être construit sur l’Arduino Nano. Le capteur de température et d’humidité DHT11 (DHT22) ou le capteur de pression atmosphérique BMP180 peuvent être utilisés pour ce projet. Nous avons présenté une variante de l’horloge électronique Arduino avec détecteur DHT11 avec un schéma de montage de l’appareil et un programme de travail pour le microcontrôleur Arduino.


Ce dont vous aurez besoin

Matériel supplémentaire sur ce sujet:

  1. Guirlande sur Arduino et bande LED ws2812b
  2. Veilleuse de nuit à base Arduino et ws2812b
  3. Éclairage intelligent Arduino avec télécommande

Horloge avec thermomètre sur Neopixel led matrix

Horloge sur Neopixel led matrix Arduino
Horloge sur Neopixel led matrix Arduino

Pour assembler le projet « Horloge lumineuse Neopixel Arduino », vous devrez fabriquer un boîtier pour la matrice de LED, fixer la bande adressable et la souder comme indiqué dans le schéma ci-dessous. Si vous avez déjà une matrice avec des LED ws2812b adressable et que le circuit est différent, vous pouvez également l’utiliser en modifiant les paramètres de connexion de la matrice au microcontrôleur Arduino dans le code du programme.

Fabriques horloge lumineuse led matrix Arduino
Fabriques horloge lumineuse led matrix Arduino

Après avoir assemblé le boîtier de l’horloge à bande LED adressable ws2812b, la matrice et les modules requis doivent être connectés au microcontrôleur Arduino. Voici le schéma de câblage pour l’auto-assemblage d’une horloge à bande LED adressable avec thermomètre. Toutes les bibliothèques nécessaires au projet, le plan de découpe du paquet sur la machine laser et les croquis fournis peuvent être téléchargés dans une seule archive ici.

Créer horloge lumineuse + thermomètre sur matrix Arduino

Le circuit électrique. Horloge lumineuse avec DHT11
Le circuit électrique. Horloge lumineuse avec DHT11
DS1307 i2c Arduino Uno Arduino Nano Arduino Mega
GND GND GND GND
VCC 5V 5V 5V
SDA A4 A4 20
SCL A5 A5 21

Une seule alimentation de 5 volts avec un courant suffisant peut être utilisée pour alimenter la matrice de LED ainsi que le microcontrôleur avec tous les capteurs et modules. La bande adressable est connectée au port 9 via une résistance de 200-400 ohms afin de protéger la broche contre le grillage. Le module d’horloge est connecté au microcontrôleur via le bus IIC aux ports A4 et A5, si la carte Arduino Mega est utilisée, aux ports 20 et 21.

Programme Arduino pour horloge NeoPixel matrix et DHT11

#include "Adafruit_GFX.h"
#include "Adafruit_NeoMatrix.h"
#include "Adafruit_NeoPixel.h"

#include "DHT.h"

#include "iarduino_RTC.h"
iarduino_RTC time(RTC_DS3231);

#define DHT_PIN 2 // pin pour DHT11
#define LED_PIN 9 // pin pour ws2812
#define WIDTH 30 // pixels dans une ligne de la matrice 
#define ROWS 7 // le nombre de lignes de la matrice

boolean humidity = true; // imprimer l'humidité de l'air - true/false
unsigned int timer = 50;
unsigned int pausa1 = 10000;
unsigned int pausa2 = 1000;
unsigned int brightness = 200;

Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(WIDTH, ROWS, 1, 1, LED_PIN,
                            NEO_MATRIX_RIGHT     + NEO_MATRIX_BOTTOM +
                            NEO_MATRIX_ROWS + NEO_MATRIX_ZIGZAG,
                            NEO_GRB            + NEO_KHZ800);

DHT dht(DHT_PIN, DHT11);
byte w, t, h;
int x = WIDTH;

void setup() {
  dht.begin();
  Serial.begin(9600);

  matrix.begin();
  matrix.fillScreen(0);
  matrix.setTextColor(matrix.Color(0, 0, 255));
  matrix.setTextWrap(false);
  matrix.setBrightness(brightness);

  time.begin();
  // sec, min, hour, date, month, year, day of the week
  time.settime(0, 35, 17, 12, 14, 21, 2);
}

void loop() {

  t = dht.readTemperature();
  h = dht.readHumidity();
  Serial.print(t);
  Serial.println("°C");
  Serial.print(h);
  Serial.println("%");
  Serial.println(time.gettime("H:i"));

  matrix.setBrightness(0);
  matrix.fillScreen(0);
  w = 1;

  // == apparition/disparition progressive de l'heure de la journée == //
  while (w == 1) {
    for (byte i = 0; i < brightness; i++) {
      matrix.setBrightness(i);
      matrix.setCursor(0, 0);
      matrix.print(time.gettime("H:i"));
      matrix.show();
      delay(timer / 10);
    }
     delay(pausa1);
     for (byte i = brightness; i > 0; i--) {
      matrix.setBrightness(i);
      matrix.setCursor(0, 0);
      matrix.print(time.gettime("H:i"));
      matrix.show();
      delay(timer / 10);
    }
    matrix.setBrightness(0);
    delay(timer * 10);
    w = 2;
  }

  // == apparition/disparition progressive de la température == //
  while (w == 2) {
    for (byte i = 0; i < brightness; i++) {
      matrix.setBrightness(i);
      matrix.setCursor(4, 0);
      matrix.print(t);
      matrix.print("'C");
      matrix.show();
      delay(timer / 10);
    }
     delay(pausa2);
     for (byte i = brightness; i > 0; i--) {
      matrix.setBrightness(i);
      matrix.setCursor(4, 0);
      matrix.print(t);
      matrix.print("'C");
      matrix.show();
      delay(timer / 10);
    }
    matrix.setBrightness(0);
    delay(timer * 2);
    if (humidity == true) { w = 3; }
    if (humidity == false) { w = 0; }
  }

  // == apparition/disparition progressive de l'humidité dans l'air == //
  while (w == 3) {
     for (byte i = 0; i < brightness; i++) {
      matrix.setBrightness(i);
      matrix.setCursor(6, 0);
      matrix.print(h);
      matrix.print("%");
      matrix.show();
      delay(timer / 10);
    }
     delay(pausa2);
     for (byte i = brightness; i > 0; i--) {
      matrix.setBrightness(i);
      matrix.setCursor(6, 0);
      matrix.print(h);
      matrix.print("%");
      matrix.show();
      delay(timer / 10);
    }
    matrix.setBrightness(0);
    delay(timer * 10);
    w = 0;
  }
 
}

Explication du code pour horloge avec matrix LED adressable:

  1. après avoir réglé l’heure sur le module horloge, commentez time.settime(); et rechargez le programme dans la carte – sinon l’heure sera réglée après chaque redémarrage Arduino;
  2. set boolean humidity = false; si vous ne voulez pas que l’humidité de la matrice soit sortie.

Conclusion. Le projet d’horloge à bande LED adressable peut être développé et amélioré à l’infini, par exemple en ajoutant une fonction permettant de régler la luminosité et la couleur de la matrice ou en faisant en sorte que la matrice ws2812b puisse être contrôlée via Bluetooth ou Wi-Fi. Si vous avez des questions ou des commentaires sur ce projet – laissez-les dans les commentaires de ce post, nous répondrons sûrement à toutes vos questions.





5 Replies to “Fabriques une horloge lumineuse Neopixel Arduino”

  1. Hello, vu le nombre de LEDs (210) il faut alimenter les rubans directement avec l’alim et pas par l’arduino ! (donc pas le Vin mais le + de l’alim 5V. direct (et mettre les GND en commun)
    1 led peut consommer 0,06 Ampères (en blanc et luminosité à fond)
    donc pour 210 led : 0,06 x 210 = 12,6 Ampères !!!
    faut avoir une bonne alimentation

    1. À moins que les 210 LEDs ne soient allumées simultanément à leur luminosité maximale, l’alimentation provenant du VIN sera suffisante pour ce projet. Mais en général, je suis d’accord avec vous, merci pour votre clarification

  2. DHT 11
    Merci pour ce petit proget
    chez moi la sonde ne me donne que des valeurs ( 0°c et 1% hum)
    quelqu’un peux m’aider
    Merci…..

  3. Désespéré voilà le code erreur que me renvoi l’IDE après avoir collé le code présent sur cet exemple ?
    exit status 1
    Compilation error: exit status 1

    1. Mise à jour de la liste des bibliothèques requises pour le projet. Veillez à installer toutes les bibliothèques répertoriées.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. Découvrez comment les données de vos commentaires sont traitées.