// https://forum.arduino.cc/t/serial-monitor-wont-display-loop-statements/1437266/
//
#include <DS3231.h>
DS3231 rtc(SDA, SCL);
Time t;
//*****************************************************
#include <OneWire.h>
#include <math.h>
#include <DallasTemperature.h>
OneWire ds(60);
int digOne = 0, digTwo = 0, digThree = 0, digFour = 0;
int digFive = 0;
//******************************************************
// Use convention of N1N2N2N4 (reading the Nixie tubes left to right in display) and
const int N1B = 26; //HOURS Tens digit
const int N1C = 28;
const int N1A = 22;
const int N1D = 24;
const int N2B = 34; //HOURS Ones Digit
const int N2C = 36;
const int N2A = 30;
const int N2D = 32;
const int N3B = 42; // MINUTES tens digit
const int N3C = 44;
const int N3A = 38;
const int N3D = 40;
const int N4B = 50; //Minutes ones digit
const int N4C = 52;
const int N4A = 46;
const int N4D = 48;
const int N5B = 17; //SECONDS ones digit
const int N5C = 16;
const int N5A = 19;
const int N5D = 18;
//
//................Define the pushbutton panel Analog Inputs .................
const int but0 = 62; // Assign variable names of button numbers to inputs.
const int but1 = 63;
const int but2 = 64;
const int but3 = 65;
const int but4 = 66;
const int but5 = 67;
const int but6 = 68;
const int but7 = 69;
//
int but0state = 0; // define a variable to follow if button is being pushed.
int but1state = 0;
int but2state = 0;
int but3state = 0;
int but4state = 0;
int but5state = 0;
int but6state = 0;
int but7state = 0;
//
byte nowHour, nowMinute, nowSecond, nowDow, nowDate;
byte dig1, dig2, dig3, dig4;
byte dig5;
// -----------------------------------------------------------------------------------
void setup(void) {
pinMode(N1A, OUTPUT); //Least Significant Bit (LSB)
pinMode(N1B, OUTPUT);
pinMode(N1C, OUTPUT);
pinMode(N1D, OUTPUT); //MSB
//
pinMode(N2A, OUTPUT); //LSB
pinMode(N2B, OUTPUT);
pinMode(N2C, OUTPUT);
pinMode(N2D, OUTPUT); //MSB
//
pinMode(N3A, OUTPUT); //LSB 2**0
pinMode(N3B, OUTPUT); // 2**1
pinMode(N3C, OUTPUT); // 2**2
pinMode(N3D, OUTPUT); //MSB 2**3
//
pinMode(N4A, OUTPUT); //LSB
pinMode(N4B, OUTPUT);
pinMode(N4C, OUTPUT);
pinMode(N4D, OUTPUT); //MSB
//
pinMode(N5A, OUTPUT); //LSB
pinMode(N5B, OUTPUT);
pinMode(N5C, OUTPUT);
pinMode(N5D, OUTPUT); //MSB
//
//
rtc.begin();
//
// The following lines can be uncommented to set the date and time - uncomment - then upload - the uncomment and re-upload.
rtc.setDOW(THURSDAY); // Set Day-of-Week to SUNDAY
rtc.setTime(13, 02, 40); // (Hr,Mn,Sec) Set the time to 10:58:09 (Use 24hr format when setting time & use no leading 0.)
rtc.setDate(26, 3, 2026); // Set the date to day,month, year i.e. 31 Dec 2017
// -----
Serial.begin(9600);
delay(1000);
Serial.println(".................");
Serial.print("THIS LINE PRINTS FROM SETUP");
Serial.println(".................");
}
////////////////////////// MAIN PROGRAM LOOP //////////////////////////////////
void loop(void) {
// Read the state of the buttons........
but0state = digitalRead(but0);
but1state = digitalRead(but1);
but2state = digitalRead(but2);
but3state = digitalRead(but3);
but4state = digitalRead(but4);
but5state = digitalRead(but5);
but6state = digitalRead(but6);
but7state = digitalRead(but7);
//
t = rtc.getTime();
// Send date over serial monitor connection to help trouble shoot the time and program display.
Serial.println(" ");
Serial.println("*** START OF DATA ***");
Serial.print("DATE: ");
Serial.print(t.date, DEC);
Serial.print(" ");
Serial.print(rtc.getMonthStr());
Serial.print(", ");
Serial.print(t.year, DEC);
Serial.println(".");
Serial.print("Day of Week:");
Serial.print(t.dow, DEC);
Serial.print("/7");
Serial.println(".");
Serial.print(t.hour, DEC);
Serial.print(":");
Serial.print(t.min, DEC);
Serial.print(":");
Serial.print(t.sec, DEC);
Serial.print(" ");
Serial.println(" ");
Serial.print("Nix 1 = ");
Serial.print(dig1);
Serial.println(" ");
Serial.print("Nix 2 = ");
Serial.print(dig2);
Serial.println(" ");
Serial.print("Nix 3 = ");
Serial.print(dig3);
Serial.println(" ");
Serial.print("Nix 4 = ");
Serial.print(dig4);
Serial.println(" ");
Serial.print("Nix 5 = ");
Serial.print(dig5);
Serial.print(" ");
Serial.println(" ");
Serial.println(" ");
Serial.print(but7state);
Serial.print(but6state);
Serial.print(but5state);
Serial.print(but4state);
Serial.print(but3state);
Serial.print(but2state);
Serial.print(but1state);
Serial.print(but0state);
Serial.println("<--- Button States 7 thru 0");
// Send date over serial monitor connection to help trouble shoot the time and program display.
//
byte i;
byte present = 0;
byte type_s;
byte data[12];
byte addr[8];
float celsius, fahrenheit;
if (!ds.search(addr)) {
Serial.println("No more addresses.");
Serial.println();
ds.reset_search();
delay(250);
return;
}
Serial.print(" ROM =");
for ( i = 0; i < 8; i++) {
Serial.write(' ');
Serial.print(addr[i], HEX);
}
if (OneWire::crc8(addr, 7) != addr[7]) {
Serial.println("CRC is not valid!");
return;
}
Serial.println();
switch (addr[0]) {
case 0x10:
Serial.println(" Chip = DS18S20"); // or old DS1820
type_s = 1;
break;
case 0x28:
Serial.println(" Chip = DS18B20");
type_s = 0;
break;
case 0x22:
Serial.println(" Chip = DS1822");
type_s = 0;
break;
default:
Serial.println("Device is not a DS18x20 family device.");
return;
}
ds.reset();
ds.select(addr);
ds.write(0x44, 1);
delay(1000);
present = ds.reset();
ds.select(addr);
ds.write(0xBE);
Serial.print(" Data = ");
Serial.print(present, HEX);
Serial.print(" ");
for ( i = 0; i < 9; i++) {
data[i] = ds.read();
Serial.print(data[i], HEX);
Serial.print(" ");
}
Serial.print(" CRC=");
Serial.print(OneWire::crc8(data, 8), HEX);
Serial.println();
int16_t raw = (data[1] << 8) | data[0];
if (type_s) {
raw = raw << 3; // 9 bit resolution default
if (data[7] == 0x10) {
// "count remain" gives full 12 bit resolution
raw = (raw & 0xFFF0) + 12 - data[6];
}
} else {
byte cfg = (data[4] & 0x60);
if (cfg == 0x00) raw = raw & ~7;
else if (cfg == 0x20) raw = raw & ~3;
else if (cfg == 0x40) raw = raw & ~1;
}
celsius = (float)raw / 16.0;
fahrenheit = celsius * 1.8 + 32.0;
Serial.print("Temperature = ");
Serial.print(fahrenheit);
Serial.print(" ");
Serial.print(fahrenheit, 1);
Serial.print(" ");
int c1 = (fahrenheit + .00) * 10;
Serial.print(c1);
Serial.print(" c1 fahrenheit x10 ");
float temperature = (fahrenheit - 5.50);
//digOne - Tens
temperature /= 10;
digOne = temperature;
//digTwo - Ones
temperature = (temperature - digOne) * 10;
digTwo = temperature;
//digThree - Decimal
temperature = (temperature - digTwo) * 10;
digThree = temperature;
//digFour - N4Dredths
temperature = (temperature - digThree) * 10;
digFour = temperature;
digFive = nowSecond % 10; //Ones digit of the Seconds
Serial.print("temper ");
Serial.println();
Serial.print("Nix T1 = ");
Serial.print(digOne);
Serial.println(" ");
Serial.print("Nix T2 = ");
Serial.print(digTwo);
Serial.println(" ");
Serial.print("Nix T3 = ");
Serial.print(digThree);
Serial.println(" ");
Serial.print("Nix T4 = ");
Serial.print(digFour);
Serial.println(" ");
Serial.print("Nix T5 = ");
Serial.print(digFive);
Serial.println(" ");
Serial.println(" ^^^^^ END OF DATA ^^^^^ ");
DisplayWhat();
//Now call the routine to drive the Nixie tubes with the correct Chip Driver pattern.
//
//DriveTubes();
byte freq = t.sec;
if (freq >= 0 && freq <= 12 && but0state != HIGH && but1state != HIGH && but2state != HIGH && but3state != HIGH && but4state != HIGH
&& but5state != HIGH && but6state != HIGH && but7state != HIGH)
{
//Display A Full Colon for the time:
//Top Colon Light
digitalWrite(7, HIGH);
//Bottom Colon Point
digitalWrite(3, HIGH);
DisplayTime(); //Time
DriveTubes();
delay(10);
}
else if (freq >= 13 && freq <= 17 && but0state != HIGH && but1state != HIGH && but2state != HIGH && but3state != HIGH && but4state != HIGH
&& but5state != HIGH && but6state != HIGH && but7state != HIGH)
{
//Top Colon Light
digitalWrite(7, LOW);
//Bottom Colon Point
digitalWrite(3, HIGH);
digFive = nowSecond % 10; //Ones digit of the Seconds
DriveN5();
DisplayTemp();
delay(10);
}
else if (freq >= 18 && freq <= 27 && but0state != HIGH && but1state != HIGH && but2state != HIGH && but3state != HIGH && but4state != HIGH
&& but5state != HIGH && but6state != HIGH && but7state != HIGH)
{
//Top Colon Light
digitalWrite(7, HIGH);
//Bottom Colon Point
digitalWrite(3, HIGH);
DisplayTime(); //Time
DriveTubes();
delay(10);
}
else if (freq >= 28 && freq <= 32 && but0state != HIGH && but1state != HIGH && but2state != HIGH && but3state != HIGH && but4state != HIGH
&& but5state != HIGH && but6state != HIGH && but7state != HIGH)
{
//Top Colon Light
digitalWrite(7, LOW);
//Bottom Colon Point
digitalWrite(3, HIGH);
digFive = nowSecond % 10; //Ones digit of the Seconds
DriveN5();
DisplayTemp();
delay(10);
}
else if (freq >= 33 && freq <= 42 && but0state != HIGH && but1state != HIGH && but2state != HIGH && but3state != HIGH && but4state != HIGH
&& but5state != HIGH && but6state != HIGH && but7state != HIGH)
{
//Top Colon Light
digitalWrite(7, HIGH);
//Bottom Colon Point
digitalWrite(3, HIGH);
DisplayTime(); //Time
DriveTubes();
delay(10);
}
else if (freq >= 43 && freq <= 47 && but0state != HIGH && but1state != HIGH && but2state != HIGH && but3state != HIGH && but4state != HIGH
&& but5state != HIGH && but6state != HIGH && but7state != HIGH)
{
//Top Colon Light
digitalWrite(7, LOW);
//Bottom Colon Point
digitalWrite(3, HIGH);
digFive = nowSecond % 10; //Ones digit of the Seconds
DriveN5();
DisplayTemp();
delay(10);
}
else if (freq >= 48 && freq <= 49 && but0state != HIGH && but1state != HIGH && but2state != HIGH && but3state != HIGH && but4state != HIGH
&& but5state != HIGH && but6state != HIGH && but7state != HIGH)
{
//Top Colon Light
digitalWrite(7, HIGH);
//Bottom Colon Point
digitalWrite(3, HIGH);
RunPoison();
delay(10);
}
else if (freq >= 50 && freq <= 60 && but0state != HIGH && but1state != HIGH && but2state != HIGH && but3state != HIGH && but4state != HIGH
&& but5state != HIGH && but6state != HIGH && but7state != HIGH)
{
//Top Colon Light
digitalWrite(7, HIGH);
//Bottom Colon Point
digitalWrite(3, HIGH);
DisplayTime();// Time
DriveTubes();
delay(10);
}
}
/////////////////////////////////// SUBROUTINES /////////////////////
void DisplayWhat()
{
if (but0state == HIGH || but1state == HIGH || but2state == HIGH || but3state == HIGH)
{
ChangeTime();
}
else if (but4state == HIGH)
{
DisplayTemp();
}
else if (but5state == HIGH)
{
DisplaySec();
}
else if (but6state == HIGH)
{
DisplayDate();
}
else if (but7state == HIGH)
{
digitalWrite(3, LOW); //D1
digitalWrite(7, LOW); //C1
//
RunPoison();
}
}
void DisplayTime()
{
t = rtc.getTime();
nowHour = t.hour;
nowMinute = t.min;
nowSecond = t.sec;
if (nowHour > 12) nowHour = nowHour - 12; // Needed for non-military display
if (nowHour == 0) nowHour = 12;
//
// Strip off the digits for the time to drive each nixie tube independently
dig1 = nowHour / 10; //First digit of the hour (1 or 0)
dig2 = nowHour % 10; //Second digit of the hour.
dig3 = nowMinute / 10; //First digit of the minute (40, 30, 20 etc)
dig4 = nowMinute % 10; //Second digit of the minute
dig5 = nowSecond % 10; //Ones digit of the Seconds
//
//nowSecond%10; //Ones digit of the seconds counter
if (dig1 == 0) dig1 = 16; //So that the first digit just won't be lit up at all. driveves ABCD bits all HIGH for no outputs on.
if (dig3 == 6) dig3 = 0; //So that the first digit just won't be lit up at all. ABCD drives all LOW = no outputs on chip driver for a 0.
}
//
void DisplaySec()
{
t = rtc.getTime();
nowSecond = t.sec;
//
// Strip off the digits for the time to drive each nixie tube independently
dig1 = 0;
dig2 = 0;
dig3 = nowSecond / 10; //First digit of the seconds (40, 30, 20 etc)
dig4 = nowSecond % 10; //Second digit of the Seconds
//
DriveTubes();
}
void DisplayDate()
{
t = rtc.getTime();
nowDate = t.date;
nowDow = t.dow;
//
// Strip off the digits for the time to drive each nixie tube independently
dig1 = nowDow / 10; //First digit of the hour (1 or 0)
dig2 = nowDow % 10; //Second digit of the hour.
dig3 = nowDate / 10; //First digit of the minute (40, 30, 20 etc)
dig4 = nowDate % 10; //Second digit of the minute
//
DriveTubes();
}
void ChangeTime()
{
byte prevHour = t.hour;
byte prevMin = t.min;
byte prevSec = t.sec;
int newHour, newMin;
newHour = prevHour;
newMin = prevMin;
if (but0state == HIGH)
{ // Increment the Hour up by 1
newHour = prevHour + 1;
DisplayTime();
DriveTubes();
if (newHour >= 24) newHour = 0;
}
else if (but1state == HIGH)
{ // Decrement the Hour down by one
newHour = prevHour - 1;
DisplayTime();
DriveTubes();
if (newHour <= 0) newHour = 23;
}
if (but2state == HIGH)
{ // Increment the Minute up by one
newMin = prevMin + 1;
DisplayTime();
DriveTubes();
if (newMin > 59) newMin = 0;
}
else if (but3state == HIGH)
{ // Decrement Minute down by one
newMin = prevMin - 1;
DisplayTime();
DriveTubes();
if (newMin < 0) newMin = 59;
}
rtc.setTime(newHour, newMin, prevSec);
}
//
void RunPoison()
// Run through the digits on all nixies to prevent cathode poisoning - on Pushbutton 8 only.
// This code cycles through the digits of a Nixie Tube.
{
for (int i = 0; i < 10; i++)
{
//0
digitalWrite(N1D, LOW); //D1 MSB
digitalWrite(N1C, LOW); //C1 MSB -1
digitalWrite(N1B, LOW); //B1 MSB -2
digitalWrite(N1A, LOW); //A1 LSB
delay(10);
digitalWrite(N2D, LOW); //D2
digitalWrite(N2C, LOW); //C2
digitalWrite(N2B, LOW); //B2
digitalWrite(N2A, LOW); //A2
delay(10);
digitalWrite(N3D, LOW); //D3
digitalWrite(N3C, LOW); //C3
digitalWrite(N3B, LOW); //B3
digitalWrite(N3A, LOW); //A3
delay(10);
digitalWrite(N4D, LOW); //D3
digitalWrite(N4C, LOW); //C3
digitalWrite(N4B, LOW); //B3
digitalWrite(N4A, LOW); //A3
delay(10);
digitalWrite(N5D, LOW); //D3
digitalWrite(N5C, LOW); //C3
digitalWrite(N5B, LOW); //B3
digitalWrite(N5A, LOW); //A3
delay(10);
//1
digitalWrite(N1D, LOW); //D1
digitalWrite(N1C, LOW); //C1
digitalWrite(N1B, LOW); //B1
digitalWrite(N1A, HIGH); //A1
delay(10);
digitalWrite(N2D, LOW); //D2
digitalWrite(N2C, LOW); //C2
digitalWrite(N2B, LOW); //B2
digitalWrite(N2A, HIGH); //A2
delay(10);
digitalWrite(N3D, LOW); //D3
digitalWrite(N3C, LOW); //C3
digitalWrite(N3B, LOW); //B3
digitalWrite(N3A, HIGH); //A3
delay(10);
digitalWrite(N4D, LOW); //D3
digitalWrite(N4C, LOW); //C3
digitalWrite(N4B, LOW); //B3
digitalWrite(N4A, HIGH); //A3
delay(10);
digitalWrite(N5D, LOW); //D3
digitalWrite(N5C, LOW); //C3
digitalWrite(N5B, LOW); //B3
digitalWrite(N5A, HIGH); //A3
delay(10);
//2
digitalWrite(N1D, LOW); //D1
digitalWrite(N1C, LOW); //C1
digitalWrite(N1B, HIGH); //B1
digitalWrite(N1A, LOW); //A1
delay(10);
digitalWrite(N2D, LOW); //D2
digitalWrite(N2C, LOW); //C2
digitalWrite(N2B, HIGH); //B2
digitalWrite(N2A, LOW); //A2
delay(10);
digitalWrite(N3D, LOW); //D3
digitalWrite(N3C, LOW); //C3
digitalWrite(N3B, HIGH); //B3
digitalWrite(N3A, LOW); //A3
delay(10);
digitalWrite(N4D, LOW); //D3
digitalWrite(N4C, LOW); //C3
digitalWrite(N4B, HIGH); //B3
digitalWrite(N4A, LOW); //A3
delay(10);
digitalWrite(N5D, LOW); //D3
digitalWrite(N5C, LOW); //C3
digitalWrite(N5B, HIGH); //B3
digitalWrite(N5A, LOW); //A3
delay(10);
//3
digitalWrite(N1D, LOW); //D1
digitalWrite(N1C, LOW); //C1
digitalWrite(N1B, HIGH); //B1
digitalWrite(N1A, HIGH); //A1
delay(10);
digitalWrite(N2D, LOW); //D2
digitalWrite(N2C, LOW); //C2
digitalWrite(N2B, HIGH); //B2
digitalWrite(N2A, HIGH); //A2
delay(10);
digitalWrite(N3D, LOW); //D3
digitalWrite(N3C, LOW); //C3
digitalWrite(N3B, HIGH); //B3
digitalWrite(N3A, HIGH); //A3
delay(10);
digitalWrite(N4D, LOW); //D3
digitalWrite(N4C, LOW); //C3
digitalWrite(N4B, HIGH); //B3
digitalWrite(N4A, HIGH); //A3
delay(10);
digitalWrite(N5D, LOW); //D3
digitalWrite(N5C, LOW); //C3
digitalWrite(N5B, HIGH); //B3
digitalWrite(N5A, HIGH); //A3
delay(10);
//4
digitalWrite(N1D, LOW); //D1
digitalWrite(N1C, HIGH); //C1
digitalWrite(N1B, LOW); //B1
digitalWrite(N1A, LOW); //A1
delay(10);
digitalWrite(N2D, LOW); //D2
digitalWrite(N2C, HIGH); //C2
digitalWrite(N2B, LOW); //B2
digitalWrite(N2A, LOW); //A2
delay(10);
digitalWrite(N3D, LOW); //D3
digitalWrite(N3C, HIGH); //C3
digitalWrite(N3B, LOW); //B3
digitalWrite(N3A, LOW); //A3
delay(10);
digitalWrite(N4D, LOW); //D3
digitalWrite(N4C, HIGH); //C3
digitalWrite(N4B, LOW); //B3
digitalWrite(N4A, LOW); //A3
delay(10);
digitalWrite(N5D, LOW); //D3
digitalWrite(N5C, HIGH); //C3
digitalWrite(N5B, LOW); //B3
digitalWrite(N5A, LOW); //A3
delay(10);
//5
digitalWrite(N1D, LOW); //D1
digitalWrite(N1C, HIGH); //C1
digitalWrite(N1B, LOW); //B1
digitalWrite(N1A, HIGH); //A1
delay(10);
digitalWrite(N2D, LOW); //D2
digitalWrite(N2C, HIGH); //C2
digitalWrite(N2B, LOW); //B2
digitalWrite(N2A, HIGH); //A2
delay(10);
digitalWrite(N3D, LOW); //D3
digitalWrite(N3C, HIGH); //C3
digitalWrite(N3B, LOW); //B3
digitalWrite(N3A, HIGH); //A3
delay(10);
digitalWrite(N4D, LOW); //D3
digitalWrite(N4C, HIGH); //C3
digitalWrite(N4B, LOW); //B3
digitalWrite(N4A, HIGH); //A3
delay(10);
digitalWrite(N5D, LOW); //D3
digitalWrite(N5C, HIGH); //C3
digitalWrite(N5B, HIGH); //B3
digitalWrite(N5A, HIGH); //A3
delay(10);
//6
digitalWrite(N1D, LOW); //D1
digitalWrite(N1C, HIGH); //C1
digitalWrite(N1B, HIGH); //B1
digitalWrite(N1A, LOW); //A1
delay(10);
digitalWrite(N2D, LOW); //D2
digitalWrite(N2C, HIGH); //C2
digitalWrite(N2B, HIGH); //B2
digitalWrite(N2A, LOW); //A2
delay(10);
digitalWrite(N3D, LOW); //D3
digitalWrite(N3C, HIGH); //C3
digitalWrite(N3B, HIGH); //B3
digitalWrite(N3A, LOW); //A3
delay(10);
digitalWrite(N4D, LOW); //D3
digitalWrite(N4C, HIGH); //C3
digitalWrite(N4B, HIGH); //B3
digitalWrite(N4A, LOW); //A3
delay(10);
digitalWrite(N5D, LOW); //D3
digitalWrite(N5C, HIGH); //C3
digitalWrite(N5B, HIGH); //B3
digitalWrite(N5A, LOW); //A3
delay(10);
//7
digitalWrite(N1D, LOW); //D1
digitalWrite(N1C, HIGH); //C1
digitalWrite(N1B, HIGH); //B1
digitalWrite(N1A, HIGH); //A1
delay(10);
digitalWrite(N2D, LOW); //D2
digitalWrite(N2C, HIGH); //C2
digitalWrite(N2B, HIGH); //B2
digitalWrite(N2A, HIGH); //A2
delay(10);
digitalWrite(N3D, LOW); //D3
digitalWrite(N3C, HIGH); //C3
digitalWrite(N3B, HIGH); //B3
digitalWrite(N3A, HIGH); //A3
delay(10);
digitalWrite(N4D, LOW); //D3
digitalWrite(N4C, HIGH); //C3
digitalWrite(N4B, HIGH); //B3
digitalWrite(N4A, HIGH); //A3
delay(10);
digitalWrite(N5D, LOW); //D3
digitalWrite(N5C, HIGH); //C3
digitalWrite(N5B, HIGH); //B3
digitalWrite(N5A, HIGH); //A3
delay(10);
//8
digitalWrite(N1D, HIGH); //D1
digitalWrite(N1C, LOW); //C1
digitalWrite(N1B, LOW); //B1
digitalWrite(N1A, LOW); //A1
delay(10);
digitalWrite(N2D, HIGH); //D2
digitalWrite(N2C, LOW); //C2
digitalWrite(N2B, LOW); //B2
digitalWrite(N2A, LOW); //A2
delay(10);
digitalWrite(N3D, HIGH); //D3
digitalWrite(N3C, LOW); //C3
digitalWrite(N3B, LOW); //B3
digitalWrite(N3A, LOW); //A3
delay(10);
digitalWrite(N4D, HIGH); //D3
digitalWrite(N4C, LOW); //C3
digitalWrite(N4B, LOW); //B3
digitalWrite(N4A, LOW); //A3
delay(10);
digitalWrite(N5D, HIGH); //D3
digitalWrite(N5C, LOW); //C3
digitalWrite(N5B, LOW); //B3
digitalWrite(N5A, LOW); //A3
delay(10);
//9
digitalWrite(N1D, HIGH); //D1
digitalWrite(N1C, LOW); //C1
digitalWrite(N1B, LOW); //B1
digitalWrite(N1A, HIGH); //A1
delay(10);
digitalWrite(N2D, HIGH); //D2
digitalWrite(N2C, LOW); //C2
digitalWrite(N2B, LOW); //B2
digitalWrite(N2A, HIGH); //A2
delay(10);
digitalWrite(N3D, HIGH); //D3
digitalWrite(N3C, LOW); //C3
digitalWrite(N3B, LOW); //B3
digitalWrite(N3A, HIGH); //A3
delay(10);
digitalWrite(N4D, HIGH); //D3
digitalWrite(N4C, LOW); //C3
digitalWrite(N4B, LOW); //B3
digitalWrite(N4A, HIGH); //A3
delay(10);
digitalWrite(N5D, HIGH); //D3
digitalWrite(N5C, LOW); //C3
digitalWrite(N5B, LOW); //B3
digitalWrite(N5A, HIGH); //A3
delay(10);
}
}
//
//
void DriveTubes() //..............Evaluate and display each nixie tube bit pattern.............................
{
// - ----------------------- Display First Nixie Tube Digit N1 --------------
if (dig1 == 16) // write overflow to turn off all chip outputs and blank out the nixie tube.
{
digitalWrite(N1A, HIGH);
digitalWrite(N1B, HIGH);
digitalWrite(N1C, HIGH);
digitalWrite(N1D, HIGH);
}
if (dig1 == 0) //write 0000
{
digitalWrite(N1A, LOW);
digitalWrite(N1B, LOW);
digitalWrite(N1C, LOW);
digitalWrite(N1D, LOW);
}
if (dig1 == 1) //write 0001
{
digitalWrite(N1A, HIGH);
digitalWrite(N1B, LOW);
digitalWrite(N1C, LOW);
digitalWrite(N1D, LOW);
}
if (dig1 == 2) //write 0010
{
digitalWrite(N1A, LOW);
digitalWrite(N1B, HIGH);
digitalWrite(N1C, LOW);
digitalWrite(N1D, LOW);
}
if (dig1 == 3) //write 0011
{
digitalWrite(N1A, HIGH);
digitalWrite(N1B, HIGH);
digitalWrite(N1C, LOW);
digitalWrite(N1D, LOW);
}
if (dig1 == 4) //write 0100
{
digitalWrite(N1A, LOW);
digitalWrite(N1B, LOW);
digitalWrite(N1C, HIGH);
digitalWrite(N1D, LOW);
}
if (dig1 == 5) //write 0101
{
digitalWrite(N1A, HIGH);
digitalWrite(N1B, LOW);
digitalWrite(N1C, HIGH);
digitalWrite(N1D, LOW);
}
if (dig1 == 6) //write 0110
{
digitalWrite(N1A, LOW);
digitalWrite(N1B, HIGH);
digitalWrite(N1C, HIGH);
digitalWrite(N1D, LOW);
}
if (dig1 == 7) //write 0111
{
digitalWrite(N1A, HIGH);
digitalWrite(N1B, HIGH);
digitalWrite(N1C, HIGH);
digitalWrite(N1D, LOW);
}
if (dig1 == 8) //write 1000
{
digitalWrite(N1A, LOW);
digitalWrite(N1B, LOW);
digitalWrite(N1C, LOW);
digitalWrite(N1D, HIGH);
}
if (dig1 == 9) //write 1001
{
digitalWrite(N1A, HIGH);
digitalWrite(N1B, LOW);
digitalWrite(N1C, LOW);
digitalWrite(N1D, HIGH);
}
// ------------------------- Display Second Nixie Tube Digit N2 -------------------
if (dig2 == 0) //write 0000
{
digitalWrite(N2A, LOW);
digitalWrite(N2B, LOW);
digitalWrite(N2C, LOW);
digitalWrite(N2D, LOW);
}
if (dig2 == 1) //write 0001
{
digitalWrite(N2A, HIGH);
digitalWrite(N2B, LOW);
digitalWrite(N2C, LOW);
digitalWrite(N2D, LOW);
}
if (dig2 == 2) //write 0010
{
digitalWrite(N2A, LOW);
digitalWrite(N2B, HIGH);
digitalWrite(N2C, LOW);
digitalWrite(N2D, LOW);
}
if (dig2 == 3) //write 0011
{
digitalWrite(N2A, HIGH);
digitalWrite(N2B, HIGH);
digitalWrite(N2C, LOW);
digitalWrite(N2D, LOW);
}
if (dig2 == 4) //write 0100
{
digitalWrite(N2A, LOW);
digitalWrite(N2B, LOW);
digitalWrite(N2C, HIGH);
digitalWrite(N2D, LOW);
}
if (dig2 == 5) //write 0101
{
digitalWrite(N2A, HIGH);
digitalWrite(N2B, LOW);
digitalWrite(N2C, HIGH);
digitalWrite(N2D, LOW);
}
if (dig2 == 6) //write 0110
{
digitalWrite(N2A, LOW);
digitalWrite(N2B, HIGH);
digitalWrite(N2C, HIGH);
digitalWrite(N2D, LOW);
}
if (dig2 == 7) //write 0111
{
digitalWrite(N2A, HIGH);
digitalWrite(N2B, HIGH);
digitalWrite(N2C, HIGH);
digitalWrite(N2D, LOW);
}
if (dig2 == 8) //write 1000
{
digitalWrite(N2A, LOW);
digitalWrite(N2B, LOW);
digitalWrite(N2C, LOW);
digitalWrite(N2D, HIGH);
}
if (dig2 == 9) //write 1001
{
digitalWrite(N2A, HIGH);
digitalWrite(N2B, LOW);
digitalWrite(N2C, LOW);
digitalWrite(N2D, HIGH);
}
// --------------------- Display the Third Nixie Tube Digit N3 -----------
if (dig3 == 0) //write 0000
{
digitalWrite(N3A, LOW);
digitalWrite(N3B, LOW);
digitalWrite(N3C, LOW);
digitalWrite(N3D, LOW);
}
if (dig3 == 1) //write 0001
{
digitalWrite(N3A, HIGH);
digitalWrite(N3B, LOW);
digitalWrite(N3C, LOW);
digitalWrite(N3D, LOW);
}
if (dig3 == 2) //write 0010
{
digitalWrite(N3A, LOW);
digitalWrite(N3B, HIGH);
digitalWrite(N3C, LOW);
digitalWrite(N3D, LOW);
}
if (dig3 == 3) //write 0011
{
digitalWrite(N3A, HIGH);
digitalWrite(N3B, HIGH);
digitalWrite(N3C, LOW);
digitalWrite(N3D, LOW);
}
if (dig3 == 4) //write 0100
{
digitalWrite(N3A, LOW);
digitalWrite(N3B, LOW);
digitalWrite(N3C, HIGH);
digitalWrite(N3D, LOW);
}
if (dig3 == 5) //write 0101
{
digitalWrite(N3A, HIGH);
digitalWrite(N3B, LOW);
digitalWrite(N3C, HIGH);
digitalWrite(N3D, LOW);
}
if (dig3 == 6) //write 0110
{
digitalWrite(N3A, LOW);
digitalWrite(N3B, HIGH);
digitalWrite(N3C, HIGH);
digitalWrite(N3D, LOW);
}
if (dig3 == 7) //write 0111
{
digitalWrite(N3A, HIGH);
digitalWrite(N3B, HIGH);
digitalWrite(N3C, HIGH);
digitalWrite(N3D, LOW);
}
if (dig3 == 8) //write 1000
{
digitalWrite(N3A, LOW);
digitalWrite(N3B, LOW);
digitalWrite(N3C, LOW);
digitalWrite(N3D, HIGH);
}
if (dig3 == 9) //write 1001
{
digitalWrite(N3A, HIGH);
digitalWrite(N3B, LOW);
digitalWrite(N3C, LOW);
digitalWrite(N3D, HIGH);
}
// ---------------------- Display the Fourth Nixie Tube Digit N4 -------------------
if (dig4 == 0) //write 0000
{
digitalWrite(N4A, LOW);
digitalWrite(N4B, LOW);
digitalWrite(N4C, LOW);
digitalWrite(N4D, LOW);
}
if (dig4 == 1) //write 0001
{
digitalWrite(N4A, HIGH);
digitalWrite(N4B, LOW);
digitalWrite(N4C, LOW);
digitalWrite(N4D, LOW);
}
if (dig4 == 2) //write 0010
{
digitalWrite(N4A, LOW);
digitalWrite(N4B, HIGH);
digitalWrite(N4C, LOW);
digitalWrite(N4D, LOW);
}
if (dig4 == 3) //write 0011
{
digitalWrite(N4A, HIGH);
digitalWrite(N4B, HIGH);
digitalWrite(N4C, LOW);
digitalWrite(N4D, LOW);
}
if (dig4 == 4) //write 0100
{
digitalWrite(N4A, LOW);
digitalWrite(N4B, LOW);
digitalWrite(N4C, HIGH);
digitalWrite(N4D, LOW);
}
if (dig4 == 5) //write 0101
{
digitalWrite(N4A, HIGH);
digitalWrite(N4B, LOW);
digitalWrite(N4C, HIGH);
digitalWrite(N4D, LOW);
}
if (dig4 == 6) //write 0110
{
digitalWrite(N4A, LOW);
digitalWrite(N4B, HIGH);
digitalWrite(N4C, HIGH);
digitalWrite(N4D, LOW);
}
if (dig4 == 7) //write 0111
{
digitalWrite(N4A, HIGH);
digitalWrite(N4B, HIGH);
digitalWrite(N4C, HIGH);
digitalWrite(N4D, LOW);
}
if (dig4 == 8) //write 1000
{
digitalWrite(N4A, LOW);
digitalWrite(N4B, LOW);
digitalWrite(N4C, LOW);
digitalWrite(N4D, HIGH);
}
if (dig4 == 9) //write 1001
{
digitalWrite(N4A, HIGH);
digitalWrite(N4B, LOW);
digitalWrite(N4C, LOW);
digitalWrite(N4D, HIGH);
}
delay (10);
// ------------------------- Display Fifth Nixie Tube Digit N5 -------------------
if (dig5 == 0) //write 0000
{
digitalWrite(N5A, LOW);
digitalWrite(N5B, LOW);
digitalWrite(N5C, LOW);
digitalWrite(N5D, LOW);
}
if (dig5 == 1) //write 0001
{
digitalWrite(N5A, HIGH);
digitalWrite(N5B, LOW);
digitalWrite(N5C, LOW);
digitalWrite(N5D, LOW);
}
if (dig5 == 2) //write 0010
{
digitalWrite(N5A, LOW);
digitalWrite(N5B, HIGH);
digitalWrite(N5C, LOW);
digitalWrite(N5D, LOW);
}
if (dig5 == 3) //write 0011
{
digitalWrite(N5A, HIGH);
digitalWrite(N5B, HIGH);
digitalWrite(N5C, LOW);
digitalWrite(N5D, LOW);
}
if (dig5 == 4) //write 0100
{
digitalWrite(N5A, LOW);
digitalWrite(N5B, LOW);
digitalWrite(N5C, HIGH);
digitalWrite(N5D, LOW);
}
if (dig5 == 5) //write 0101
{
digitalWrite(N5A, HIGH);
digitalWrite(N5B, LOW);
digitalWrite(N5C, HIGH);
digitalWrite(N5D, LOW);
}
if (dig5 == 6) //write 0110
{
digitalWrite(N5A, LOW);
digitalWrite(N5B, HIGH);
digitalWrite(N5C, HIGH);
digitalWrite(N5D, LOW);
}
if (dig5 == 7) //write 0111
{
digitalWrite(N5A, HIGH);
digitalWrite(N5B, HIGH);
digitalWrite(N5C, HIGH);
digitalWrite(N5D, LOW);
}
if (dig5 == 8) //write 1000
{
digitalWrite(N5A, LOW);
digitalWrite(N5B, LOW);
digitalWrite(N5C, LOW);
digitalWrite(N5D, HIGH);
}
if (dig5 == 9) //write 1001
{
digitalWrite(N5A, HIGH);
digitalWrite(N5B, LOW);
digitalWrite(N5C, LOW);
digitalWrite(N5D, HIGH);
}
}
void DisplayTemp()
{
//Top Colon Light
digitalWrite(5, LOW);
//Bottom Colon Point
digitalWrite(7, HIGH); //A2
if (digOne == 0) //write 0000
{
digitalWrite(N1A, LOW);
digitalWrite(N1B, LOW);
digitalWrite(N1C, LOW);
digitalWrite(N1D, LOW);
}
if (digOne == 1) //write 0001
{
digitalWrite(N1A, HIGH);
digitalWrite(N1B, LOW);
digitalWrite(N1C, LOW);
digitalWrite(N1D, LOW);
}
if (digOne == 2) //write 0010
{
digitalWrite(N1A, LOW);
digitalWrite(N1B, HIGH);
digitalWrite(N1C, LOW);
digitalWrite(N1D, LOW);
}
if (digOne == 3) //write 0011
{
digitalWrite(N1A, HIGH);
digitalWrite(N1B, HIGH);
digitalWrite(N1C, LOW);
digitalWrite(N1D, LOW);
}
if (digOne == 4) //write 0100
{
digitalWrite(N1A, LOW);
digitalWrite(N1B, LOW);
digitalWrite(N1C, HIGH);
digitalWrite(N1D, LOW);
}
if (digOne == 5) //write 0101
{
digitalWrite(N1A, HIGH);
digitalWrite(N1B, LOW);
digitalWrite(N1C, HIGH);
digitalWrite(N1D, LOW);
}
if (digOne == 6) //write 0110
{
digitalWrite(N1A, LOW);
digitalWrite(N1B, HIGH);
digitalWrite(N1C, HIGH);
digitalWrite(N1D, LOW);
}
if (digOne == 7) //write 0111
{
digitalWrite(N1A, HIGH);
digitalWrite(N1B, HIGH);
digitalWrite(N1C, HIGH);
digitalWrite(N1D, LOW);
}
if (digOne == 8) //write 1000
{
digitalWrite(N1A, LOW);
digitalWrite(N1B, LOW);
digitalWrite(N1C, LOW);
digitalWrite(N1D, HIGH);
}
if (digOne == 9) //write 1001
{
digitalWrite(N1A, HIGH);
digitalWrite(N1B, LOW);
digitalWrite(N1C, LOW);
digitalWrite(N1D, HIGH);
}
if (digTwo == 0) //write 0000
{
digitalWrite(N2A, LOW);
digitalWrite(N2B, LOW);
digitalWrite(N2C, LOW);
digitalWrite(N2D, LOW);
}
if (digTwo == 1) //write 0001
{
digitalWrite(N2A, HIGH);
digitalWrite(N2B, LOW);
digitalWrite(N2C, LOW);
digitalWrite(N2D, LOW);
}
if (digTwo == 2) //write 0010
{
digitalWrite(N2A, LOW);
digitalWrite(N2B, HIGH);
digitalWrite(N2C, LOW);
digitalWrite(N2D, LOW);
}
if (digTwo == 3) //write 0011
{
digitalWrite(N2A, HIGH);
digitalWrite(N2B, HIGH);
digitalWrite(N2C, LOW);
digitalWrite(N2D, LOW);
}
if (digTwo == 4) //write 0100
{
digitalWrite(N2A, LOW);
digitalWrite(N2B, LOW);
digitalWrite(N2C, HIGH);
digitalWrite(N2D, LOW);
}
if (digTwo == 5) //write 0101
{
digitalWrite(N2A, HIGH);
digitalWrite(N2B, LOW);
digitalWrite(N2C, HIGH);
digitalWrite(N2D, LOW);
}
if (digTwo == 6) //write 0110
{
digitalWrite(N2A, LOW);
digitalWrite(N2B, HIGH);
digitalWrite(N2C, HIGH);
digitalWrite(N2D, LOW);
}
if (digTwo == 7) //write 0111
{
digitalWrite(N2A, HIGH);
digitalWrite(N2B, HIGH);
digitalWrite(N2C, HIGH);
digitalWrite(N2D, LOW);
}
if (digTwo == 8) //write 1000
{
digitalWrite(N2A, LOW);
digitalWrite(N2B, LOW);
digitalWrite(N2C, LOW);
digitalWrite(N2D, HIGH);
}
if (digTwo == 9) //write 1001
{
digitalWrite(N2A, HIGH);
digitalWrite(N2B, LOW);
digitalWrite(N2C, LOW);
digitalWrite(N2D, HIGH);
}
if (digThree == 0) //write 0000
{
digitalWrite(N3A, LOW);
digitalWrite(N3B, LOW);
digitalWrite(N3C, LOW);
digitalWrite(N3D, LOW);
}
if (digThree == 1) //write 0001
{
digitalWrite(N3A, HIGH);
digitalWrite(N3B, LOW);
digitalWrite(N3C, LOW);
digitalWrite(N3D, LOW);
}
if (digThree == 2) //write 0010
{
digitalWrite(N3A, LOW);
digitalWrite(N3B, HIGH);
digitalWrite(N3C, LOW);
digitalWrite(N3D, LOW);
}
if (digThree == 3) //write 0011
{
digitalWrite(N3A, HIGH);
digitalWrite(N3B, HIGH);
digitalWrite(N3C, LOW);
digitalWrite(N3D, LOW);
}
if (digThree == 4) //write 0100
{
digitalWrite(N3A, LOW);
digitalWrite(N3B, LOW);
digitalWrite(N3C, HIGH);
digitalWrite(N3D, LOW);
}
if (digThree == 5) //write 0101
{
digitalWrite(N3A, HIGH);
digitalWrite(N3B, LOW);
digitalWrite(N3C, HIGH);
digitalWrite(N3D, LOW);
}
if (digThree == 6) //write 0110
{
digitalWrite(N3A, LOW);
digitalWrite(N3B, HIGH);
digitalWrite(N3C, HIGH);
digitalWrite(N3D, LOW);
}
if (digThree == 7) //write 0111
{
digitalWrite(N3A, HIGH);
digitalWrite(N3B, HIGH);
digitalWrite(N3C, HIGH);
digitalWrite(N3D, LOW);
}
if (digThree == 8) //write 1000
{
digitalWrite(N3A, LOW);
digitalWrite(N3B, LOW);
digitalWrite(N3C, LOW);
digitalWrite(N3D, HIGH);
}
if (digThree == 9) //write 1001
{
digitalWrite(N3A, HIGH);
digitalWrite(N3B, LOW);
digitalWrite(N3C, LOW);
digitalWrite(N3D, HIGH);
}
if (digFour == 0) //write 0000
{
digitalWrite(N4A, LOW);
digitalWrite(N4B, LOW);
digitalWrite(N4C, LOW);
digitalWrite(N4D, LOW);
}
if (digFour == 1) //write 0001
{
digitalWrite(N4A, HIGH);
digitalWrite(N4B, LOW);
digitalWrite(N4C, LOW);
digitalWrite(N4D, LOW);
}
if (digFour == 2) //write 0010
{
digitalWrite(N4A, LOW);
digitalWrite(N4B, HIGH);
digitalWrite(N4C, LOW);
digitalWrite(N4D, LOW);
}
if (digFour == 3) //write 0011
{
digitalWrite(N4A, HIGH);
digitalWrite(N4B, HIGH);
digitalWrite(N4C, LOW);
digitalWrite(N4D, LOW);
}
if (digFour == 4) //write 0100
{
digitalWrite(N4A, LOW);
digitalWrite(N4B, LOW);
digitalWrite(N4C, HIGH);
digitalWrite(N4D, LOW);
}
if (digFour == 5) //write 0101
{
digitalWrite(N4A, HIGH);
digitalWrite(N4B, LOW);
digitalWrite(N4C, HIGH);
digitalWrite(N4D, LOW);
}
if (digFour == 6) //write 0110
{
digitalWrite(N4A, LOW);
digitalWrite(N4B, HIGH);
digitalWrite(N4C, HIGH);
digitalWrite(N4D, LOW);
}
if (digFour == 7) //write 0111
{
digitalWrite(N4A, HIGH);
digitalWrite(N4B, HIGH);
digitalWrite(N4C, HIGH);
digitalWrite(N4D, LOW);
}
if (digFour == 8) //write 1000
{
digitalWrite(N4A, LOW);
digitalWrite(N4B, LOW);
digitalWrite(N4C, LOW);
digitalWrite(N4D, HIGH);
}
if (digFour == 9) //write 1001
{
digitalWrite(N4A, HIGH);
digitalWrite(N4B, LOW);
digitalWrite(N4C, LOW);
digitalWrite(N4D, HIGH);
}
if (digFive == 0) //write 0000
{
digitalWrite(N4A, LOW);
digitalWrite(N4B, LOW);
digitalWrite(N4C, LOW);
digitalWrite(N4D, LOW);
}
}
//---------------------------------------------------
void DriveN5()
{
if (digFive == 0) //write 0000
{
digitalWrite(N4A, LOW);
digitalWrite(N4B, LOW);
digitalWrite(N4C, LOW);
digitalWrite(N4D, LOW);
}
if (digFive == 1) //write 0001
{
digitalWrite(N4A, HIGH);
digitalWrite(N4B, LOW);
digitalWrite(N4C, LOW);
digitalWrite(N4D, LOW);
}
if (digFive == 2) //write 0010
{
digitalWrite(N4A, LOW);
digitalWrite(N4B, HIGH);
digitalWrite(N4C, LOW);
digitalWrite(N4D, LOW);
}
if (digFive == 3) //write 0011
{
digitalWrite(N4A, HIGH);
digitalWrite(N4B, HIGH);
digitalWrite(N4C, LOW);
digitalWrite(N4D, LOW);
}
if (digFive == 4) //write 0100
{
digitalWrite(N4A, LOW);
digitalWrite(N4B, LOW);
digitalWrite(N4C, HIGH);
digitalWrite(N4D, LOW);
}
if (digFive == 5) //write 0101
{
digitalWrite(N4A, HIGH);
digitalWrite(N4B, LOW);
digitalWrite(N4C, HIGH);
digitalWrite(N4D, LOW);
}
if (digFour == 6) //write 0110
{
digitalWrite(N4A, LOW);
digitalWrite(N4B, HIGH);
digitalWrite(N4C, HIGH);
digitalWrite(N4D, LOW);
}
if (digFive == 7) //write 0111
{
digitalWrite(N4A, HIGH);
digitalWrite(N4B, HIGH);
digitalWrite(N4C, HIGH);
digitalWrite(N4D, LOW);
}
if (digFour == 8) //write 1000
{
digitalWrite(N4A, LOW);
digitalWrite(N4B, LOW);
digitalWrite(N4C, LOW);
digitalWrite(N4D, HIGH);
}
if (digFive == 9) //write 1001
{
digitalWrite(N4A, HIGH);
digitalWrite(N4B, LOW);
digitalWrite(N4C, LOW);
digitalWrite(N4D, HIGH);
}
}