Quantcast
Channel: Arduino Forum - Latest topics
Viewing all articles
Browse latest Browse all 15544

Help needed for adding ESP32 NTP to old RTC sketch

$
0
0
I need help and advise, please.
Several years ago I made a wordclock using an Arduino nano and a RTC clock. It worked fine but my sketch quality was poor and the time change was a burden. I would like to change from RTC to NTP with an ESP32 Arduino Nano. I was able to change the sketch so to fetch NTP data, but I don't know how to use the time data in my old sketch. I would like to keep how my old wordclock works with the color change...
I don't if this is the good place for my request... But thanks in advance for your answer.
Bob 
type or paste code here
```/* 

  Arduino nano + Neopixel Word Clock Code
  Work version 28-1-2024 10-13
  
*/
//#include <DS1307RTC.h> //plus necessaire 2024RH
#include <Adafruit_NeoPixel.h>
//#include <avr/power.h>
#include "Time.h"
#include <WiFi.h>

#include <TimeLib.h>
#include <Wire.h>

const char* ssid = "netplus-xxxxx";
const char* password = "xxxx";

const char* ntpServer = "europe.pool.ntp.org";
const long gmtOffset_sec = 3600;
const int daylightOffset_sec = 3600;


// Which pin on the Arduino is connected to the NeoPixels?
#define PIN 6

// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 110

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

// Declare integer array with size corresponding to number of Neopixels in chain
int individualPixels[NUMPIXELS];

// Time variables
int h;
int m;
int s;
int ColChg = 10000;  //Color change frequency for manual time update RH
int intSeconds;

void setup() {

  Serial.begin(115200);

  // Connect to Wi-Fi
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected.");

  // Init and get the time
  configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
  printLocalTime();  //void erreur?

//  time_t makeTime(tmElements_t tm) ;

  //disconnect WiFi as it's no longer needed
  WiFi.disconnect(true);
  WiFi.mode(WIFI_OFF);
}

  void printLocalTime() {
  struct tm timeinfo;
  if (!getLocalTime(&timeinfo)) {
    Serial.println("Failed to obtain time");
    return;
  }
  Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S");
}

void loop() {
  delay(1000);
  printLocalTime();

  //Declare integer array with size corresponding to number of Neopixels in chain
  int individualPixels[NUMPIXELS] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };

  pixels.begin();      //Begin Neopixel string
  Serial.begin(9600);  //Begin Serial for debugging purposes


   tmElements_t tm ;


  /* Get current time */
  h = tm.Hour;    // Returns the hour of current time between 1-12
  m = tm.Minute;  // Returns the minute of current time
  s = tm.Second;  // Returns the second of current time (not used, included for completeness)



  /* Parse time values to light corresponding pixels */
  individualPixels[109] = 1;  //Light "IL"
  individualPixels[108] = 1;
  individualPixels[104] = 1;  //Light "EST"
  individualPixels[105] = 1;
  individualPixels[106] = 1;


  /* Minutes between 5-10 or 55-60 - Light "CINQ_M" */
  if ((tm.Minute >= 5 && tm.Minute < 10) || (tm.Minute >= 55 && tm.Minute < 60)) {
    individualPixels[6] = 1;
    individualPixels[7] = 1;
    individualPixels[8] = 1;
    individualPixels[9] = 1;
  }

  /* Minutes between 10-15 or 50-55 - Light "DIX_M" */
  if ((tm.Minute >= 10 && tm.Minute < 15) || (tm.Minute >= 50 && tm.Minute < 55)) {
    individualPixels[19] = 1;
    individualPixels[20] = 1;
    individualPixels[21] = 1;
  }

  /* Minutes between 15-20 or 45-50 - Light "ET QUART" */
  if ((tm.Minute >= 15 && tm.Minute < 20)) {
    individualPixels[34] = 1;  // ET
    individualPixels[35] = 1;
    individualPixels[0] = 1;  // QUART
    individualPixels[1] = 1;
    individualPixels[2] = 1;
    individualPixels[3] = 1;
    individualPixels[4] = 1;
  }

  /* Minutes between 15-20 or 45-50 - Light "QUART" */
  if ((tm.Minute >= 45 && tm.Minute < 50)) {
    individualPixels[0] = 1;  // QUART
    individualPixels[1] = 1;
    individualPixels[2] = 1;
    individualPixels[3] = 1;
    individualPixels[4] = 1;
    individualPixels[16] = 1;
    individualPixels[17] = 1;  // LE
  }

  /* Minutes between 20-25 or 40-45 - Light "VINGT_M" */
  if ((tm.Minute >= 20 && tm.Minute < 25) || (tm.Minute >= 40 && tm.Minute < 45)) {
    individualPixels[28] = 1;
    individualPixels[29] = 1;
    individualPixels[30] = 1;
    individualPixels[31] = 1;
    individualPixels[32] = 1;
  }

  /* Minutes between 25-30 or 35-40 - Light "VINGT CINQ_M" */
  if ((tm.Minute >= 25 && tm.Minute < 30) || (tm.Minute >= 35 && tm.Minute < 40)) {
    individualPixels[28] = 1;
    individualPixels[29] = 1;
    individualPixels[30] = 1;
    individualPixels[31] = 1;
    individualPixels[32] = 1;
    individualPixels[6] = 1;
    individualPixels[7] = 1;
    individualPixels[8] = 1;
    individualPixels[9] = 1;
  }

  /* Minutes between 30-35 - Light "ET DEMI" */
  if ((tm.Minute >= 30 && tm.Minute < 35)) {
    individualPixels[34] = 1;
    individualPixels[35] = 1;
    individualPixels[11] = 1;
    individualPixels[12] = 1;
    individualPixels[13] = 1;
    individualPixels[14] = 1;
  }

  /* Minutes between 35-60 - Light "MOINS" & MODIFY CURRENT HOUR VALUE */
  if (tm.Minute >= 35) {
    tm.Hour++;  //Add 1 from current hour
    individualPixels[22] = 1;
    individualPixels[23] = 1;
    individualPixels[24] = 1;
    individualPixels[25] = 1;
    individualPixels[26] = 1;  //"MOINS"
  }


  /*Set time to twelve for hour around MINUIT, */
  if ((tm.Hour == 0) || (tm.Hour == 24)) {
    individualPixels[37] = 1;
    individualPixels[38] = 1;
    individualPixels[39] = 1;
    individualPixels[40] = 1;
    individualPixels[41] = 1;
    individualPixels[42] = 1;  // "MINUIT"
                               //      h=12;
  }

  /*Corner case for 12:35-12:59 */
  if (tm.Hour == 24) {
    h = 0;
  }

  /* Hour=1 - Light "UNE" */
  if ((tm.Hour == 1) || (tm.Hour == 13)) {
    individualPixels[66] = 1;
    individualPixels[67] = 1;
    individualPixels[68] = 1;  //UNE
    individualPixels[49] = 1;
    individualPixels[50] = 1;
    individualPixels[51] = 1;
    individualPixels[52] = 1;
    individualPixels[53] = 1;  //HEURE
  }

  /* Hour=2 - Light "DEUX" */
  if ((tm.Hour == 2) || (tm.Hour == 14)) {
    individualPixels[99] = 1;
    individualPixels[100] = 1;
    individualPixels[101] = 1;
    individualPixels[102] = 1;  //DEUX
    individualPixels[49] = 1;
    individualPixels[50] = 1;
    individualPixels[51] = 1;
    individualPixels[52] = 1;
    individualPixels[53] = 1;
    individualPixels[54] = 1;  //HEURES
  }

  /* Hour=3 - Light "TROIS" */
  if ((tm.Hour == 3) || (tm.Hour == 15)) {
    individualPixels[56] = 1;
    individualPixels[57] = 1;
    individualPixels[58] = 1;
    individualPixels[59] = 1;  //TROIS
    individualPixels[60] = 1;
    individualPixels[49] = 1;
    individualPixels[50] = 1;
    individualPixels[51] = 1;
    individualPixels[52] = 1;
    individualPixels[53] = 1;
    individualPixels[54] = 1;  //HEURES
  }

  /* Hour=4 - Light "QUATRE" */
  if ((tm.Hour == 4) || (tm.Hour == 16)) {
    individualPixels[88] = 1;
    individualPixels[89] = 1;
    individualPixels[90] = 1;
    individualPixels[91] = 1;
    individualPixels[92] = 1;  //QUATRE
    individualPixels[93] = 1;
    individualPixels[49] = 1;
    individualPixels[50] = 1;
    individualPixels[51] = 1;
    individualPixels[52] = 1;
    individualPixels[53] = 1;
    individualPixels[54] = 1;  //HEURES
  }

  /* Hour=5 - Light "CINQ" */
  if ((tm.Hour == 5) || (tm.Hour == 17)) {
    individualPixels[95] = 1;
    individualPixels[96] = 1;
    individualPixels[97] = 1;
    individualPixels[98] = 1;  //CINQ
    individualPixels[49] = 1;
    individualPixels[50] = 1;
    individualPixels[51] = 1;
    individualPixels[52] = 1;
    individualPixels[53] = 1;
    individualPixels[54] = 1;  //HEURES
  }

  /* Hour=6 - Light "SIX" */
  if ((tm.Hour == 6) || (tm.Hour == 18)) {
    individualPixels[85] = 1;
    individualPixels[86] = 1;
    individualPixels[87] = 1;  //SIX
    individualPixels[49] = 1;
    individualPixels[50] = 1;
    individualPixels[51] = 1;
    individualPixels[52] = 1;
    individualPixels[53] = 1;
    individualPixels[54] = 1;  //HEURES
  }

  /* Hour=7 - Light "SEPT" */
  if ((tm.Hour == 7) || (tm.Hour == 19)) {
    individualPixels[70] = 1;
    individualPixels[71] = 1;
    individualPixels[72] = 1;
    individualPixels[73] = 1;  //SEPT
    individualPixels[49] = 1;
    individualPixels[50] = 1;
    individualPixels[51] = 1;
    individualPixels[52] = 1;
    individualPixels[53] = 1;
    individualPixels[54] = 1;  //HEURES
  }

  /* Hour=8 - Light "HUIT" */
  if ((tm.Hour == 8) || (tm.Hour == 20)) {
    individualPixels[62] = 1;
    individualPixels[63] = 1;
    individualPixels[64] = 1;
    individualPixels[65] = 1;  //HUIT
    individualPixels[49] = 1;
    individualPixels[50] = 1;
    individualPixels[51] = 1;
    individualPixels[52] = 1;
    individualPixels[53] = 1;
    individualPixels[54] = 1;  //HEURES
  }

  /* Hour=9 - Light "NEUF" */
  if ((tm.Hour == 9) || (tm.Hour == 21)) {
    individualPixels[81] = 1;
    individualPixels[82] = 1;
    individualPixels[83] = 1;
    individualPixels[84] = 1;  //NEUF
    individualPixels[49] = 1;
    individualPixels[50] = 1;
    individualPixels[51] = 1;
    individualPixels[52] = 1;
    individualPixels[53] = 1;
    individualPixels[54] = 1;  //HEURES
  }

  /* Hour=10 - Light "DIX" */
  if ((tm.Hour == 10) || (tm.Hour == 22)) {
    individualPixels[74] = 1;
    individualPixels[75] = 1;
    individualPixels[76] = 1;  //DIX
    individualPixels[49] = 1;
    individualPixels[50] = 1;
    individualPixels[51] = 1;
    individualPixels[52] = 1;
    individualPixels[53] = 1;
    individualPixels[54] = 1;  //HEURES
  }

  /* Hour=11 - Light "ONZE" */
  if ((tm.Hour == 11) || (tm.Hour == 23)) {
    individualPixels[77] = 1;
    individualPixels[78] = 1;
    individualPixels[79] = 1;
    individualPixels[80] = 1;  //ONZE
    individualPixels[49] = 1;
    individualPixels[50] = 1;
    individualPixels[51] = 1;
    individualPixels[52] = 1;
    individualPixels[53] = 1;
    individualPixels[54] = 1;  //HEURES
  }

  /* Hour=12 - Light "TWELVE" */
  if (tm.Hour == 12) {
    individualPixels[45] = 1;
    individualPixels[46] = 1;
    individualPixels[47] = 1;
    individualPixels[48] = 1;  //"MIDI"
  }

  // RGB color variables
  int red = random(1, 80);
  int green = random(1, 80);
  int blue = random(1, 80);

  delay(ColChg);

  /* Light pixels corresponding to current time */
  for (int i = 0; i < sizeof(individualPixels); i++) {
    if (individualPixels[i] == 1) {
      pixels.setPixelColor(i, pixels.Color(red, green, blue));  //Set Neopixel color
    } else {
      pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    }
  }

  pixels.show();  //Display Neopixel color
}

type or paste code here

2 posts - 2 participants

Read full topic


Viewing all articles
Browse latest Browse all 15544