Avec 4 Nixies multiplexés

This commit is contained in:
Laurent Claude 2023-07-28 12:35:54 +02:00
parent 453e6dbd22
commit 124b05be2d
4 changed files with 278 additions and 88 deletions

View File

@ -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;

View File

@ -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

277
nixie.cpp
View File

@ -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;
}
}

View File

@ -2,5 +2,7 @@
#include "Arduino.h"
#include "hardware.h"
void printNixie(int8_t a);
void printNixie2(int8_t a);
void printNixie1(int8_t a);
void printNixie2(int8_t a);
void printNixie3(int8_t a);
void printNixie4(int8_t a);