IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Changement couleur Wordclock


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    bricoleur retraité
    Inscrit en
    Janvier 2024
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Suisse

    Informations professionnelles :
    Activité : bricoleur retraité

    Informations forums :
    Inscription : Janvier 2024
    Messages : 28
    Par défaut Changement couleur Wordclock
    Bonjour, suite a une ancienne discutions grasse a votre aide j'ai pu faire fonctionner une horloge Word lock, maintenant j'aimerais ajouter le changement de couleur.
    J'ai un programme qui fonctionne et j'ai voulu l'ajouter au programme de l'horloge mais j'ai plusieurs erreurs
    Voici le programme de l'horloge
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    #include <Adafruit_NeoPixel.h>
    #include "RTClib.h"
     
    #define RGBLEDPIN 6
    #define N_LEDS 121
     
    const byte hours_switch = 5;
    const byte minutes_switch = 4;
     
    int hours_offset = 0;
    int minutes_offset = 0;
     
    int the_hours = 0;
    int the_minutes = 0;
    bool pm = false;
     
    // initialisation module RTC
    RTC_DS3231 rtc;
     
    // initialisation NeoPixel
    Adafruit_NeoPixel strip = Adafruit_NeoPixel(N_LEDS, RGBLEDPIN, NEO_GRB + NEO_KHZ800);
     
    // luminosité
    int the_brightness = 50;
     
    // couleurs
    uint32_t color_white = strip.Color(255, 0, 255);
     
    // tableau des mots
    int words[31][15] = {
     
      {0, 1, 3, 4, 5}, // #0 / IL EST
     
      {7, 8, 9}, // #1 / UNE
      {18, 19, 20, 21}, // #2 / DEUX
      {12, 13, 14, 15, 16}, // #3 / TROIS
      {22, 23, 24, 25, 26, 27}, // #4 / QUATRE
      {29, 30, 31, 32}, // #5 / CINQ
      {40, 41, 42}, // #6 / SIX
      {35, 36, 37, 38}, // #7 / SEPT
      {44, 45, 46, 47}, // #8 / HUIT
      {48, 49, 50, 51}, // #9 / NEUF
      {52, 53, 54}, // #10 / DIX
      {62, 63, 64, 65}, // #11 / ONZE
     
      {56, 57, 58, 59, 60}, // #12 / HEURE
      {55, 56, 57, 58, 59, 60}, // #13 / HEURES
     
      {73, 74, 75, 76}, // #14 / MIDI
      {67, 68, 69, 70, 71, 72}, // #15 / MINUIT
     
      {100, 101, 102, 103}, // #16 / CINQ (2)
      {89, 90, 91}, // #17 / DIX (2)
      {86, 87, 111, 112, 113, 114, 115}, // #18 / ET QUART
      {105, 106, 107, 108, 109}, // #19 / VINGT
      {100, 101, 102, 103, 105, 106, 107, 108, 109}, // #20 / VINGT CINQ
      {86, 87, 93, 94, 95, 96, 97}, // #21 / ET DEMIE
      {80, 81, 82, 83, 84, 105, 106, 107, 108, 109, 100, 101, 102, 103}, // #22 / MOINS VINGT-CINQ
      {80, 81, 82, 83, 84, 105, 106, 107, 108, 109}, // #23 / MOINS VINGT
      {80, 81, 82, 83, 84, 77, 78, 111, 112, 113, 114, 115}, // #24 / MOINS LE QUART
      {80, 81, 82, 83, 84, 89, 90, 91}, // #25 / MOINS DIX
      {80, 81, 82, 83, 84, 100, 101, 102, 103}, // #26 / MOINS CINQ
     
      {117}, // #27 / 1 POINT
      {117, 118}, // #28 / 2 POINTS
      {117, 118, 119}, // #29 / 3 POINTS
      {117, 118, 119, 120} // #30 / 4 POINTS
     
    };
     
    void setup() {
     
      Serial.begin(9600);
     
      if (!rtc.begin()) {
        Serial.println("Couldn't find RTC");
        Serial.flush();
        abort();
      }
     
      if (rtc.lostPower()) {
        Serial.println("RTC lost power, let's set the time!");
        rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
      }
     
      pinMode(hours_switch, INPUT_PULLUP);
      pinMode(minutes_switch, INPUT_PULLUP);
     
      strip.begin();
      strip.show();
     
      strip.setBrightness(the_brightness);
     
    }
     
    void loop() {
     
    if (digitalRead(hours_switch) == LOW) {
     hours_offset++;
     }
     
    if (digitalRead(minutes_switch) == LOW) {
     minutes_offset++;
     }
     
      strip.clear();
     
      int what_time_is_it[5] = {};
      what_time_is_it[0] = 0; // IL EST
     
      DateTime now = rtc.now();
     
      the_hours = now.hour();
      the_minutes = now.minute();
     
      the_hours += hours_offset;
      the_minutes += minutes_offset;
     
      while (the_minutes > 59) {
        the_minutes -= 60;
        the_hours++;
      }
     
      while (the_hours > 23) {
        the_hours -= 24;
      }
     
      if (the_minutes >= 5 && the_minutes < 10) {
        what_time_is_it[3] = 16; // CINQ (2)
      }
      else if (the_minutes >= 10 && the_minutes < 15) {
        what_time_is_it[3] = 17; // DIX (2)
      }
      else if (the_minutes >= 15 && the_minutes < 20) {
        what_time_is_it[3] = 18; // ET QUART
      }
      else if (the_minutes >= 20 && the_minutes < 25) {
        what_time_is_it[3] = 19; // VINGT
      }
      else if (the_minutes >= 25 && the_minutes < 30) {
        what_time_is_it[3] = 20; // VINGT-CINQ
      }
      else if (the_minutes >= 30 && the_minutes < 35) {
        what_time_is_it[3] = 21; // ET DEMIE
      }
      else if (the_minutes >= 35 && the_minutes < 40) {
        what_time_is_it[3] = 22; // MOINS VINGT-CINQ
      }
      else if (the_minutes >= 40 && the_minutes < 45) {
        what_time_is_it[3] = 23; // MOINS VINGT
      }
      else if (the_minutes >= 45 && the_minutes < 50) {
        what_time_is_it[3] = 24; // MOINS LE QUART
      }
      else if (the_minutes >= 50 && the_minutes < 55) {
        what_time_is_it[3] = 25; // MOINS DIX
      }
      else if (the_minutes >= 55) {
        what_time_is_it[3] = 26; // MOINS CINQ
      }
     
      if (the_minutes >= 35) {
        the_hours++;
      }
     
      if (the_hours > 12) {
        the_hours -= 12;
        pm = true;
      }
      else {
        pm = false;
      }
     
      int the_minutes_last_digit = the_minutes % 10;
     
      switch (the_minutes_last_digit) {
     
        case 1:
        case 6:
          what_time_is_it[4] = 27; // 1 POINT
          break;
     
        case 2:
        case 7:
          what_time_is_it[4] = 28; // 2 POINTS
          break;
     
        case 3:
        case 8:
          what_time_is_it[4] = 29; // 3 POINTS
          break;
     
        case 4:
        case 9:
          what_time_is_it[4] = 30; // 4 POINTS
          break;
     
      }
     
      if (the_hours == 12 && !pm) {
        what_time_is_it[1] = 14; // MIDI
      }
      else if (the_hours == 0 || (the_hours == 12 && pm)) {
        what_time_is_it[1] = 15; // MINUIT
      }
      else {
        what_time_is_it[1] = the_hours;
      }
     
      if (the_hours == 1) {
        what_time_is_it[2] = 12; // HEURE
      }
      else if (the_hours > 1 && the_hours < 12) {
        what_time_is_it[2] = 13; // HEURES
      }
     
      int m = sizeof(words[0]) / sizeof(words[0][0]);
      int n = sizeof(what_time_is_it) / sizeof(what_time_is_it[0]);
     
      for(int j = 0; j < n; j++) {
        for(int i = 0; i < m; i++) {
          strip.setPixelColor(words[what_time_is_it[j]][i], color_white);
        }
      }
     
      strip.show();
     
      delay(500);
     
    }

    et voici le code pour le changement de couleurs


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    #include <Adafruit_NeoPixel.h>
     
    #define BUTTON_PIN   3
     
    #define PIXEL_PIN    6  // Digital IO pin connected to the NeoPixels.
     
    #define PIXEL_COUNT 22  // Number of NeoPixels
     
     
    Adafruit_NeoPixel strip(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);
     
     
    boolean oldState = HIGH;
    int     mode     = 0;    // Currently-active animation mode, 0-9
     
    void setup() {
      pinMode(BUTTON_PIN, INPUT_PULLUP);
      strip.begin(); // Initialize NeoPixel strip object (REQUIRED)
      strip.show();  // Initialize all pixels to 'off'
    }
     
    void loop() {
     
      boolean newState = digitalRead(BUTTON_PIN);
     
     
      if((newState == LOW) && (oldState == HIGH)) {
     
        delay(20);
     
        newState = digitalRead(BUTTON_PIN);
     
        if(newState == LOW) {      // Yes, still low
          if(++mode > 8) mode = 0; // Advance to next mode, wrap around after #8
          switch(mode) {           // Start the new animation...
            case 0:
              colorWipe(strip.Color(  127,   127,   127), 20);    // Blanc
              break;
            case 1:
              colorWipe(strip.Color(255,   0,   0), 20);    // Rouge
              break;
            case 2:
              colorWipe(strip.Color(  0, 255,   0), 20);    // Vert
              break;
            case 3:
              colorWipe(strip.Color(  0,   0, 255), 20);    // Bleu
              break;
            case 4:
              colorWipe(strip.Color(127, 127, 127), 20); // Blanc
              break;
            case 5:
              colorWipe(strip.Color(255,   0,   255), 20); // Violet
              break;
            case 6:
              colorWipe(strip.Color(  255,   255, 0), 20); // Vert clair
              break;
            case 7:
             colorWipe(strip.Color(  0,   255,   255), 20);    // Blanc
              break;
            case 8:
           colorWipe(strip.Color(  255,   127,   255), 20);    // Blanc
              break;
          }
        }
      }
     
    }
     
     
    void colorWipe(uint32_t color, int wait) {
      for(int i=0; i<strip.numPixels(); i++) { // For each pixel in strip...
        strip.setPixelColor(i, color);         //  Set pixel's color (in RAM)
        strip.show();                          //  Update strip to match
        delay(wait);                           //  Pause for a moment
      }
    }
    Débutant j'airais besoin de votre aide pour combiner ces deux programmes.

  2. #2
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 933
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 933
    Par défaut
    il faut un cahier des charges précis, combiner comment ?

  3. #3
    Membre averti
    Homme Profil pro
    bricoleur retraité
    Inscrit en
    Janvier 2024
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Suisse

    Informations professionnelles :
    Activité : bricoleur retraité

    Informations forums :
    Inscription : Janvier 2024
    Messages : 28
    Par défaut
    Bonsoir, oui je comprend un peu vague comme explication.
    Mon objectif est de rajouter un bouton sur mon programme de base pour pouvoir changer la couleur de l'affichage.
    Le deuxième programme et un programme qui change la couleur de l'affichage a chaque pression du bouton couleur.
    Après plusieurs essai je n'arrive pas a ajouter ce programme dans le programme principal.
    Mon objectif est d'avoir une horloge ou par pression sur un bouton je puisse changer la couleur de l'affichage (choix entre 8 couleur)
    Merci et bonne soirée

  4. #4
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 933
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 933
    Par défaut
    prenez une bibliothèque bouton pour vous simplifier la vie.

    au début de la loop vous testez l'appui sur le bouton, si c'est le cas vous changez la couleur.
    le reste du code est celui de la World Clock

  5. #5
    Membre averti
    Homme Profil pro
    bricoleur retraité
    Inscrit en
    Janvier 2024
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Suisse

    Informations professionnelles :
    Activité : bricoleur retraité

    Informations forums :
    Inscription : Janvier 2024
    Messages : 28
    Par défaut
    Bonjour, j'ai fait un programme avec 1 bouton et une bande led et j'arrive a changer la couleur, mais quand je combine les deux programmes j'ai l'erreur 'colorWipe' was not declared in this scope
    ci-dessous le programme pour voir si vous pouvez m'aider a résoudre ce problème.
    Encore merci et bonne soirée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
     
     
    #include <Adafruit_NeoPixel.h>
    #include "RTClib.h"
     
    #define RGBLEDPIN 6
    #define N_LEDS 121
     
    const byte hours_switch = 5;
    const byte minutes_switch = 4;
    const byte colors_switch = 3;
    int hours_offset = 0;
    int minutes_offset = 0;
     
    int the_hours = 0;
    int the_minutes = 0;
    bool pm = false;
     
    // initialisation module RTC
    RTC_DS3231 rtc;
     
    // initialisation NeoPixel
    //Adafruit_NeoPixel strip = Adafruit_NeoPixel(N_LEDS, RGBLEDPIN, NEO_GRB + NEO_KHZ800);
    Adafruit_NeoPixel strip(N_LEDS, RGBLEDPIN, NEO_GRB + NEO_KHZ800);
     
    // luminosité
    int the_brightness = 50;
     
    int colors_offset = 0;
    boolean oldState = HIGH;
    int     mode     = 0;    // Currently-active animation mode, 0-9
     
    // couleurs
    //uint32_t color_white = strip.Color(255, 0, 255);
     
    // tableau des mots
    int words[31][15] = {
     
      {0, 1, 3, 4, 5}, // #0 / IL EST
     
      {7, 8, 9}, // #1 / UNE
      {18, 19, 20, 21}, // #2 / DEUX
      {12, 13, 14, 15, 16}, // #3 / TROIS
      {22, 23, 24, 25, 26, 27}, // #4 / QUATRE
      {29, 30, 31, 32}, // #5 / CINQ
      {40, 41, 42}, // #6 / SIX
      {35, 36, 37, 38}, // #7 / SEPT
      {44, 45, 46, 47}, // #8 / HUIT
      {48, 49, 50, 51}, // #9 / NEUF
      {52, 53, 54}, // #10 / DIX
      {62, 63, 64, 65}, // #11 / ONZE
     
      {56, 57, 58, 59, 60}, // #12 / HEURE
      {55, 56, 57, 58, 59, 60}, // #13 / HEURES
     
      {73, 74, 75, 76}, // #14 / MIDI
      {67, 68, 69, 70, 71, 72}, // #15 / MINUIT
     
      {100, 101, 102, 103}, // #16 / CINQ (2)
      {89, 90, 91}, // #17 / DIX (2)
      {86, 87, 111, 112, 113, 114, 115}, // #18 / ET QUART
      {105, 106, 107, 108, 109}, // #19 / VINGT
      {100, 101, 102, 103, 105, 106, 107, 108, 109}, // #20 / VINGT CINQ
      {86, 87, 93, 94, 95, 96, 97}, // #21 / ET DEMIE
      {80, 81, 82, 83, 84, 105, 106, 107, 108, 109, 100, 101, 102, 103}, // #22 / MOINS VINGT-CINQ
      {80, 81, 82, 83, 84, 105, 106, 107, 108, 109}, // #23 / MOINS VINGT
      {80, 81, 82, 83, 84, 77, 78, 111, 112, 113, 114, 115}, // #24 / MOINS LE QUART
      {80, 81, 82, 83, 84, 89, 90, 91}, // #25 / MOINS DIX
      {80, 81, 82, 83, 84, 100, 101, 102, 103}, // #26 / MOINS CINQ
     
      {117}, // #27 / 1 POINT
      {117, 118}, // #28 / 2 POINTS
      {117, 118, 119}, // #29 / 3 POINTS
      {117, 118, 119, 120} // #30 / 4 POINTS
     
    };
     
    void setup() {
     
      Serial.begin(9600);
     
      if (!rtc.begin()) {
        Serial.println("Couldn't find RTC");
        Serial.flush();
        abort();
      }
     
      if (rtc.lostPower()) {
        Serial.println("RTC lost power, let's set the time!");
        rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
      }
     
      pinMode(hours_switch, INPUT_PULLUP);
      pinMode(minutes_switch, INPUT_PULLUP);
      pinMode(colors_switch, INPUT_PULLUP);
     
      strip.begin();
      strip.show();
     
      strip.setBrightness(the_brightness);
     
    }
     
    void loop() {
     
    if (digitalRead(hours_switch) == LOW) {
     hours_offset++;
     }
     
    if (digitalRead(minutes_switch) == LOW) {
     minutes_offset++;
     }
     
      strip.clear();
     
      int what_time_is_it[5] = {};
      what_time_is_it[0] = 0; // IL EST
     
      DateTime now = rtc.now();
     
      the_hours = now.hour();
      the_minutes = now.minute();
     
      the_hours += hours_offset;
      the_minutes += minutes_offset;
     
      while (the_minutes > 59) {
        the_minutes -= 60;
        the_hours++;
      }
     
      while (the_hours > 23) {
        the_hours -= 24;
      }
     
      if (the_minutes >= 5 && the_minutes < 10) {
        what_time_is_it[3] = 16; // CINQ (2)
      }
      else if (the_minutes >= 10 && the_minutes < 15) {
        what_time_is_it[3] = 17; // DIX (2)
      }
      else if (the_minutes >= 15 && the_minutes < 20) {
        what_time_is_it[3] = 18; // ET QUART
      }
      else if (the_minutes >= 20 && the_minutes < 25) {
        what_time_is_it[3] = 19; // VINGT
      }
      else if (the_minutes >= 25 && the_minutes < 30) {
        what_time_is_it[3] = 20; // VINGT-CINQ
      }
      else if (the_minutes >= 30 && the_minutes < 35) {
        what_time_is_it[3] = 21; // ET DEMIE
      }
      else if (the_minutes >= 35 && the_minutes < 40) {
        what_time_is_it[3] = 22; // MOINS VINGT-CINQ
      }
      else if (the_minutes >= 40 && the_minutes < 45) {
        what_time_is_it[3] = 23; // MOINS VINGT
      }
      else if (the_minutes >= 45 && the_minutes < 50) {
        what_time_is_it[3] = 24; // MOINS LE QUART
      }
      else if (the_minutes >= 50 && the_minutes < 55) {
        what_time_is_it[3] = 25; // MOINS DIX
      }
      else if (the_minutes >= 55) {
        what_time_is_it[3] = 26; // MOINS CINQ
      }
     
      if (the_minutes >= 35) {
        the_hours++;
      }
     
      if (the_hours > 12) {
        the_hours -= 12;
        pm = true;
      }
      else {
        pm = false;
      }
     
      int the_minutes_last_digit = the_minutes % 10;
     
      switch (the_minutes_last_digit) {
     
        case 1:
        case 6:
          what_time_is_it[4] = 27; // 1 POINT
          break;
     
        case 2:
        case 7:
          what_time_is_it[4] = 28; // 2 POINTS
          break;
     
        case 3:
        case 8:
          what_time_is_it[4] = 29; // 3 POINTS
          break;
     
        case 4:
        case 9:
          what_time_is_it[4] = 30; // 4 POINTS
          break;
     
      }
     
      if (the_hours == 12 && !pm) {
        what_time_is_it[1] = 14; // MIDI
      }
      else if (the_hours == 0 || (the_hours == 12 && pm)) {
        what_time_is_it[1] = 15; // MINUIT
      }
      else {
        what_time_is_it[1] = the_hours;
      }
     
      if (the_hours == 1) {
        what_time_is_it[2] = 12; // HEURE
      }
      else if (the_hours > 1 && the_hours < 12) {
        what_time_is_it[2] = 13; // HEURES
      }
     
      int m = sizeof(words[0]) / sizeof(words[0][0]);
      int n = sizeof(what_time_is_it) / sizeof(what_time_is_it[0]);
     
      for(int j = 0; j < n; j++) {
        for(int i = 0; i < m; i++) {
    //      strip.setPixelColor(words[what_time_is_it[j]][i], color_white);
     
     boolean newState = digitalRead(colors_switch);
     
     
      if((newState == LOW) && (oldState == HIGH)) {
     
        delay(20);
     
        newState = digitalRead(colors_switch);
     
        if(newState == LOW) {      // Yes, still low
          if(++mode > 8) mode = 0; // Advance to next mode, wrap around after #8
          switch(mode) {           // Start the new animation...
            case 0:
              colorWipe(strip.Color(  127,   127,   127), 20);    // Blanc
              break;
            case 1:
              colorWipe(strip.Color(255,   0,   0), 20);    // Rouge
              break;
            case 2:
              colorWipe(strip.Color(  0, 255,   0), 20);    // Vert
              break;
            case 3:
              colorWipe(strip.Color(  0,   0, 255), 20);    // Bleu
              break;
            case 4:
              colorWipe(strip.Color(127, 127, 127), 20); // Blanc
              break;
            case 5:
              colorWipe(strip.Color(255,   0,   255), 20); // Violet
              break;
            case 6:
              colorWipe(strip.Color(  255,   255, 0), 20); // Vert clair
              break;
            case 7:
             colorWipe(strip.Color(  0,   255,   255), 20);    // Blanc
              break;
            case 8:
           colorWipe(strip.Color(  255,   127,   255), 20);    // Blanc
              break;
          }
        }
      }
     
    }
     
    void colorWipe(uint32_t color, int wait) {
      for(int i=0; i<strip.numPixels(); i++) { // For each pixel in strip...
        strip.setPixelColor(i, color);         //  Set pixel's color (in RAM)
        strip.show();                          //  Update strip to match
        delay(wait);                           //  Pause for a moment
      }
    }

  6. #6
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 933
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 933
    Par défaut
    indentez le code dans l'IDE (ctrl-T) vous verrez que vous avez un soucis d'équilibre des accolades, la loop() n'est pas fermée (il doit en manquer 2)

  7. #7
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 794
    Par défaut
    Hello,

    Ce sont les for des lignes 228 et 229 qui ne sont pas fermés.

  8. #8
    Membre averti
    Homme Profil pro
    bricoleur retraité
    Inscrit en
    Janvier 2024
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Suisse

    Informations professionnelles :
    Activité : bricoleur retraité

    Informations forums :
    Inscription : Janvier 2024
    Messages : 28
    Par défaut
    oui j'ai bien modifié le programme et j'arrive bien a changer les couleurs mais le problème est que toutes les led sont allumées et l'affichage de l'horloge n'est pas pris en conte.

  9. #9
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 933
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 933
    Par défaut
    postez le nouveau code

  10. #10
    Membre averti
    Homme Profil pro
    bricoleur retraité
    Inscrit en
    Janvier 2024
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Suisse

    Informations professionnelles :
    Activité : bricoleur retraité

    Informations forums :
    Inscription : Janvier 2024
    Messages : 28
    Par défaut
    Voilà le code, merci pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
     
    #include <Adafruit_NeoPixel.h>
    #include "RTClib.h"
     
    #define RGBLEDPIN 6
    #define N_LEDS 121
     
    const byte hours_switch = 5;
    const byte minutes_switch = 4;
    const byte colors_switch = 3;
    int hours_offset = 0;
    int minutes_offset = 0;
     
    int the_hours = 0;
    int the_minutes = 0;
    bool pm = false;
     
    // initialisation module RTC
    RTC_DS3231 rtc;
     
    // initialisation NeoPixel
    //Adafruit_NeoPixel strip = Adafruit_NeoPixel(N_LEDS, RGBLEDPIN, NEO_GRB + NEO_KHZ800);
    Adafruit_NeoPixel strip(N_LEDS, RGBLEDPIN, NEO_GRB + NEO_KHZ800);
     
    // luminosité
    int the_brightness = 50;
     
    int colors_offset = 0;
    boolean oldState = HIGH;
    int     mode     = 0;    // Currently-active animation mode, 0-9
     
    // couleurs
    //uint32_t color_white = strip.Color(255, 0, 255);
     
    // tableau des mots
    int words[31][15] = {
     
      {0, 1, 3, 4, 5}, // #0 / IL EST
     
      {7, 8, 9}, // #1 / UNE
      {18, 19, 20, 21}, // #2 / DEUX
      {12, 13, 14, 15, 16}, // #3 / TROIS
      {22, 23, 24, 25, 26, 27}, // #4 / QUATRE
      {29, 30, 31, 32}, // #5 / CINQ
      {40, 41, 42}, // #6 / SIX
      {35, 36, 37, 38}, // #7 / SEPT
      {44, 45, 46, 47}, // #8 / HUIT
      {48, 49, 50, 51}, // #9 / NEUF
      {52, 53, 54}, // #10 / DIX
      {62, 63, 64, 65}, // #11 / ONZE
     
      {56, 57, 58, 59, 60}, // #12 / HEURE
      {55, 56, 57, 58, 59, 60}, // #13 / HEURES
     
      {73, 74, 75, 76}, // #14 / MIDI
      {67, 68, 69, 70, 71, 72}, // #15 / MINUIT
     
      {100, 101, 102, 103}, // #16 / CINQ (2)
      {89, 90, 91}, // #17 / DIX (2)
      {86, 87, 111, 112, 113, 114, 115}, // #18 / ET QUART
      {105, 106, 107, 108, 109}, // #19 / VINGT
      {100, 101, 102, 103, 105, 106, 107, 108, 109}, // #20 / VINGT CINQ
      {86, 87, 93, 94, 95, 96, 97}, // #21 / ET DEMIE
      {80, 81, 82, 83, 84, 105, 106, 107, 108, 109, 100, 101, 102, 103}, // #22 / MOINS VINGT-CINQ
      {80, 81, 82, 83, 84, 105, 106, 107, 108, 109}, // #23 / MOINS VINGT
      {80, 81, 82, 83, 84, 77, 78, 111, 112, 113, 114, 115}, // #24 / MOINS LE QUART
      {80, 81, 82, 83, 84, 89, 90, 91}, // #25 / MOINS DIX
      {80, 81, 82, 83, 84, 100, 101, 102, 103}, // #26 / MOINS CINQ
     
      {117}, // #27 / 1 POINT
      {117, 118}, // #28 / 2 POINTS
      {117, 118, 119}, // #29 / 3 POINTS
      {117, 118, 119, 120} // #30 / 4 POINTS
     
    };
     
    void setup() {
     
      Serial.begin(9600);
     
      if (!rtc.begin()) {
        Serial.println("Couldn't find RTC");
        Serial.flush();
        abort();
      }
     
      if (rtc.lostPower()) {
        Serial.println("RTC lost power, let's set the time!");
        rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
      }
     
      pinMode(hours_switch, INPUT_PULLUP);
      pinMode(minutes_switch, INPUT_PULLUP);
      pinMode(colors_switch, INPUT_PULLUP);
     
      strip.begin();
      strip.show();
     
      strip.setBrightness(the_brightness);
     
    }
     
    void loop() {
     
      if (digitalRead(hours_switch) == LOW) {
        hours_offset++;
      }
     
      if (digitalRead(minutes_switch) == LOW) {
        minutes_offset++;
      }
     
      strip.clear();
     
      int what_time_is_it[5] = {};
      what_time_is_it[0] = 0; // IL EST
     
      DateTime now = rtc.now();
     
      the_hours = now.hour();
      the_minutes = now.minute();
     
      the_hours += hours_offset;
      the_minutes += minutes_offset;
     
      while (the_minutes > 59) {
        the_minutes -= 60;
        the_hours++;
      }
     
      while (the_hours > 23) {
        the_hours -= 24;
      }
     
      if (the_minutes >= 5 && the_minutes < 10) {
        what_time_is_it[3] = 16; // CINQ (2)
      }
      else if (the_minutes >= 10 && the_minutes < 15) {
        what_time_is_it[3] = 17; // DIX (2)
      }
      else if (the_minutes >= 15 && the_minutes < 20) {
        what_time_is_it[3] = 18; // ET QUART
      }
      else if (the_minutes >= 20 && the_minutes < 25) {
        what_time_is_it[3] = 19; // VINGT
      }
      else if (the_minutes >= 25 && the_minutes < 30) {
        what_time_is_it[3] = 20; // VINGT-CINQ
      }
      else if (the_minutes >= 30 && the_minutes < 35) {
        what_time_is_it[3] = 21; // ET DEMIE
      }
      else if (the_minutes >= 35 && the_minutes < 40) {
        what_time_is_it[3] = 22; // MOINS VINGT-CINQ
      }
      else if (the_minutes >= 40 && the_minutes < 45) {
        what_time_is_it[3] = 23; // MOINS VINGT
      }
      else if (the_minutes >= 45 && the_minutes < 50) {
        what_time_is_it[3] = 24; // MOINS LE QUART
      }
      else if (the_minutes >= 50 && the_minutes < 55) {
        what_time_is_it[3] = 25; // MOINS DIX
      }
      else if (the_minutes >= 55) {
        what_time_is_it[3] = 26; // MOINS CINQ
      }
     
      if (the_minutes >= 35) {
        the_hours++;
      }
     
      if (the_hours > 12) {
        the_hours -= 12;
        pm = true;
      }
      else {
        pm = false;
      }
     
      int the_minutes_last_digit = the_minutes % 10;
     
      switch (the_minutes_last_digit) {
     
        case 1:
        case 6:
          what_time_is_it[4] = 27; // 1 POINT
          break;
     
        case 2:
        case 7:
          what_time_is_it[4] = 28; // 2 POINTS
          break;
     
        case 3:
        case 8:
          what_time_is_it[4] = 29; // 3 POINTS
          break;
     
        case 4:
        case 9:
          what_time_is_it[4] = 30; // 4 POINTS
          break;
     
      }
     
      if (the_hours == 12 && !pm) {
        what_time_is_it[1] = 14; // MIDI
      }
      else if (the_hours == 0 || (the_hours == 12 && pm)) {
        what_time_is_it[1] = 15; // MINUIT
      }
      else {
        what_time_is_it[1] = the_hours;
      }
     
      if (the_hours == 1) {
        what_time_is_it[2] = 12; // HEURE
      }
      else if (the_hours > 1 && the_hours < 12) {
        what_time_is_it[2] = 13; // HEURES
      }
     
      int m = sizeof(words[0]) / sizeof(words[0][0]);
      int n = sizeof(what_time_is_it) / sizeof(what_time_is_it[0]);
     
      for (int j = 0; j < n; j++) {
        for (int i = 0; i < m; i++) {
          //      strip.setPixelColor(words[what_time_is_it[j]][i], color_white);
     
     
          boolean newState = digitalRead(colors_switch);
     
     
          if ((newState == LOW) && (oldState == HIGH)) {
     
            delay(20);
     
            newState = digitalRead(colors_switch);
     
            if (newState == LOW) {     // Yes, still low
              if (++mode > 8) mode = 0; // Advance to next mode, wrap around after #8
              switch (mode) {          // Start the new animation...
                case 0:
                  colorWipe(strip.Color(  127,   127,   127), 20);    // Blanc
                  break;
                case 1:
                  colorWipe(strip.Color(255,   0,   0), 20);    // Rouge
                  break;
                case 2:
                  colorWipe(strip.Color(  0, 255,   0), 20);    // Vert
                  break;
                case 3:
                  colorWipe(strip.Color(  0,   0, 255), 20);    // Bleu
                  break;
                case 4:
                  colorWipe(strip.Color(127, 127, 127), 20); // Blanc
                  break;
                case 5:
                  colorWipe(strip.Color(255,   0,   255), 20); // Violet
                  break;
                case 6:
                  colorWipe(strip.Color(  255,   255, 0), 20); // Vert clair
                  break;
                case 7:
                  colorWipe(strip.Color(  0,   255,   255), 20);    // Blanc
                  break;
                case 8:
                  colorWipe(strip.Color(  255,   127,   255), 20);    // Blanc
                  break;
              }
            }
          }
    }
    }
        }
     
        void colorWipe(uint32_t color, int wait) {
          for (int i = 0; i < strip.numPixels(); i++) { // For each pixel in strip...
            strip.setPixelColor(i, color);         //  Set pixel's color (in RAM)
            strip.show();                          //  Update strip to match
            delay(wait);                           //  Pause for a moment
          }
        }

  11. #11
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 933
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 933
    Par défaut
    pourquoi avoir mis la lecture du bouton des couleurs dans la double boucle for à la fin ?

    le bouton doit juste modifier la couleur en cours et vous conservez l'affichage tel qu'il était, juste en utilisant la bonne variable couleur

    dans le code que vous aviez commenté il s'agit de rendre color_white variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      for (int j = 0; j < n; j++) {
        for (int i = 0; i < m; i++) {
          //      strip.setPixelColor(words[what_time_is_it[j]][i], color_white);

  12. #12
    Membre averti
    Homme Profil pro
    bricoleur retraité
    Inscrit en
    Janvier 2024
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Suisse

    Informations professionnelles :
    Activité : bricoleur retraité

    Informations forums :
    Inscription : Janvier 2024
    Messages : 28
    Par défaut
    comme je suis novice j'ai intégré un programme que j'ai trouvé , pourriez vous me dire quelle ligne modifier

  13. #13
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 933
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 933
    Par défaut
    ce bout de code à la fin de votre programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      for(int j = 0; j < n; j++) {
        for(int i = 0; i < m; i++) {
          strip.setPixelColor(words[what_time_is_it[j]][i], color_white);
        }
      }
     
      strip.show();
    c'est ce qui allume les bonnes LEDs dans le bandeau en fonction de l'heure.

    au lieu de color_white vous voulez choisir la couleur. vous pourriez définir 3 variables pour le R,G et B de la couleur choisie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    byte choixR=255, choixG=255, choixB=255; // blanc par défaut
    et modifier le code d'affichage pour tenir compte de ces valeurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      for(int j = 0; j < n; j++) {
        for(int i = 0; i < m; i++) {
          strip.setPixelColor(words[what_time_is_it[j]][i], strip.Color(choixR, choixG, choixB));
        }
      }
     
      strip.show();

    au début de la loop, là où vous testez aussi le bouton des heures et minutes, vous pouvez tester le bouton des couleurs
    s'il vient d'être appuyé alors vous changez choixR, choixG, choixB pour une nouvelle couleur et ainsi à la fin de la loop, lors de l'affichage, c'est cette couleur qui sera prise en compte.


    Comme je l'ai dit précédemment, ce serait beaucoup plus simple d'utiliser une bibliothèque pour les boutons.

  14. #14
    Membre averti
    Homme Profil pro
    bricoleur retraité
    Inscrit en
    Janvier 2024
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Suisse

    Informations professionnelles :
    Activité : bricoleur retraité

    Informations forums :
    Inscription : Janvier 2024
    Messages : 28
    Par défaut
    Vous avez un exemple pour utiliser la bibliothèque bouton ou une adresse pour un tuto
    Merci

  15. #15
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 933
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 933
    Par défaut
    par exemple un tuto pour comprendre les boutons : https://eskimon.fr/tuto-arduino-204-un-simple-bouton

    ensuite au niveau bibliothèque il y en a des dizaines comme
    - OneButton : https://github.com/mathertel/OneButton
    - Bounce2 : https://github.com/thomasfredericks/Bounce2
    - Toggle : https://github.com/Dlloydev/Toggle

    par exemple avec Toggle, le bouton est câblé PIN --- BOUTON ---- GND et vous faites



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <Toggle.h>
    const byte brocheBouton = 2;
    Toggle leBouton;
     
    void setup() {
      Serial.begin(115200);
      leBouton.begin(brocheBouton);
    }
     
    void loop() {
      leBouton.poll();
      if (leBouton.onPress()) Serial.println(F("APPUI"));
      if (leBouton.onRelease()) Serial.println(F("RELACHE"));
    }

  16. #16
    Membre averti
    Homme Profil pro
    bricoleur retraité
    Inscrit en
    Janvier 2024
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Suisse

    Informations professionnelles :
    Activité : bricoleur retraité

    Informations forums :
    Inscription : Janvier 2024
    Messages : 28
    Par défaut
    merci pour l'info, comment faire pour qu'a chaque pression je change de couleurs (choix entre 8 couleurs)

  17. #17
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 933
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 933
    Par défaut
    vous mettez les couleurs dans un tableau et à chaque pression vous augmentez l'indice qui sert de référence dans le tableau. Quand vous arrivez au bout du tableau vous recommencez au début

  18. #18
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 933
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 933
    Par défaut
    tenez j'ai créé un petit exemple avec la bibliothèque Toggle pour gérer le bouton

    vous pouvez voir ce que ça fait dans le simulateur wokwi

    https://wokwi.com/projects/388157133666755585

    à chaque appui sur le bouton on prend la couleur suivante dans le tableau des couleurs et on s'en sert pour remplir le bandeau



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    #include <Adafruit_NeoPixel.h>
    #include <Toggle.h>
     
    const byte brocheStrip = 6;
    const byte  nbLeds = 10;
    Adafruit_NeoPixel strip(nbLeds, brocheStrip, NEO_GRB + NEO_KHZ800);
     
    const byte brocheBouton = 2;
    Toggle leBouton;
     
    // Définition de la structure pour représenter une couleur
    struct Couleur {
      uint32_t couleurRGB;  // Valeur de la couleur au format Adafruit_NeoPixel
      const char *nom;      // Nom de la couleur
    };
     
    // un exemple d'une liste de couleurs
    Couleur lesCouleurs[] = {
      {Adafruit_NeoPixel::Color(255,   0,   0), "ROUGE"},
      {Adafruit_NeoPixel::Color(  0, 255,   0), "VERT"},
      {Adafruit_NeoPixel::Color(  0,   0, 255), "BLEU"},
      {Adafruit_NeoPixel::Color(255, 255, 255), "BLANC"},
      {Adafruit_NeoPixel::Color(128,   0, 128), "VIOLET"},
    };
     
     
    size_t nombreDeCouleurs = sizeof(lesCouleurs) / sizeof(lesCouleurs[0]);
    size_t IndexCouleurChoisie = 0;
     
    void affichage() {
      Serial.println(lesCouleurs[IndexCouleurChoisie].nom);
      for (size_t i = 0; i < nbLeds; i++) strip.setPixelColor(i, lesCouleurs[IndexCouleurChoisie].couleurRGB);
      strip.show();
    }
     
    void couleurSuivante() {
      IndexCouleurChoisie++;
      if (IndexCouleurChoisie >= nombreDeCouleurs) IndexCouleurChoisie = 0;
      affichage();
    }
     
    void gestionCouleur() {
      leBouton.poll();
      if (leBouton.onPress()) couleurSuivante();
    }
     
    void setup() {
      leBouton.begin(brocheBouton);
      strip.begin();
      Serial.begin(115200);
      affichage();
    }
     
    void loop() {
      gestionCouleur();
      // le reste de votre code
    }

  19. #19
    Membre averti
    Homme Profil pro
    bricoleur retraité
    Inscrit en
    Janvier 2024
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Suisse

    Informations professionnelles :
    Activité : bricoleur retraité

    Informations forums :
    Inscription : Janvier 2024
    Messages : 28
    Par défaut
    Merci beaucoup, je vais tester le programme demain.
    Encore merci et un bon dimanche

  20. #20
    Membre averti
    Homme Profil pro
    bricoleur retraité
    Inscrit en
    Janvier 2024
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Suisse

    Informations professionnelles :
    Activité : bricoleur retraité

    Informations forums :
    Inscription : Janvier 2024
    Messages : 28
    Par défaut
    Hello, j'ai testé le programme et j'arrive a changer les couleurs avec le bouton, mon problème est quand j'essai de combiner les deux programmes le changement de couleurs ne fonctionne pas.
    Comme je suis vraiment novice je n'arrive pas a voir ou je fait faut.
    ci-dessous le programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
     
    #include <Adafruit_NeoPixel.h>
    #include "RTClib.h"
    #include <Toggle.h>
     
    const byte brocheStrip = 6;
    const byte  nbLeds = 10;
    Adafruit_NeoPixel strip(nbLeds, brocheStrip, NEO_GRB + NEO_KHZ800);
     
    const byte hours_switch = 5;
    const byte minutes_switch = 4;
     
    const byte brocheBouton = 2;
    Toggle leBouton;
     
    // Définition de la structure pour représenter une couleur
    struct Couleur {
      uint32_t couleurRGB;  // Valeur de la couleur au format Adafruit_NeoPixel
      const char *nom;      // Nom de la couleur
    };
     
    // un exemple d'une liste de couleurs
    Couleur lesCouleurs[] = {
      {Adafruit_NeoPixel::Color(255,   0,   0), "ROUGE"},
      {Adafruit_NeoPixel::Color(  0, 255,   0), "VERT"},
      {Adafruit_NeoPixel::Color(  0,   0, 255), "BLEU"},
      {Adafruit_NeoPixel::Color(255, 255, 255), "BLANC"},
      {Adafruit_NeoPixel::Color(128,   0, 128), "VIOLET"},
    };
     
     
    size_t nombreDeCouleurs = sizeof(lesCouleurs) / sizeof(lesCouleurs[0]);
    size_t IndexCouleurChoisie = 0;
     
     
    int hours_offset = 0;
    int minutes_offset = 0;
     
    int the_hours = 0;
    int the_minutes = 0;
    bool pm = false;
     
    // initialisation module RTC
    RTC_DS3231 rtc;
     
    // initialisation NeoPixel
    //Adafruit_NeoPixel strip = Adafruit_NeoPixel(N_LEDS, RGBLEDPIN, NEO_GRB + NEO_KHZ800);
     
    // luminosité
    int the_brightness = 50;
     
    // couleurs
    uint32_t color_white = strip.Color(255, 255, 255);
     
    // tableau des mots
    int words[31][15] = {
     
      {0, 1, 3, 4, 5}, // #0 / IL EST
     
      {7, 8, 9}, // #1 / UNE
      {18, 19, 20, 21}, // #2 / DEUX
      {12, 13, 14, 15, 16}, // #3 / TROIS
      {22, 23, 24, 25, 26, 27}, // #4 / QUATRE
      {29, 30, 31, 32}, // #5 / CINQ
      {40, 41, 42}, // #6 / SIX
      {35, 36, 37, 38}, // #7 / SEPT
      {44, 45, 46, 47}, // #8 / HUIT
      {48, 49, 50, 51}, // #9 / NEUF
      {52, 53, 54}, // #10 / DIX
      {62, 63, 64, 65}, // #11 / ONZE
     
      {56, 57, 58, 59, 60}, // #12 / HEURE
      {55, 56, 57, 58, 59, 60}, // #13 / HEURES
     
      {73, 74, 75, 76}, // #14 / MIDI
      {67, 68, 69, 70, 71, 72}, // #15 / MINUIT
     
      {100, 101, 102, 103}, // #16 / CINQ (2)
      {89, 90, 91}, // #17 / DIX (2)
      {86, 87, 111, 112, 113, 114, 115}, // #18 / ET QUART
      {105, 106, 107, 108, 109}, // #19 / VINGT
      {100, 101, 102, 103, 105, 106, 107, 108, 109}, // #20 / VINGT CINQ
      {86, 87, 93, 94, 95, 96, 97}, // #21 / ET DEMIE
      {80, 81, 82, 83, 84, 105, 106, 107, 108, 109, 100, 101, 102, 103}, // #22 / MOINS VINGT-CINQ
      {80, 81, 82, 83, 84, 105, 106, 107, 108, 109}, // #23 / MOINS VINGT
      {80, 81, 82, 83, 84, 77, 78, 111, 112, 113, 114, 115}, // #24 / MOINS LE QUART
      {80, 81, 82, 83, 84, 89, 90, 91}, // #25 / MOINS DIX
      {80, 81, 82, 83, 84, 100, 101, 102, 103}, // #26 / MOINS CINQ
     
      {117}, // #27 / 1 POINT
      {117, 118}, // #28 / 2 POINTS
      {117, 118, 119}, // #29 / 3 POINTS
      {117, 118, 119, 120} // #30 / 4 POINTS
     
    };
     
    void affichage() {
      Serial.println(lesCouleurs[IndexCouleurChoisie].nom);
      for (size_t i = 0; i < nbLeds; i++) strip.setPixelColor(i, lesCouleurs[IndexCouleurChoisie].couleurRGB);
      strip.show();
    }
     
    void couleurSuivante() {
      IndexCouleurChoisie++;
      if (IndexCouleurChoisie >= nombreDeCouleurs) IndexCouleurChoisie = 0;
      affichage();
    }
     
    void gestionCouleur() {
      leBouton.poll();
      if (leBouton.onPress()) couleurSuivante();
    }
     
    void setup() {
     
      Serial.begin(9600);
     
      if (!rtc.begin()) {
        Serial.println("Couldn't find RTC");
        Serial.flush();
        abort();
      }
     
      if (rtc.lostPower()) {
        Serial.println("RTC lost power, let's set the time!");
        rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
      }
     
      pinMode(hours_switch, INPUT_PULLUP);
      pinMode(minutes_switch, INPUT_PULLUP);
     
      strip.begin();
      strip.show();
     
      strip.setBrightness(the_brightness);
     
    }
     
    void loop() {
     
    if (digitalRead(hours_switch) == LOW) {
     hours_offset++;
     }
     
    if (digitalRead(minutes_switch) == LOW) {
     minutes_offset++;
     }
     
      strip.clear();
     
      int what_time_is_it[5] = {};
      what_time_is_it[0] = 0; // IL EST
     
      DateTime now = rtc.now();
     
      the_hours = now.hour();
      the_minutes = now.minute();
     
      the_hours += hours_offset;
      the_minutes += minutes_offset;
     
      while (the_minutes > 59) {
        the_minutes -= 60;
        the_hours++;
      }
     
      while (the_hours > 23) {
        the_hours -= 24;
      }
     
      if (the_minutes >= 5 && the_minutes < 10) {
        what_time_is_it[3] = 16; // CINQ (2)
      }
      else if (the_minutes >= 10 && the_minutes < 15) {
        what_time_is_it[3] = 17; // DIX (2)
      }
      else if (the_minutes >= 15 && the_minutes < 20) {
        what_time_is_it[3] = 18; // ET QUART
      }
      else if (the_minutes >= 20 && the_minutes < 25) {
        what_time_is_it[3] = 19; // VINGT
      }
      else if (the_minutes >= 25 && the_minutes < 30) {
        what_time_is_it[3] = 20; // VINGT-CINQ
      }
      else if (the_minutes >= 30 && the_minutes < 35) {
        what_time_is_it[3] = 21; // ET DEMIE
      }
      else if (the_minutes >= 35 && the_minutes < 40) {
        what_time_is_it[3] = 22; // MOINS VINGT-CINQ
      }
      else if (the_minutes >= 40 && the_minutes < 45) {
        what_time_is_it[3] = 23; // MOINS VINGT
      }
      else if (the_minutes >= 45 && the_minutes < 50) {
        what_time_is_it[3] = 24; // MOINS LE QUART
      }
      else if (the_minutes >= 50 && the_minutes < 55) {
        what_time_is_it[3] = 25; // MOINS DIX
      }
      else if (the_minutes >= 55) {
        what_time_is_it[3] = 26; // MOINS CINQ
      }
     
      if (the_minutes >= 35) {
        the_hours++;
      }
     
      if (the_hours > 12) {
        the_hours -= 12;
        pm = true;
      }
      else {
        pm = false;
      }
     
      int the_minutes_last_digit = the_minutes % 10;
     
      switch (the_minutes_last_digit) {
     
        case 1:
        case 6:
          what_time_is_it[4] = 27; // 1 POINT
          break;
     
        case 2:
        case 7:
          what_time_is_it[4] = 28; // 2 POINTS
          break;
     
        case 3:
        case 8:
          what_time_is_it[4] = 29; // 3 POINTS
          break;
     
        case 4:
        case 9:
          what_time_is_it[4] = 30; // 4 POINTS
          break;
     
      }
     
      if (the_hours == 12 && !pm) {
        what_time_is_it[1] = 14; // MIDI
      }
      else if (the_hours == 0 || (the_hours == 12 && pm)) {
        what_time_is_it[1] = 15; // MINUIT
      }
      else {
        what_time_is_it[1] = the_hours;
      }
     
      if (the_hours == 1) {
        what_time_is_it[2] = 12; // HEURE
      }
      else if (the_hours > 1 && the_hours < 12) {
        what_time_is_it[2] = 13; // HEURES
      }
     
      int m = sizeof(words[0]) / sizeof(words[0][0]);
      int n = sizeof(what_time_is_it) / sizeof(what_time_is_it[0]);
     
      for(int j = 0; j < n; j++) {
        for(int i = 0; i < m; i++) {
          strip.setPixelColor(words[what_time_is_it[j]][i], color_white);
        }
      }
     
      strip.show();
     
      delay(500);
     
    }

Discussions similaires

  1. Changement couleur cellule EXCEL en fonction du texte
    Par kikaillo dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 14/04/2006, 14h22
  2. [VBA-E] Changement couleur onglet
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/04/2006, 13h04
  3. Changement couleur de cellule
    Par Ricardo_Tubbs dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 07/03/2006, 10h37
  4. Changement couleur fond et couleur texte au passage souris
    Par Jiraiya42 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 01/02/2006, 14h18
  5. [Trucs & Astuces] Changement couleur scroll bar
    Par CUCARACHA dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 23/10/2005, 13h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo