diff --git a/Horloge_Nixie_firmware.ino b/Horloge_Nixie_firmware.ino index 656df48..b82e234 100644 --- a/Horloge_Nixie_firmware.ino +++ b/Horloge_Nixie_firmware.ino @@ -16,12 +16,13 @@ RTC_DS1307 rtc; char daysOfTheWeek[7][12] = {"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"}; -int timeout = 120; // seconds to run for +int timeout = 120; // seconds to run for trying wifi connexion bool wifiOK, ntpOK, rtcOK; unsigned long LastRTCUpdate; // le temps de dernière MAJ de l'horloge interne RTC unsigned long LastNixieUpdate; // le temps de dernière MAJ affichage Nixie +int heu_d, heu_u, min_d, min_u, sec_d, sec_u; -const long intervalRTCUpdate = 17000; // 86400000 = 24 heures +const long intervalRTCUpdate = 17000; // 86400000 = 24 heures - 3600000 = 1 heure const long intervalNixieUpdate = 1000; // 1000 = 1 seconde WiFiUDP wifiUdp; @@ -134,15 +135,15 @@ void setup () { pinMode(Rotary_A, INPUT_PULLUP); // Encodeur rotatif : voie A pinMode(Rotary_B, INPUT_PULLUP); // Encodeur rotatif : voie B - pinMode(BCD_D, OUTPUT);// D Pour digits afficheurs nixie 1 + pinMode(BCD_D, OUTPUT);// D Pour digits afficheurs Nixie pinMode(BCD_C, OUTPUT);// C pinMode(BCD_B, OUTPUT);// B pinMode(BCD_A, OUTPUT);// A - pinMode(BCD_D2, OUTPUT);// D Pour digits afficheurs nixie 2 - pinMode(BCD_C2, OUTPUT);// C - pinMode(BCD_B2, OUTPUT);// B - pinMode(BCD_A2, OUTPUT);// A + pinMode(NX1A, OUTPUT);// Nixie 1 + pinMode(NX2A, OUTPUT);// Nixie 2 + pinMode(NX3A, OUTPUT);// Nixie 3 + pinMode(NX4A, OUTPUT);// Nixie 4 // Démarrage de l'I2C : Wire.begin(I2C_SDA,I2C_SCL); // Broches (SDA,SCL) de l'I2C pour la RTC @@ -182,34 +183,33 @@ void loop () { LastNixieUpdate = currentMillis; DateTime now = rtc.now(); - int heu_d = (now.hour())/10; - int heu_u = (now.hour())%10; - int min_d = (now.minute())/10; - int min_u = (now.minute())%10; - int sec_d = (now.second())/10; - int sec_u = (now.second())%10; - - printNixie2(heu_d); - printNixie(heu_u); - Serial.print(heu_d); - Serial.print(heu_u); - delay(1200); - - printNixie2(99); - printNixie(99); - delay(000); - - printNixie2(min_d); - printNixie(min_u); - Serial.print(min_d); - Serial.print(min_u); - delay(1200); - - printNixie2(99); - printNixie(99); - delay(1200); + heu_d = (now.hour())/10; + heu_u = (now.hour())%10; + min_d = (now.minute())/10; + min_u = (now.minute())%10; + sec_d = (now.second())/10; + sec_u = (now.second())%10; } + + printNixie1(heu_d); + delay(5); + digitalWrite(NX1A, 0); //Switch OFF Anode Nixie 1 + + printNixie2(heu_u); + delay(5); + digitalWrite(NX2A, 0); //Switch OFF Anode Nixie 1 + + printNixie3(min_d); + delay(5); + digitalWrite(NX3A, 0); //Switch OFF Anode Nixie 1 + + printNixie4(min_u); + delay(5); + digitalWrite(NX4A, 0); //Switch OFF Anode Nixie 1 + + + // Mise à jour de l'horloge interne RTC. Une fois par 24H if ((currentMillis - LastRTCUpdate >= intervalRTCUpdate) || (currentMillis < LastRTCUpdate)) { LastRTCUpdate = currentMillis; diff --git a/hardware.h b/hardware.h index 53a75f0..535d103 100644 --- a/hardware.h +++ b/hardware.h @@ -5,15 +5,16 @@ #define I2C_SCL 41 // Sorties BCD vers Nixie - #define BCD_A 15 - #define BCD_B 16 - #define BCD_C 17 - #define BCD_D 18 + #define BCD_A 9 + #define BCD_B 10 + #define BCD_C 11 + #define BCD_D 12 + + #define NX1A 4 + #define NX2A 5 + #define NX3A 6 + #define NX4A 7 - #define BCD_A2 9 - #define BCD_B2 10 - #define BCD_C2 11 - #define BCD_D2 12 // Touches #define Rotary_A 35 diff --git a/nixie.cpp b/nixie.cpp index 731638f..1108a25 100644 --- a/nixie.cpp +++ b/nixie.cpp @@ -1,74 +1,86 @@ +#include "esp32-hal-gpio.h" #include "nixie.h" #include "Arduino.h" #include "hardware.h" -void printNixie(int8_t a){ +void printNixie1(int8_t a){ switch (a) { case 0: digitalWrite(BCD_D, LOW); //D digitalWrite(BCD_C, LOW); //C digitalWrite(BCD_B, LOW); //B digitalWrite(BCD_A, LOW); //A + digitalWrite(NX1A, 1); //Switch on Anode Nixie 1 break; case 1: digitalWrite(BCD_D, LOW); //D digitalWrite(BCD_C, LOW); //C digitalWrite(BCD_B, LOW); //B digitalWrite(BCD_A, HIGH); //A + digitalWrite(NX1A, 1); //Switch on Anode Nixie 1 break; case 2: digitalWrite(BCD_D, LOW); //D digitalWrite(BCD_C, LOW); //C digitalWrite(BCD_B, HIGH); //B digitalWrite(BCD_A, LOW); //A + digitalWrite(NX1A, 1); //Switch on Anode Nixie 1 break; case 3: digitalWrite(BCD_D, LOW); //D digitalWrite(BCD_C, LOW); //C digitalWrite(BCD_B, HIGH); //B digitalWrite(BCD_A, HIGH); //A + digitalWrite(NX1A, 1); //Switch on Anode Nixie 1 break; case 4: digitalWrite(BCD_D, LOW); //D digitalWrite(BCD_C, HIGH); //C digitalWrite(BCD_B, LOW); //B digitalWrite(BCD_A, LOW); //A + digitalWrite(NX1A, 1); //Switch on Anode Nixie 1 break; case 5: digitalWrite(BCD_D, LOW); //D digitalWrite(BCD_C, HIGH); //C digitalWrite(BCD_B, LOW); //B digitalWrite(BCD_A, HIGH); //A + digitalWrite(NX1A, 1); //Switch on Anode Nixie 1 break; case 6: digitalWrite(BCD_D, LOW); //D digitalWrite(BCD_C, HIGH); //C digitalWrite(BCD_B, HIGH); //B digitalWrite(BCD_A, LOW); //A + digitalWrite(NX1A, 1); //Switch on Anode Nixie 1 break; case 7: digitalWrite(BCD_D, LOW); //D digitalWrite(BCD_C, HIGH); //C digitalWrite(BCD_B, HIGH); //B digitalWrite(BCD_A, HIGH); //A + digitalWrite(NX1A, 1); //Switch on Anode Nixie 1 break; case 8: digitalWrite(BCD_D, HIGH); //D digitalWrite(BCD_C, LOW); //C digitalWrite(BCD_B, LOW); //B digitalWrite(BCD_A, LOW); //A + digitalWrite(NX1A, 1); //Switch on Anode Nixie 1 break; case 9: digitalWrite(BCD_D, HIGH); //D digitalWrite(BCD_C, LOW); //C digitalWrite(BCD_B, LOW); //B digitalWrite(BCD_A, HIGH); //A + digitalWrite(NX1A, 1); //Switch on Anode Nixie 1 break; case 99: digitalWrite(BCD_D, HIGH); //D digitalWrite(BCD_C, HIGH); //C digitalWrite(BCD_B, HIGH); //B digitalWrite(BCD_A, HIGH); //A + digitalWrite(NX1A, 0); //Switch OFF Anode Nixie 2 break; } } @@ -76,70 +88,245 @@ void printNixie(int8_t a){ void printNixie2(int8_t a){ switch (a) { case 0: - digitalWrite(BCD_D2, LOW); //D - digitalWrite(BCD_C2, LOW); //C - digitalWrite(BCD_B2, LOW); //B - digitalWrite(BCD_A2, LOW); //A + digitalWrite(BCD_D, LOW); //D + digitalWrite(BCD_C, LOW); //C + digitalWrite(BCD_B, LOW); //B + digitalWrite(BCD_A, LOW); //A + digitalWrite(NX2A, 1); //Switch on Anode Nixie 2 break; case 1: - digitalWrite(BCD_D2, LOW); //D - digitalWrite(BCD_C2, LOW); //C - digitalWrite(BCD_B2, LOW); //B - digitalWrite(BCD_A2, HIGH); //A + digitalWrite(BCD_D, LOW); //D + digitalWrite(BCD_C, LOW); //C + digitalWrite(BCD_B, LOW); //B + digitalWrite(BCD_A, HIGH); //A + digitalWrite(NX2A, 1); //Switch on Anode Nixie 2 break; case 2: - digitalWrite(BCD_D2, LOW); //D - digitalWrite(BCD_C2, LOW); //C - digitalWrite(BCD_B2, HIGH); //B - digitalWrite(BCD_A2, LOW); //A + digitalWrite(BCD_D, LOW); //D + digitalWrite(BCD_C, LOW); //C + digitalWrite(BCD_B, HIGH); //B + digitalWrite(BCD_A, LOW); //A + digitalWrite(NX2A, 1); //Switch on Anode Nixie 2 break; case 3: - digitalWrite(BCD_D2, LOW); //D - digitalWrite(BCD_C2, LOW); //C - digitalWrite(BCD_B2, HIGH); //B - digitalWrite(BCD_A2, HIGH); //A + digitalWrite(BCD_D, LOW); //D + digitalWrite(BCD_C, LOW); //C + digitalWrite(BCD_B, HIGH); //B + digitalWrite(BCD_A, HIGH); //A + digitalWrite(NX2A, 1); //Switch on Anode Nixie 2 break; case 4: - digitalWrite(BCD_D2, LOW); //D - digitalWrite(BCD_C2, HIGH); //C - digitalWrite(BCD_B2, LOW); //B - digitalWrite(BCD_A2, LOW); //A + digitalWrite(BCD_D, LOW); //D + digitalWrite(BCD_C, HIGH); //C + digitalWrite(BCD_B, LOW); //B + digitalWrite(BCD_A, LOW); //A + digitalWrite(NX2A, 1); //Switch on Anode Nixie 2 break; case 5: - digitalWrite(BCD_D2, LOW); //D - digitalWrite(BCD_C2, HIGH); //C - digitalWrite(BCD_B2, LOW); //B - digitalWrite(BCD_A2, HIGH); //A + digitalWrite(BCD_D, LOW); //D + digitalWrite(BCD_C, HIGH); //C + digitalWrite(BCD_B, LOW); //B + digitalWrite(BCD_A, HIGH); //A + digitalWrite(NX2A, 1); //Switch on Anode Nixie 2 break; case 6: - digitalWrite(BCD_D2, LOW); //D - digitalWrite(BCD_C2, HIGH); //C - digitalWrite(BCD_B2, HIGH); //B - digitalWrite(BCD_A2, LOW); //A + digitalWrite(BCD_D, LOW); //D + digitalWrite(BCD_C, HIGH); //C + digitalWrite(BCD_B, HIGH); //B + digitalWrite(BCD_A, LOW); //A + digitalWrite(NX2A, 1); //Switch on Anode Nixie 2 break; case 7: - digitalWrite(BCD_D2, LOW); //D - digitalWrite(BCD_C2, HIGH); //C - digitalWrite(BCD_B2, HIGH); //B - digitalWrite(BCD_A2, HIGH); //A + digitalWrite(BCD_D, LOW); //D + digitalWrite(BCD_C, HIGH); //C + digitalWrite(BCD_B, HIGH); //B + digitalWrite(BCD_A, HIGH); //A + digitalWrite(NX2A, 1); //Switch on Anode Nixie 2 break; case 8: - digitalWrite(BCD_D2, HIGH); //D - digitalWrite(BCD_C2, LOW); //C - digitalWrite(BCD_B2, LOW); //B - digitalWrite(BCD_A2, LOW); //A + digitalWrite(BCD_D, HIGH); //D + digitalWrite(BCD_C, LOW); //C + digitalWrite(BCD_B, LOW); //B + digitalWrite(BCD_A, LOW); //A + digitalWrite(NX2A, 1); //Switch on Anode Nixie 2 break; case 9: - digitalWrite(BCD_D2, HIGH); //D - digitalWrite(BCD_C2, LOW); //C - digitalWrite(BCD_B2, LOW); //B - digitalWrite(BCD_A2, HIGH); //A + digitalWrite(BCD_D, HIGH); //D + digitalWrite(BCD_C, LOW); //C + digitalWrite(BCD_B, LOW); //B + digitalWrite(BCD_A, HIGH); //A + digitalWrite(NX2A, 1); //Switch on Anode Nixie 2 break; case 99: - digitalWrite(BCD_D2, HIGH); //D - digitalWrite(BCD_C2, HIGH); //C - digitalWrite(BCD_B2, HIGH); //B - digitalWrite(BCD_A2, HIGH); //A + digitalWrite(BCD_D, HIGH); //D + digitalWrite(BCD_C, HIGH); //C + digitalWrite(BCD_B, HIGH); //B + digitalWrite(BCD_A, HIGH); //A + digitalWrite(NX2A, 0); //Switch off Anode Nixie 2 + break; + } +} + +void printNixie3(int8_t a){ + switch (a) { + case 0: + digitalWrite(BCD_D, LOW); //D + digitalWrite(BCD_C, LOW); //C + digitalWrite(BCD_B, LOW); //B + digitalWrite(BCD_A, LOW); //A + digitalWrite(NX3A, 1); //Switch on Anode Nixie 3 + break; + case 1: + digitalWrite(BCD_D, LOW); //D + digitalWrite(BCD_C, LOW); //C + digitalWrite(BCD_B, LOW); //B + digitalWrite(BCD_A, HIGH); //A + digitalWrite(NX3A, 1); //Switch on Anode Nixie 3 + break; + case 2: + digitalWrite(BCD_D, LOW); //D + digitalWrite(BCD_C, LOW); //C + digitalWrite(BCD_B, HIGH); //B + digitalWrite(BCD_A, LOW); //A + digitalWrite(NX3A, 1); //Switch on Anode Nixie 3 + break; + case 3: + digitalWrite(BCD_D, LOW); //D + digitalWrite(BCD_C, LOW); //C + digitalWrite(BCD_B, HIGH); //B + digitalWrite(BCD_A, HIGH); //A + digitalWrite(NX3A, 1); //Switch on Anode Nixie 3 + break; + case 4: + digitalWrite(BCD_D, LOW); //D + digitalWrite(BCD_C, HIGH); //C + digitalWrite(BCD_B, LOW); //B + digitalWrite(BCD_A, LOW); //A + digitalWrite(NX3A, 1); //Switch on Anode Nixie 3 + break; + case 5: + digitalWrite(BCD_D, LOW); //D + digitalWrite(BCD_C, HIGH); //C + digitalWrite(BCD_B, LOW); //B + digitalWrite(BCD_A, HIGH); //A + digitalWrite(NX3A, 1); //Switch on Anode Nixie 3 + break; + case 6: + digitalWrite(BCD_D, LOW); //D + digitalWrite(BCD_C, HIGH); //C + digitalWrite(BCD_B, HIGH); //B + digitalWrite(BCD_A, LOW); //A + digitalWrite(NX3A, 1); //Switch on Anode Nixie 3 + break; + case 7: + digitalWrite(BCD_D, LOW); //D + digitalWrite(BCD_C, HIGH); //C + digitalWrite(BCD_B, HIGH); //B + digitalWrite(BCD_A, HIGH); //A + digitalWrite(NX3A, 1); //Switch on Anode Nixie 3 + break; + case 8: + digitalWrite(BCD_D, HIGH); //D + digitalWrite(BCD_C, LOW); //C + digitalWrite(BCD_B, LOW); //B + digitalWrite(BCD_A, LOW); //A + digitalWrite(NX3A, 1); //Switch on Anode Nixie 3 + break; + case 9: + digitalWrite(BCD_D, HIGH); //D + digitalWrite(BCD_C, LOW); //C + digitalWrite(BCD_B, LOW); //B + digitalWrite(BCD_A, HIGH); //A + digitalWrite(NX3A, 1); //Switch on Anode Nixie 3 + break; + case 99: + digitalWrite(BCD_D, HIGH); //D + digitalWrite(BCD_C, HIGH); //C + digitalWrite(BCD_B, HIGH); //B + digitalWrite(BCD_A, HIGH); //A + digitalWrite(NX3A, 0); //Switch off Anode Nixie 3 + break; + } +} + +void printNixie4(int8_t a){ + switch (a) { + case 0: + digitalWrite(BCD_D, LOW); //D + digitalWrite(BCD_C, LOW); //C + digitalWrite(BCD_B, LOW); //B + digitalWrite(BCD_A, LOW); //A + digitalWrite(NX4A, 1); //Switch on Anode Nixie 4 + break; + case 1: + digitalWrite(BCD_D, LOW); //D + digitalWrite(BCD_C, LOW); //C + digitalWrite(BCD_B, LOW); //B + digitalWrite(BCD_A, HIGH); //A + digitalWrite(NX4A, 1); //Switch on Anode Nixie 4 + break; + case 2: + digitalWrite(BCD_D, LOW); //D + digitalWrite(BCD_C, LOW); //C + digitalWrite(BCD_B, HIGH); //B + digitalWrite(BCD_A, LOW); //A + digitalWrite(NX4A, 1); //Switch on Anode Nixie 4 + break; + case 3: + digitalWrite(BCD_D, LOW); //D + digitalWrite(BCD_C, LOW); //C + digitalWrite(BCD_B, HIGH); //B + digitalWrite(BCD_A, HIGH); //A + digitalWrite(NX4A, 1); //Switch on Anode Nixie 4 + break; + case 4: + digitalWrite(BCD_D, LOW); //D + digitalWrite(BCD_C, HIGH); //C + digitalWrite(BCD_B, LOW); //B + digitalWrite(BCD_A, LOW); //A + digitalWrite(NX4A, 1); //Switch on Anode Nixie 4 + break; + case 5: + digitalWrite(BCD_D, LOW); //D + digitalWrite(BCD_C, HIGH); //C + digitalWrite(BCD_B, LOW); //B + digitalWrite(BCD_A, HIGH); //A + digitalWrite(NX4A, 1); //Switch on Anode Nixie 4 + break; + case 6: + digitalWrite(BCD_D, LOW); //D + digitalWrite(BCD_C, HIGH); //C + digitalWrite(BCD_B, HIGH); //B + digitalWrite(BCD_A, LOW); //A + digitalWrite(NX4A, 1); //Switch on Anode Nixie 4 + break; + case 7: + digitalWrite(BCD_D, LOW); //D + digitalWrite(BCD_C, HIGH); //C + digitalWrite(BCD_B, HIGH); //B + digitalWrite(BCD_A, HIGH); //A + digitalWrite(NX4A, 1); //Switch on Anode Nixie 4 + break; + case 8: + digitalWrite(BCD_D, HIGH); //D + digitalWrite(BCD_C, LOW); //C + digitalWrite(BCD_B, LOW); //B + digitalWrite(BCD_A, LOW); //A + digitalWrite(NX4A, 1); //Switch on Anode Nixie 4 + break; + case 9: + digitalWrite(BCD_D, HIGH); //D + digitalWrite(BCD_C, LOW); //C + digitalWrite(BCD_B, LOW); //B + digitalWrite(BCD_A, HIGH); //A + digitalWrite(NX4A, 1); //Switch on Anode Nixie 4 + break; + case 99: + digitalWrite(BCD_D, HIGH); //D + digitalWrite(BCD_C, HIGH); //C + digitalWrite(BCD_B, HIGH); //B + digitalWrite(BCD_A, HIGH); //A + digitalWrite(NX4A, 0); //Switch off Anode Nixie 4 break; } } \ No newline at end of file diff --git a/nixie.h b/nixie.h index 38ebb61..f4a8258 100644 --- a/nixie.h +++ b/nixie.h @@ -2,5 +2,7 @@ #include "Arduino.h" #include "hardware.h" -void printNixie(int8_t a); -void printNixie2(int8_t a); \ No newline at end of file +void printNixie1(int8_t a); +void printNixie2(int8_t a); +void printNixie3(int8_t a); +void printNixie4(int8_t a); \ No newline at end of file