Horloge Géante

Bonjour

J’aimerais construire une horloge géante a base de ruban leds WS2812.

Chaque segment comporte 4 leds et il y aura deux leds entre les heures et les minutes pour le clignotement des secondes.(cela fera un total de 114 leds)

Suivant le code ci-dessous il fonctionne parfaitement avec des segments de 1 led.

Comment puis je le modifier pour pouvoir l’adapter a ma situation.

Pour pouvoir faire clignoter les deux leds des secondes j’arrive a modifier le code mais pas pour le restant.

Merci d’avance et dans l’attente de vos réponses.

Clock3.ino (5.13 KB)

Salut

Si cela fonctionne avec une LED, cela doit fonctionner avec 4, si la tension est suffisante. Suivant la couleur des LEDS, leur tension de fonctionnement (Forward Voltage) est différente : Rouge 1.6V jusqu'à 3V pour du blanc.

As-tu suffisamment de tension d'alimentation ?

@+

Bonsoir

Se n'est pas un problème d'alimentation mais le programme est prévu pour faire fonctionner 29leds alors que je veux le faire en 114 leds.(j'ai une alim de PC modifiée)

Je ne sais pas comment modifier le programme pour lui dire d'allumer 4 leds par segment plutôt que une led par segment.

Cordialement.

A ce stade un schéma de ce que tu as fait s'impose, avec les tensions d'alimentation.

@+

je vais modifié ma boucle for pour remplacer la valeur 6 par la valeur 27

Je te donne 1/2 heure pour corriger ton message.... lis les messages épinglés.

jfs: Je te donne 1/2 heure pour corriger ton message.... lis les messages épinglés.

:grin:

TIC . TAC TIC , TAC

Artouste: :grin:

TIC . TAC TIC , TAC

Sadique... :D

Fallait mettre le code entre les balises.... pas le virer complétement :grin:

Bonjour

J’ai modifié le code est il correct ?

#include <DS3232RTC.h>
#include <Time.h> 
#include <Wire.h> 
#include "FastLED.h"
#define NUM_LEDS 114 // Number of LED controles (remember I have 3 leds / controler
#define COLOR_ORDER BRG  // Define color order for your strip
#define DATA_PIN 6  // Data pin for led comunication

CRGB leds[NUM_LEDS]; // Define LEDs strip
byte digits[10][7] = {{0,1,1,1,1,1,1},  // Digit 0
                     {0,1,0,0,0,0,1},   // Digit 1
                     {1,1,1,0,1,1,0},   // Digit 2
                     {1,1,1,0,0,1,1},   // Digit 3
                     {1,1,0,1,0,0,1},   // Digit 4
                     {1,0,1,1,0,1,1},   // Digit 5
                     {1,0,1,1,1,1,1},   // Digit 6
                     {0,1,1,0,0,0,1},   // Digit 7
                     {1,1,1,1,1,1,1},   // Digit 8
                     {1,1,1,1,0,1,1}};  // Digit 9 | 2D Array for numbers on 7 segment
bool Dot = true;  //Dot state
bool DST = false; //DST state
int ledColor = 0x0000FF; // Color used (in hex)
void setup(){ 
//  Serial.begin(9600); 
//  Wire.begin(); 
  LEDS.addLeds<WS2811, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS); // Set LED strip type
  LEDS.setBrightness(255); // Set initial brightness
  pinMode(2, INPUT_PULLUP); // Define DST adjust button pin
  pinMode(4, INPUT_PULLUP); // Define Minutes adjust button pin
  pinMode(5, INPUT_PULLUP); // Define Hours adjust button pin
} 
// Get time in a single number, if hours will be a single digit then time will be displayed 155 instead of 0155
int GetTime(){
  tmElements_t Now;
  RTC.read(Now);
  //time_t Now = RTC.Now();// Getting the current Time and storing it into a DateTime object 
  int hour=Now.Hour;
  int minutes=Now.Minute;
  int second =Now.Second;
  if (second % 2==0) {Dot = false;}
    else {Dot = true;};
  return (hour*100+minutes);
  };

// Check Light sensor and set brightness accordingly
void BrightnessCheck(){
  const byte sensorPin = 3; // light sensor pin
  const byte brightnessLow = 5; // Low brightness value
  const byte brightnessHigh = 255; // High brightness value
  int sensorValue = digitalRead(sensorPin); // Read sensor
  if (sensorValue == 0) {LEDS.setBrightness(brightnessHigh);}
  else {LEDS.setBrightness(brightnessLow);}  
  };
  
// Convert time to array needet for display 
void TimeToArray(){
  int Now = GetTime();  // Get time
  int cursor = 0;
  
//  Serial.print("Time is: ");Serial.println(Now);
  if (DST){   // if DST is true then add one hour
   Now+=100;
//   Serial.print("DST is ON, time set to : ");Serial.println(Now);
  }; 
  if (Dot){leds[56]=ledColor;
           leds[57]=ledColor;}
      else {leds[56]=0x000000;
            leds[57]=0x000000;
    };
  for(int i=1;i<=4;i++){
    int digit = Now % 10; // get last digit in time
    if (i==1){
//      Serial.print("Digit 4 is : ");Serial.print(digit);Serial.print(" ");
      cursor =86;
      for(int k=0; k<=27;k++){ 
//        Serial.print(digits[digit][k]);
        if (digits[digit][k]== 1){leds[cursor]=ledColor;}
         else if (digits[digit][k]==0){leds[cursor]=0x000000;};
         cursor ++;
        };
//      Serial.println();
      }
    else if (i==2){
//      Serial.print("Digit 3 is : ");Serial.print(digit);Serial.print(" ");
      cursor -=58;
      for(int k=0; k<=27;k++){ 
//        Serial.print(digits[digit][k]);
        if (digits[digit][k]== 1){leds[cursor]=ledColor;}
         else if (digits[digit][k]==0){leds[cursor]=0x000000;};
         cursor ++;
        };
//      Serial.println();
      }
    else if (i==3){
//      Serial.print("Digit 2 is : ");Serial.print(digit);Serial.print(" ");
      cursor =28;
      for(int k=0; k<=27;k++){ 
//        Serial.print(digits[digit][k]);
        if (digits[digit][k]== 1){leds[cursor]=ledColor;}
         else if (digits[digit][k]==0){leds[cursor]=0x000000;};
         cursor ++;
        };
//      Serial.println();
      }
    else if (i==4){
//      Serial.print("Digit 1 is : ");Serial.print(digit);Serial.print(" ");
      cursor =0;
      for(int k=0; k<=27;k++){ 
//        Serial.print(digits[digit][k]);
        if (digits[digit][k]== 1){leds[cursor]=ledColor;}
         else if (digits[digit][k]==0){leds[cursor]=0x000000;};
         cursor ++;
        };
//      Serial.println();
      }
    Now /= 10;
  }; 
};
void DSTcheck(){
   int buttonDST = digitalRead(2);
//   Serial.print("DST is: ");Serial.println(DST);
   if (buttonDST == LOW){
    if (DST){
      DST=false;
//      Serial.print("Switching DST to: ");Serial.println(DST);
      }
      else if (!DST){
        DST=true;
//        Serial.print("Switching DST to: ");Serial.println(DST);
      };
   delay(500);   
   };
  }

void TimeAdjust(){
  int buttonH = digitalRead(5);
  int buttonM = digitalRead(4);
  if (buttonH == LOW || buttonM == LOW){
    delay(500);
    tmElements_t Now;
    RTC.read(Now);
    int hour=Now.Hour;
    int minutes=Now.Minute;
    int second =Now.Second;
      if (buttonH == LOW){
        if (Now.Hour== 23){Now.Hour=0;}
          else {Now.Hour += 1;};
        }else {
          if (Now.Minute== 59){Now.Minute=0;}
          else {Now.Minute += 1;};
          };
    RTC.write(Now); 
    }
  }
void loop()  // Main loop
{ 
  BrightnessCheck(); // Check brightness
  DSTcheck(); // Check DST
  TimeAdjust(); // Check to se if time is geting modified
  TimeToArray(); // Get leds array with required configuration
  FastLED.show(); // Display leds array
}

Voici le schéma de cablage et le prototype

Le tout est alimenté en 5 Volts par une alimentation de PC (le problème n'est pas un soucis de tension car lorsque je fait un test des 114 leds j'arrive a les allumer toutes en meme temps)

Cordialement

Je ne comprends pas vos histoires de tensions. Les LEDs WS2812 doivent recevoir une tension de 5V, c’est le courant consommé qui va varier en fonction de la luminosité et de la couleur.

Une LED consomme au maximum 60mA, 114 LEDs vont consommer au maximum 6.84A. C’est vraiment le maximum, si tu mets la luminosité à fond (LEDS.setBrightness(255); ) et toutes les LEDs allumées et blanches en même temps.

Donc il faut choisir une alimentation qui délivre cette intensité ou plus. Quelle intensité peut fournir ton alim de PC ?

Dans ton code, il faut définir la broche DATA_PIN en OUTPUT
La broche sensorPin (3) n’est pas définie en INPUT dans le setup

Tu peux alléger ton code car cette suite d’instructions se retrouve à plusieurs endroits :

      for(int k=0; k<=27;k++){ 
//        Serial.print(digits[digit][k]);
        if (digits[digit][k]== 1){leds[cursor]=ledColor;}
         else if (digits[digit][k]==0){leds[cursor]=0x000000;};
         cursor ++;
        };
//      Serial.println();

Tu peux en faire une fonction :

void setLEDS()
{
      for(int k=0; k<=27;k++){ 
//        Serial.print(digits[digit][k]);
        if (digits[digit][k]== 1){leds[cursor]=ledColor;}
         else if (digits[digit][k]==0){leds[cursor]=0x000000;};
         cursor ++;
        };
//      Serial.println();
}

et remplacer chaque bloc par l’appel de la fonction

setLEDS();

Si je comprends bien (entre les lignes car tu n’expliques pas vraiment), tu affiches des chiffres genre ‘HH:MM’ (heures:minutes) et chaque chiffre est une matrice de 4x7. Ca donne 474+2 = 114 LEDs. Le compte y est.

Les matrices sont définies ici:

byte digits[10][7] = {{0,1,1,1,1,1,1},  // Digit 0
                     {0,1,0,0,0,0,1},   // Digit 1
                     {1,1,1,0,1,1,0},   // Digit 2
                     {1,1,1,0,0,1,1},   // Digit 3
                     {1,1,0,1,0,0,1},   // Digit 4
                     {1,0,1,1,0,1,1},   // Digit 5
                     {1,0,1,1,1,1,1},   // Digit 6
                     {0,1,1,0,0,0,1},   // Digit 7
                     {1,1,1,1,1,1,1},   // Digit 8
                     {1,1,1,1,0,1,1}};  // Digit 9 | 2D Array for numbers on 7 segment

mais je n’arrive pas à comprendre comment elles sont définies. Il doit manquer des choses ici ou alors, il faut m’expliquer comment afficher un chiffre avec ça…

Bonjour

je viens de m’apercevoir que ma matrice n’est pas bonne elle est pour 1 led par segment.

(lesept) tu as bien cerné ma demande et en effet je n’ai pas forcément été claire mais comme tu as expliqué c’est exactement ce que je veux faire une horloge avec affichage ‘HH:MM’ avec le clignotement de deux leds pour les secondes.

j’ai modifié le code et je ferais un test ce soir en réel.

#include <DS3232RTC.h>
#include <Time.h> 
#include <Wire.h> 
#include "FastLED.h"
#define NUM_LEDS 114
#define COLOR_ORDER BRG  // Define color order for your strip
#define DATA_PIN 6  // Data pin for led comunication

CRGB leds[NUM_LEDS]; // Define LEDs strip
byte digits[10][28] = {
{0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, //0
{0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0}, //1
{1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0}, //2
{1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0}, //3
{1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1}, //4
{1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1}, //5
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1}, //6
{0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0}, //7
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, //8
{1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, //9 | 2D Array for numbers on 7 segment
};
bool Dot = true;  //Dot state
bool DST = false; //DST state
int ledColor = 0x0000FF; // Color used (in hex)
void setup(){ 
//  Serial.begin(9600); 
//  Wire.begin(); 
LEDS.addLeds<WS2811, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS); // Set LED strip type
LEDS.setBrightness(255); // Set initial brightness
pinMode(2, INPUT_PULLUP); // Define DST adjust button pin
pinMode(4, INPUT_PULLUP); // Define Minutes adjust button pin
pinMode(5, INPUT_PULLUP); // Define Hours adjust button pin
} 
// Get time in a single number, if hours will be a single digit then time will be displayed 155 instead of 0155
int GetTime(){
tmElements_t Now;
RTC.read(Now);
//time_t Now = RTC.Now();// Getting the current Time and storing it into a DateTime object 
int hour=Now.Hour;
int minutes=Now.Minute;
int second =Now.Second;
if (second % 2==0) {Dot = false;}
  else {Dot = true;};
return (hour*100+minutes);
};

// Check Light sensor and set brightness accordingly
void BrightnessCheck(){
const byte sensorPin = 3; // light sensor pin
const byte brightnessLow = 5; // Low brightness value
const byte brightnessHigh = 255; // High brightness value
int sensorValue = digitalRead(sensorPin); // Read sensor
if (sensorValue == 0) {LEDS.setBrightness(brightnessHigh);}
else {LEDS.setBrightness(brightnessLow);}  
};

// Convert time to array needet for display 
void TimeToArray(){
int Now = GetTime();  // Get time
int cursor = 0;

//  Serial.print("Time is: ");Serial.println(Now);
if (DST){   // if DST is true then add one hour
 Now+=100;
//   Serial.print("DST is ON, time set to : ");Serial.println(Now);
}; 
if (Dot){leds[56]=ledColor;
         leds[57]=ledColor;}
    else {leds[56]=0x000000;
          leds[57]=0x000000;
  };
for(int i=1;i<=4;i++){
  int digit = Now % 10; // get last digit in time
  if (i==1){
//      Serial.print("Digit 4 is : ");Serial.print(digit);Serial.print(" ");
    cursor =86;
    for(int k=0; k<=27;k++){ 
//        Serial.print(digits[digit][k]);
      if (digits[digit][k]== 1){leds[cursor]=ledColor;}
       else if (digits[digit][k]==0){leds[cursor]=0x000000;};
       cursor ++;
      };
//      Serial.println();
    }
  else if (i==2){
//      Serial.print("Digit 3 is : ");Serial.print(digit);Serial.print(" ");
    cursor -=58;
    for(int k=0; k<=27;k++){ 
//        Serial.print(digits[digit][k]);
      if (digits[digit][k]== 1){leds[cursor]=ledColor;}
       else if (digits[digit][k]==0){leds[cursor]=0x000000;};
       cursor ++;
      };
//      Serial.println();
    }
  else if (i==3){
//      Serial.print("Digit 2 is : ");Serial.print(digit);Serial.print(" ");
    cursor =28;
    for(int k=0; k<=27;k++){ 
//        Serial.print(digits[digit][k]);
      if (digits[digit][k]== 1){leds[cursor]=ledColor;}
       else if (digits[digit][k]==0){leds[cursor]=0x000000;};
       cursor ++;
      };
//      Serial.println();
    }
  else if (i==4){
//      Serial.print("Digit1 is : ");Serial.print(digit);Serial.print(" ");
    cursor =0;
    for(int k=0; k<=27;k++){ 
//        Serial.print(digits[digit][k]);
      if (digits[digit][k]== 1){leds[cursor]=ledColor;}
       else if (digits[digit][k]==0){leds[cursor]=0x000000;};
       cursor ++;
      };
//      Serial.println();
    }
  Now /= 10;
}; 
};
void DSTcheck(){
 int buttonDST = digitalRead(2);
//   Serial.print("DST is: ");Serial.println(DST);
 if (buttonDST == LOW){
  if (DST){
    DST=false;
//      Serial.print("Switching DST to: ");Serial.println(DST);
    }
    else if (!DST){
      DST=true;
//        Serial.print("Switching DST to: ");Serial.println(DST);
    };
 delay(500);   
 };
}

void TimeAdjust(){
int buttonH = digitalRead(5);
int buttonM = digitalRead(4);
if (buttonH == LOW || buttonM == LOW){
  delay(500);
  tmElements_t Now;
  RTC.read(Now);
  int hour=Now.Hour;
  int minutes=Now.Minute;
  int second =Now.Second;
    if (buttonH == LOW){
      if (Now.Hour== 23){Now.Hour=0;}
        else {Now.Hour += 1;};
      }else {
        if (Now.Minute== 59){Now.Minute=0;}
        else {Now.Minute += 1;};
        };
  RTC.write(Now); 
  }
}
void loop()  // Main loop
{ 
BrightnessCheck(); // Check brightness
DSTcheck(); // Check DST
TimeAdjust(); // Check to se if time is geting modified
TimeToArray(); // Get leds array with required configuration
FastLED.show(); // Display leds array
}

Je sens que le TIC TAC va recommencer.

@+

Pourquoi lorsque je veux insérer un code il faut d'abord que je poste le message et après je le modifie pour le mettre entre les balises ?

En haut à gauche de la fenêtre d’édition il y a ce bouton </>

Tu cliques dessus et tu mets ton code dedans lors de l’écriture du message.

j’ai le bouton </> que lorsque je modifie le message…

Encore un des mystères de ce forum....

Bon, je pars de ton code qui apparaît dans la réponse 12.

La fonction importante est TimeToArray, que j’analyse. Je vais la simplifier puisque certaines lignes apparaissent plusieurs fois.

D’abord, ta variable Now est un int (issu de la fonction GetTime, c’est OK) qui a le même nom qu’une autre variable de type tmelement_t. C’est correct, il n’y a pas de conflit, mais je n’aime pas trop car ça peut prêter à confusion. Je la renomme en CurrentTime.

On ne met pas de ; après une accolade fermante.

Ces lignes :

        if (digits[digit][k] == 1) {
          leds[cursor] = ledColor;
        }
        else if (digits[digit][k] == 0) {
          leds[cursor] = 0x000000;
        }

peuvent être remplacées par

leds[cursor] = ledColor*digits[digit][k];

Enfin, l’affichage (en fait l’allumage des LEDs correspondant au chiffre à afficher) se fait ici :

      for (int k = 0; k <= 27; k++) {
        //        Serial.print(digits[digit][k]);
        leds[cursor] = ledColor * digits[digit][k];
        cursor ++;
      }

Je comprends que cursor représente la première LED du chiffre à afficher : c’est un multiple de 28 pour les heures (HH) et tu ajoutes 2 pour les minutes (MM) pour tenir compte du “:” qui clignote sur deux secondes.
Je pense qu’il faudrait changer la ligne
        leds[cursor] = ledColor * digits[digit][k];en        leds[cursor+k] = ledColor * digits[digit][k];tout simplement.

Je viens de suivre tes conseils et viens de modifier le code.

#include <DS3232RTC.h>
#include <Time.h> 
#include <Wire.h> 
#include "FastLED.h"
#define NUM_LEDS 114 // Number of LED controles (remember I have 3 leds / controler
#define COLOR_ORDER BRG  // Define color order for your strip
#define DATA_PIN 6  // Data pin for led comunication

CRGB leds[NUM_LEDS]; // Define LEDs strip
byte digits[10][28] = {
  {0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, //0
  {0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0}, //1
  {1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0}, //2
  {1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0}, //3
  {1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1}, //4
  {1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1}, //5
  {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1}, //6
  {0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0}, //7
  {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, //8
  {1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, //9 | 2D Array for numbers on 7 segment
  };
bool Dot = true;  //Dot state
bool DST = false; //DST state
int ledColor = 0x0000FF; // Color used (in hex)
void setup(){ 
//  Serial.begin(9600); 
//  Wire.begin(); 
  LEDS.addLeds<WS2811, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS); // Set LED strip type
  LEDS.setBrightness(255); // Set initial brightness
  pinMode(2, INPUT_PULLUP); // Define DST adjust button pin
  pinMode(4, INPUT_PULLUP); // Define Minutes adjust button pin
  pinMode(5, INPUT_PULLUP); // Define Hours adjust button pin
} 
// Get time in a single number, if hours will be a single digit then time will be displayed 155 instead of 0155
int GetTime(){
  tmElements_t Now;
  RTC.read(Now);
  //time_t Now = RTC.Now();// Getting the current Time and storing it into a DateTime object 
  int hour=Now.Hour;
  int minutes=Now.Minute;
  int second =Now.Second;
  if (second % 2==0) {Dot = false;}
    else {Dot = true;};
  return (hour*100+minutes);
  };

// Check Light sensor and set brightness accordingly
void BrightnessCheck(){
  const byte sensorPin = 3; // light sensor pin
  const byte brightnessLow = 5; // Low brightness value
  const byte brightnessHigh = 255; // High brightness value
  int sensorValue = digitalRead(sensorPin); // Read sensor
  if (sensorValue == 0) {LEDS.setBrightness(brightnessHigh);}
  else {LEDS.setBrightness(brightnessLow);}  
  };
  
// Convert time to array needet for display 
void TimeToArray(){
  int Now = GetTime();  // Get time
  int cursor = 0;
  
//  Serial.print("Time is: ");Serial.println(Now);
  if (DST){   // if DST is true then add one hour
   Now+=100;
//   Serial.print("DST is ON, time set to : ");Serial.println(Now);
  }; 
  if (Dot){leds[56]=ledColor;
           leds[57]=ledColor;}
      else {leds[56]=0x000000;
            leds[57]=0x000000;
    };
  for(int i=1;i<=4;i++){
    int digit = Now % 10; // get last digit in time
    if (i==1){
//      Serial.print("Digit 4 is : ");Serial.print(digit);Serial.print(" ");
      cursor =86;
   for (int k = 0; k <= 27; k++) {
        //        Serial.print(digits[digit][k]);
        leds[cursor+k] = ledColor * digits[digit][k];
        cursor ++;
      }
//      Serial.println();
      }
    else if (i==2){
//      Serial.print("Digit 3 is : ");Serial.print(digit);Serial.print(" ");
      cursor -=58;
   for (int k = 0; k <= 27; k++) {
        //        Serial.print(digits[digit][k]);
        leds[cursor+k] = ledColor * digits[digit][k];
        cursor ++;
      }
//      Serial.println();
      }
    else if (i==3){
//      Serial.print("Digit 2 is : ");Serial.print(digit);Serial.print(" ");
      cursor =28;
   for (int k = 0; k <= 27; k++) {
        //        Serial.print(digits[digit][k]);
        leds[cursor+k] = ledColor * digits[digit][k];
        cursor ++;
      }
//      Serial.println();
      }
    else if (i==4){
//      Serial.print("Digit 1 is : ");Serial.print(digit);Serial.print(" ");
      cursor =0;
   for (int k = 0; k <= 27; k++) {
        //        Serial.print(digits[digit][k]);
        leds[cursor+k] = ledColor * digits[digit][k];
        cursor ++;
      }
//      Serial.println();
      }
    Now /= 10;
  }; 
};
void DSTcheck(){
   int buttonDST = digitalRead(2);
//   Serial.print("DST is: ");Serial.println(DST);
   if (buttonDST == LOW){
    if (DST){
      DST=false;
//      Serial.print("Switching DST to: ");Serial.println(DST);
      }
      else if (!DST){
        DST=true;
//        Serial.print("Switching DST to: ");Serial.println(DST);
      };
   delay(500);   
   };
  }

void TimeAdjust(){
  int buttonH = digitalRead(5);
  int buttonM = digitalRead(4);
  if (buttonH == LOW || buttonM == LOW){
    delay(500);
    tmElements_t Now;
    RTC.read(Now);
    int hour=Now.Hour;
    int minutes=Now.Minute;
    int second =Now.Second;
      if (buttonH == LOW){
        if (Now.Hour== 23){Now.Hour=0;}
          else {Now.Hour += 1;};
        }else {
          if (Now.Minute== 59){Now.Minute=0;}
          else {Now.Minute += 1;};
          };
    RTC.write(Now); 
    }
  }
void loop()  // Main loop
{ 
  BrightnessCheck(); // Check brightness
  DSTcheck(); // Check DST
  TimeAdjust(); // Check to se if time is geting modified
  TimeToArray(); // Get leds array with required configuration
  FastLED.show(); // Display leds array
}

Si je comprend bien je doit supprimer tout les ; après les accolades fermante ?