Advertisement
Badjer1983

Arduino Mega Clock Weather Station

May 9th, 2018
3,240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 32.06 KB | None | 0 0
  1. //
  2. #include <DS3231.h>
  3. DS3231  rtc(SDA, SCL);
  4. Time t;
  5. //
  6. //      Use convention of N1N2N2N4 (reading the Nixie tubes left to right in display) and
  7. //      for the time use Hh:Mm
  8. //     These pins wiring drive the Nixie Driver chips ABCD inputs
  9. #define N1C   28  //C - Hour tens digit
  10. #define N1B   26  //B
  11. #define N1D   24  //D
  12. #define N1A   22  //A
  13.  
  14. #define N2C   36 //hour ones digit
  15. #define N2B   34
  16. #define N2D   32
  17. #define N2A   30
  18.  
  19. #define N3C   44 //minutes tens digit
  20. #define N3B   42
  21. #define N3D   40
  22. #define N3A   38
  23.  
  24. #define N4C   52 //minutes ones digit
  25. #define N4B   50
  26. #define N4D   48
  27. #define N4A   46
  28. //
  29. //................Define the pushbutton panel Analog Inputs .................
  30. const int but0 = 62; // Assign variable names of button numbers to inputs.
  31. const int but1 = 63;
  32. const int but2 = 64;
  33. const int but3 = 65;
  34. const int but4 = 66;
  35. const int but5 = 67;
  36. const int but6 = 68;
  37. const int but7 = 69;
  38. //
  39. int but0state = 0; // define a variable to follow if button is being pushed.
  40. int but1state = 0;
  41. int but2state = 0;
  42. int but3state = 0;
  43. int but4state = 0;
  44. int but5state = 0;
  45. int but6state = 0;
  46. int but7state = 0;
  47. //
  48. byte nowHour, nowMinute,nowSecond;
  49. byte dig1, dig2, dig3, dig4;
  50. float fahrenheit;
  51. // ----------------------------------- End of Clock Initialization -----------------------
  52. //
  53. // ------------------------------------Initialize Humidity Sensor -------------------------
  54. #include <Adafruit_Sensor.h>
  55. #include <DHT.h>
  56. #include <DHT_U.h>
  57. #define DHTPIN            56         // Pin which is connected to the DHT sensor.
  58. #define DHTTYPE           DHT22     // DHT 22 (AM2302)
  59. DHT dht(DHTPIN, DHTTYPE);
  60. //uint32_t delayMS;
  61. //
  62. // ------------------------------------End Initialization of Humidity Sensor --------------
  63. //
  64. // ----------------------------------- Initializing for the Temperature / Pressure BME280 Sensor ---------------------------------
  65. #include <stdint.h>
  66. #include "SparkFunBME280.h"
  67. //       Initializing the I2C communications for the BME280
  68. #include "Wire.h"
  69. BME280 mySensor;  //Global sensor object
  70. #include <math.h>
  71. #include "Servo.h"
  72. Servo servo1;
  73. // -------------------------- End of Temp & Pressure BME280 Sensor Initialization --------------------
  74. //
  75. void setup() {
  76. //
  77. servo1.attach(61);
  78.  
  79. //  Establish the pins as outputs.  Drive the Nixie Driver chip in Binary
  80. //  Reference the truth table of the chip driver for how the pattern of ABCD turns on the respective output
  81. // A = 2**0  Least Significant Bit (LSB)
  82. // B = 2**1
  83. // C = 2**2
  84. // D = 2**3  Most Significant Bit (MSB)
  85. //
  86. pinMode(N1A, OUTPUT); //Least Significant Bit (LSB)
  87. pinMode(N1B, OUTPUT);
  88. pinMode(N1C, OUTPUT);
  89. pinMode(N1D, OUTPUT); //MSB
  90. //
  91. pinMode(N2A, OUTPUT); //LSB
  92. pinMode(N2B, OUTPUT);        
  93. pinMode(N2C, OUTPUT);      
  94. pinMode(N2D, OUTPUT); //MSB
  95. //
  96. pinMode(N3A, OUTPUT); //LSB  2**0  38
  97. pinMode(N3B, OUTPUT); // 2**1      42
  98. pinMode(N3C, OUTPUT); // 2**2      44
  99. pinMode(N3D, OUTPUT); //MSB  2**3  40
  100. //
  101. pinMode(N4A, OUTPUT); //LSB
  102. pinMode(N4B, OUTPUT);
  103. pinMode(N4C, OUTPUT);
  104. pinMode(N4D, OUTPUT); //MSB
  105. //  
  106. pinMode(but0,INPUT); // declare inputs for the variables of the buttons.
  107. pinMode(but1,INPUT);
  108. pinMode(but2,INPUT);
  109. pinMode(but3,INPUT);
  110. pinMode(but4,INPUT);
  111. pinMode(but5,INPUT);
  112. pinMode(but6,INPUT);
  113. pinMode(but7,INPUT);
  114. //
  115. // LEDs for the Clock Decimal,Decimal Point and Display Mode (LEDs for F Temp, Hg, %Humidity)
  116. pinMode(7,OUTPUT);
  117. pinMode(6,OUTPUT);
  118. pinMode(5,OUTPUT);
  119. pinMode(9,OUTPUT);
  120. pinMode(8,OUTPUT);
  121. //
  122. rtc.begin();
  123. //
  124. // The following lines can be uncommented to set the date and time - uncomment - then upload - the uncomment and re-upload.
  125. //rtc.setDOW(SATURDAY);     // Set Day-of-Week to SUNDAY
  126. //rtc.setTime(22, 01, 40);     // Set the time to 10:58:09 (Use 24hr format when setting time & use no leading 0.)
  127. //rtc.setDate(17,3,2018);   // Set the date to day,month, year i.e. 31 Dec 2017
  128. // ------------------------------------------------------------------------------------
  129. //-------------------------------- Set Up the BME280 Sensor ------------------------------------------------
  130. // For I2C, enable the following lines to address the sensor
  131. mySensor.settings.commInterface = I2C_MODE;
  132. mySensor.settings.I2CAddress = 0x76;
  133.   //runMode can be:
  134.   //  0, Sleep mode
  135.   //  1 or 2, Forced mode
  136.   //  3, Normal mode
  137. mySensor.settings.runMode = 3; //Normal mode
  138.   //tStandby can be:
  139.   //  0, 0.5ms
  140.   //  1, 62.5ms
  141.   //  2, 125ms
  142.   //  3, 250ms
  143.   //  4, 500ms
  144.   //  5, 1000ms
  145.   //  6, 10ms
  146.   //  7, 20ms
  147.   mySensor.settings.tStandby = 0;
  148.  
  149.   //filter can be off or number of FIR coefficients to use:
  150.   //  0, filter off
  151.   //  1, coefficients = 2
  152.   //  2, coefficients = 4
  153.   //  3, coefficients = 8
  154.   //  4, coefficients = 16
  155.   mySensor.settings.filter = 0;
  156.  
  157.   //tempOverSample can be:
  158.   //  0, skipped
  159.   //  1 through 5, oversampling *1, *2, *4, *8, *16 respectively
  160.   mySensor.settings.tempOverSample = 1;
  161.  
  162.   //pressOverSample can be:
  163.   //  0, skipped
  164.   //  1 through 5, oversampling *1, *2, *4, *8, *16 respectively
  165.     mySensor.settings.pressOverSample = 1;
  166.  
  167.   //humidOverSample can be:
  168.   //  0, skipped
  169.   //  1 through 5, oversampling *1, *2, *4, *8, *16 respectively
  170.   mySensor.settings.humidOverSample = 1;
  171. // End of Set up for the BME280 ----------------------------------------------
  172. // ---------------------START OF THE Serial Port Set Up ....................................
  173. Serial.begin(9600);
  174.  
  175. Serial.print("Program Started\n");
  176. Serial.print("Starting BME280... result of .begin(): 0x");
  177. //------------ Calling .begin() causes the settings to be loaded
  178. delay(10);  //Make sure sensor had enough time to turn on. BME280 requires 2ms to start up.
  179. Serial.println(mySensor.begin(), HEX);
  180. Serial.print("Displaying ID, reset and ctrl regs\n");
  181. Serial.print("ID(0xD0): 0x");
  182. Serial.println(mySensor.readRegister(BME280_CHIP_ID_REG), HEX);
  183. Serial.print("Reset register(0xE0): 0x");
  184. Serial.println(mySensor.readRegister(BME280_RST_REG), HEX);
  185. Serial.print("ctrl_meas(0xF4): 0x");
  186. Serial.println(mySensor.readRegister(BME280_CTRL_MEAS_REG), HEX);
  187. Serial.print("ctrl_hum(0xF2): 0x");
  188. Serial.println(mySensor.readRegister(BME280_CTRL_HUMIDITY_REG), HEX);
  189. Serial.print("\n\n");
  190. Serial.print("Displaying all regs\n");
  191.   uint8_t memCounter = 0x80;
  192.   uint8_t tempReadData;
  193.   for(int rowi = 8; rowi < 16; rowi++ )
  194.   {
  195.     Serial.print("0x");
  196.     Serial.print(rowi, HEX);
  197.     Serial.print("0:");
  198.     for(int coli = 0; coli < 16; coli++ )
  199.     {
  200.       tempReadData = mySensor.readRegister(memCounter);
  201.       Serial.print((tempReadData >> 4) & 0x0F, HEX);//Print first hex nibble
  202.       Serial.print(tempReadData & 0x0F, HEX);//Print second hex nibble
  203.       Serial.print(" ");
  204.       memCounter++;
  205.     }
  206.     Serial.print("\n");
  207.   }
  208. Serial.print("\n\n");
  209. Serial.print("Displaying concatenated calibration words\n");
  210. Serial.print("dig_T1, uint16: ");
  211. Serial.println(mySensor.calibration.dig_T1);
  212. Serial.print("dig_T2, int16: ");
  213. Serial.println(mySensor.calibration.dig_T2);
  214. Serial.print("dig_T3, int16: ");
  215. Serial.println(mySensor.calibration.dig_T3);
  216. Serial.print("dig_P1, uint16: ");
  217. Serial.println(mySensor.calibration.dig_P1);
  218. Serial.print("dig_P2, int16: ");
  219. Serial.println(mySensor.calibration.dig_P2);
  220. Serial.print("dig_P3, int16: ");
  221. Serial.println(mySensor.calibration.dig_P3);
  222. Serial.print("dig_P4, int16: ");
  223. Serial.println(mySensor.calibration.dig_P4);
  224. Serial.print("dig_P5, int16: ");
  225. Serial.println(mySensor.calibration.dig_P5);
  226. Serial.print("dig_P6, int16: ");
  227. Serial.println(mySensor.calibration.dig_P6);
  228. Serial.print("dig_P7, int16: ");
  229. Serial.println(mySensor.calibration.dig_P7);
  230. Serial.print("dig_P8, int16: ");
  231. Serial.println(mySensor.calibration.dig_P8);
  232. Serial.print("dig_P9, int16: ");
  233. Serial.println(mySensor.calibration.dig_P9);
  234. Serial.println();
  235. //
  236. //
  237. // Set up the DHT22 Humidity Sensor ----------------------------------------
  238. dht.begin();
  239. sensor_t sensor;
  240. //delayMS = sensor.min_delay / 100;
  241.  
  242. }
  243. ////////////////////////// MAIN PROGRAM LOOP //////////////////////////////////
  244. void loop() {
  245. //  Read the state of the buttons........
  246. but0state = digitalRead(but0);
  247. but1state = digitalRead(but1);
  248. but2state = digitalRead(but2);
  249. but3state = digitalRead(but3);
  250. but4state = digitalRead(but4);
  251. but5state = digitalRead(but5);
  252. but6state = digitalRead(but6);
  253. but7state = digitalRead(but7);
  254. //
  255. // --------------------------------Servo Humidity Indicator for Last 1 hour ------------
  256. // 31.5 high  27.25 low mmHg .. 29.375 ave,  range = 4.25
  257. //float CurrentHg = 31.5;
  258. float CurrentHg = mySensor.readFloatPressure()*0.000295;// read actual humidity
  259. CurrentHg = map(CurrentHg, 31.5, 27.25, 0, 100);
  260. servo1.write(CurrentHg);
  261. t = rtc.getTime();
  262. // Send date over serial monitor connection to help trouble shoot the time and program display.
  263.   Serial.print("DATE: ");
  264.   Serial.print(t.date, DEC);
  265.   Serial.print(" ");
  266.   Serial.print(rtc.getMonthStr());
  267.   Serial.print(", ");
  268.   Serial.print(t.year, DEC);
  269.   Serial.println(".");
  270. // Send Day-of-Week and time
  271.   Serial.print("Day of Week:");
  272.   Serial.print(t.dow, DEC);
  273.   Serial.print("/7");
  274.   Serial.println(".");
  275.   Serial.print(t.hour, DEC);
  276.   Serial.print(":");
  277.   Serial.print(t.min, DEC);
  278.   Serial.print(":");
  279.   Serial.print(t.sec, DEC);
  280.   Serial.println(" ");
  281.   Serial.println(" ");
  282. // Send current temperature
  283.   Serial.print("Temperature: ");
  284.   Serial.print(rtc.getTemp());
  285.   Serial.println(" C");
  286. // Drive Serial Port for Troubleshooting the program and displays
  287.   Serial.print("");
  288.   Serial.print("Nix 1 = ");
  289.   Serial.print(dig1);
  290.   Serial.println(" ");
  291.   Serial.print("Nix 2 = ");
  292.   Serial.print(dig2);
  293.   Serial.println(" ");
  294.   Serial.print("Nix 3 = ");
  295.   Serial.print(dig3);
  296.   Serial.println(" ");
  297.   Serial.print("Nix 4 = ");
  298.   Serial.print(dig4);
  299.   Serial.print(" ");
  300.   Serial.println(" ");
  301. //
  302. DisplayWhat();
  303. //Now call the routine to drive the Nixie tubes with the correct Chip Driver pattern.
  304. //
  305. DriveTubes();
  306. byte freq = t.sec;
  307. if (freq >= 0 && freq <= 12 && but0state != HIGH && but1state != HIGH && but2state != HIGH && but3state != HIGH && but4state != HIGH
  308. && but5state != HIGH && but6state != HIGH && but7state != HIGH)
  309.     {
  310.         digitalWrite(7, LOW); //Middle Green LED
  311.         digitalWrite(6, HIGH); //Top Colon LED
  312.         digitalWrite(5, HIGH); //Bottom Colon LED
  313.         digitalWrite(8, LOW); //Right Green LED
  314.         digitalWrite(9, LOW); //Left Green LED
  315.         DisplayTime(); //Time
  316.         DriveTubes();
  317.         delay(10);
  318.     }
  319.     else if (freq >= 13 && freq <= 17 && but0state != HIGH && but1state != HIGH && but2state != HIGH && but3state != HIGH && but4state != HIGH
  320. && but5state != HIGH && but6state != HIGH && but7state != HIGH)
  321.     {
  322.         digitalWrite(7, LOW); //Middle Green LED
  323.         digitalWrite(6, LOW); //Top Colon LED
  324.         digitalWrite(5, HIGH); //Bottom Colon LED
  325.         digitalWrite(8, LOW); //Right Green LED
  326.         digitalWrite(9, HIGH); //Left Green LED
  327.         DisplayTemp(); //Temperature
  328.         DriveTubes();
  329.         delay(10);
  330.     }
  331.     else if (freq >= 18 && freq <= 27 && but0state != HIGH && but1state != HIGH && but2state != HIGH && but3state != HIGH && but4state != HIGH
  332. && but5state != HIGH && but6state != HIGH && but7state != HIGH)
  333.     {
  334.         digitalWrite(7, LOW); //Middle Green LED
  335.         digitalWrite(6, HIGH); //Top Colon LED
  336.         digitalWrite(5, HIGH); //Bottom Colon LED
  337.         digitalWrite(8, LOW); //Right Green LED
  338.         digitalWrite(9, LOW); //Left Green LED
  339.         DisplayTime(); //Time
  340.         DriveTubes();
  341.         delay(10);  
  342.     }
  343.       else if (freq >= 28 && freq <= 32 && but0state != HIGH && but1state != HIGH && but2state != HIGH && but3state != HIGH && but4state != HIGH
  344. && but5state != HIGH && but6state != HIGH && but7state != HIGH)
  345.       {
  346.         digitalWrite(7, HIGH); //Middle Green LED
  347.         digitalWrite(6, LOW); //Top Colon LED
  348.         digitalWrite(5, HIGH); //Bottom Colon LED
  349.         digitalWrite(8, LOW); //Right Green LED
  350.         digitalWrite(9, LOW); //Left Green LED
  351.         DisplayPress(); //Pressure
  352.         DriveTubes();
  353.         delay(10);
  354.       }
  355.         else if (freq >= 33 && freq <= 42 && but0state != HIGH && but1state != HIGH && but2state != HIGH && but3state != HIGH && but4state != HIGH
  356. && but5state != HIGH && but6state != HIGH && but7state != HIGH)
  357.     {
  358.         digitalWrite(7, LOW); //Middle Green LED
  359.         digitalWrite(6, HIGH); //Top Colon LED
  360.         digitalWrite(5, HIGH); //Bottom Colon LED
  361.         digitalWrite(8, LOW); //Right Green LED
  362.         digitalWrite(9, LOW); //Left Green LED
  363.         DisplayTime(); //Time
  364.         DriveTubes();
  365.         delay(10);  
  366.     }
  367.         else if (freq >= 43 && freq <= 47 && but0state != HIGH && but1state != HIGH && but2state != HIGH && but3state != HIGH && but4state != HIGH
  368. && but5state != HIGH && but6state != HIGH && but7state != HIGH)
  369.     {
  370.         digitalWrite(7, LOW); //Middle Green LED
  371.         digitalWrite(6, LOW); //Top Colon LED
  372.         digitalWrite(5, HIGH); //Bottom Colon LED
  373.         digitalWrite(8, HIGH); //Right Green LED
  374.         digitalWrite(9, LOW); //Left Green LED
  375.         DisplayHumid(); // humidity
  376.         DriveTubes();
  377.         delay(10);
  378.     }
  379.       else if (freq >= 48 && freq <= 60 && but0state != HIGH && but1state != HIGH && but2state != HIGH && but3state != HIGH && but4state != HIGH
  380. && but5state != HIGH && but6state != HIGH && but7state != HIGH)
  381.       {  
  382.         digitalWrite(7, LOW); //Middle Green LED
  383.         digitalWrite(6, HIGH); //Top Colon LED
  384.         digitalWrite(5, HIGH); //Bottom Colon LED
  385.         digitalWrite(8, LOW); //Right Green LED
  386.         digitalWrite(9, LOW); //Left Green LED
  387.         DisplayTime();// Time
  388.         DriveTubes();
  389.         delay(10);
  390.         }
  391.      
  392. //--------   THE BME280 Pressure & Temeprature Sensor ------------
  393.   Serial.print("Temperature: ");
  394.   Serial.print(mySensor.readTempC(), 2);
  395.   Serial.println(" degrees C");
  396.   Serial.print("Temperature: ");
  397.   Serial.print(mySensor.readTempF(), 2);
  398.   Serial.println(" degrees F");
  399.   float HgPress;
  400.   HgPress = mySensor.readFloatPressure()*0.000295;
  401.   Serial.print("Pressure: ");
  402.   Serial.print(HgPress, 2);
  403.   Serial.println(" in Hg");
  404.   Serial.print("Altitude: ");
  405.   Serial.print(mySensor.readFloatAltitudeMeters(), 2);
  406.   Serial.println("m");
  407.   Serial.print("Altitude: ");
  408.   Serial.print(mySensor.readFloatAltitudeFeet(), 2);
  409.   Serial.println("ft");
  410. //
  411. //
  412. // ---------------  Loop The DHT22 Humidity Sensor ---------------------------
  413. // Get humidity event and print its value.
  414.   sensors_event_t event;  
  415.   //dht.humidity().getEvent(&event);
  416. if (isnan(event.relative_humidity)) {
  417.   Serial.println("Error reading humidity!");
  418.  }
  419.   else {
  420.     Serial.print("Humidity: ");
  421.     Serial.print(dht.readHumidity(),2);
  422.     Serial.println("%");
  423.   }
  424. float h = dht.readHumidity();
  425. }
  426. /////////////////////////////////// SUBROUTINES /////////////////////
  427. void DisplayWhat()
  428. {
  429.   if(but0state == HIGH || but1state == HIGH || but2state == HIGH || but3state == HIGH)
  430.   {
  431.     ChangeTime();
  432.    }
  433.   else if(but4state == HIGH)
  434.   {
  435.     DisplayTemp();
  436.    }
  437.     else if(but5state == HIGH)
  438.   {
  439.     DisplayPress();
  440.    }
  441.     else if(but6state == HIGH)
  442.   {
  443.     DisplayHumid();
  444.     }
  445.     else if(but7state == HIGH)
  446.   {
  447.         digitalWrite(7, HIGH); //Middle Green LED
  448.         digitalWrite(6, HIGH); //Top Colon LED
  449.         digitalWrite(5, HIGH); //Bottom Colon LED
  450.         digitalWrite(8, HIGH); //Right Green LED
  451.         digitalWrite(9, HIGH); //Left Green LED
  452.     RunPoison();
  453.     }
  454. }
  455.  
  456. void DisplayTime()
  457. {
  458.   t=rtc.getTime();
  459.   nowHour = t.hour;
  460.   nowMinute = t.min;
  461.   nowSecond = t.sec;
  462.   if(nowHour>12) nowHour=nowHour-12;  // Needed for non-military display
  463.   if(nowHour == 0) nowHour = 12;
  464. //
  465. // Strip off the digits for the time to drive each nixie tube independently
  466. dig1 = nowHour/10; //First digit of the hour (1 or 0)
  467. dig2 = nowHour%10; //Second digit of the hour.
  468. dig3 = nowMinute/10; //First digit of the minute (40, 30, 20 etc)
  469. dig4 = nowMinute%10; //Second digit of the minute
  470.   if(dig1==0) dig1=16;  //So that the first digit just won't be lit up at all. driveves ABCD bits to no outputs on.
  471.   if(dig3==6) dig3=0;  //So that the first digit just won't be lit up at all.  ABCD drives a 12 = no outputs on chip driver for a 0.
  472. }
  473. //
  474. void ChangeTime()
  475. {
  476.   byte prevHour = t.hour;
  477.   byte prevMin = t.min;
  478.   byte prevSec = t.sec;
  479.   int newHour, newMin;
  480.   newHour = prevHour;
  481.   newMin = prevMin;
  482.   if(but0state == HIGH)
  483.   {// Increment the Hour up by 1
  484.     newHour = prevHour+1;
  485.     DisplayTime();
  486.     DriveTubes();
  487.     if(newHour>=24)  newHour=0;
  488.   }
  489.   else if(but1state == HIGH)
  490.   {// Decrement the Hour down by one
  491.     newHour=prevHour-1;
  492.     DisplayTime();
  493.     DriveTubes();
  494.     if(newHour<=0) newHour=23;
  495.   }
  496.   if(but2state == HIGH)
  497.   {// Increment the Minute up by one
  498.     newMin = prevMin+1;
  499.     DisplayTime();
  500.     DriveTubes();
  501.     if(newMin>59) newMin=0;
  502.   }
  503.   else if(but3state == HIGH)
  504.   {// Decrement Minute down by one
  505.     newMin=prevMin-1;
  506.     DisplayTime();
  507.     DriveTubes();
  508.     if(newMin<0) newMin=59;
  509.   }
  510.   rtc.setTime(newHour,newMin,prevSec);
  511.  }
  512. //
  513. void DisplayTemp()
  514. {
  515.   float temp;
  516.   temp = mySensor.readTempF()-9;// the subtraction calibrates the temp
  517.  
  518.   //N1 - Tens
  519.   temp/=10;
  520.   dig1 = temp;
  521.  
  522.   //N2 - Ones
  523.   temp = (temp-dig1)*10;
  524.   dig2 = temp;
  525.  
  526.   //N3 - Tenths
  527.   temp = (temp-dig2)*10;
  528.   dig3 = temp;
  529.  
  530.   //N4 - Hundreths
  531.   temp = (temp-dig3)*10;
  532.   dig4 = temp;
  533.         digitalWrite(7, LOW); //Middle Green LED
  534.         digitalWrite(6, LOW); //Top Colon LED
  535.         digitalWrite(5, HIGH); //Bottom Colon LED
  536.         digitalWrite(8, LOW); //Right Green LED
  537.         digitalWrite(9, HIGH); //Left Green LED
  538.  }
  539.  
  540. void DisplayPress()
  541. {
  542.   float HgPress;
  543.   HgPress = mySensor.readFloatPressure()*0.000295;
  544.  
  545.   //N1 - Tens
  546.   HgPress/=10;
  547.   dig1 = HgPress;
  548.  
  549.   //N2 - Ones
  550.   HgPress = (HgPress-dig1)*10;
  551.   dig2 = HgPress;
  552.  
  553.   //N3 - Tenths
  554.   HgPress = (HgPress-dig2)*10;
  555.   dig3 = HgPress;
  556.  
  557.   //N4 - Hundreths
  558.   HgPress = (HgPress-dig3)*10;
  559.   dig4 = HgPress;
  560.  
  561.         digitalWrite(7, HIGH); //Middle Green LED
  562.         digitalWrite(6, LOW); //Top Colon LED
  563.         digitalWrite(5, HIGH); //Bottom Colon LED
  564.         digitalWrite(8, LOW); //Right Green LED
  565.         digitalWrite(9, LOW); //Left Green LED
  566. }
  567.  //
  568. void DisplayHumid()
  569. {
  570.   float Humidity;
  571.   //sensors_event_t event;
  572.   //Humidity = event.relative_humidity;
  573.   Humidity = dht.readHumidity();
  574.   //N1 - Tens
  575.   Humidity/=10;
  576.   dig1 = Humidity;
  577.  
  578.   //N2 - Ones
  579.   Humidity = (Humidity-dig1)*10;
  580.   dig2 = Humidity;
  581.  
  582.   //N3 - Tenths
  583.   Humidity = (Humidity-dig2)*10;
  584.   dig3 = Humidity;
  585.  
  586.   //N4 - Hundreths
  587.   Humidity = (Humidity-dig3)*10;
  588.   dig4 = Humidity;
  589. //
  590.         digitalWrite(7, LOW); //Middle Green LED
  591.         digitalWrite(6, LOW); //Top Colon LED
  592.         digitalWrite(5, HIGH); //Bottom Colon LED
  593.         digitalWrite(8, HIGH); //Right Green LED
  594.         digitalWrite(9, LOW); //Left Green LED
  595. //
  596. }
  597.  //
  598. void RunPoison()
  599. //  Run through the digits on all nixies to prevent cathode poisoning - on Pushbutton 8 only.
  600. //  This code cycles through the digits of a Nixie Tube.
  601. {
  602. for (int i = 0; i < 10; i++)
  603.  {
  604.  //0
  605.  digitalWrite(N1D, LOW);  //D1 MSB
  606.  digitalWrite(N1C, LOW);  //C1 MSB -1
  607.  digitalWrite(N1B, LOW);  //B1 MSB -2
  608.  digitalWrite(N1A, LOW);  //A1 LSB
  609. delay(10);
  610.  digitalWrite(N2D, LOW);  //D2
  611.  digitalWrite(N2C, LOW);  //C2
  612.  digitalWrite(N2B, LOW);  //B2
  613.  digitalWrite(N2A, LOW);  //A2
  614. delay(10);
  615.  digitalWrite(N3D, LOW);  //D3
  616.  digitalWrite(N3C, LOW);  //C3
  617.  digitalWrite(N3B, LOW);  //B3
  618.  digitalWrite(N3A, LOW);  //A3
  619. delay(10);
  620.  digitalWrite(N4D, LOW);  //D3
  621.  digitalWrite(N4C, LOW);  //C3
  622.  digitalWrite(N4B, LOW);  //B3
  623.  digitalWrite(N4A, LOW);  //A3
  624.  delay(10);
  625.  
  626.  //1
  627.  digitalWrite(N1D, LOW);  //D1
  628.  digitalWrite(N1C, LOW);  //C1
  629.  digitalWrite(N1B, LOW);  //B1
  630.  digitalWrite(N1A, HIGH); //A1
  631. delay(10);
  632.  digitalWrite(N2D, LOW);  //D2
  633.  digitalWrite(N2C, LOW);  //C2
  634.  digitalWrite(N2B, LOW);  //B2
  635.  digitalWrite(N2A, HIGH);  //A2
  636. delay(10);
  637.  digitalWrite(N3D, LOW);  //D3
  638.  digitalWrite(N3C, LOW);  //C3
  639.  digitalWrite(N3B, LOW);  //B3
  640.  digitalWrite(N3A, HIGH);  //A3
  641. delay(10);
  642.  digitalWrite(N4D, LOW);  //D3
  643.  digitalWrite(N4C, LOW);  //C3
  644.  digitalWrite(N4B, LOW);  //B3
  645.  digitalWrite(N4A, HIGH);  //A3
  646.  delay(10);
  647.  
  648.  //2
  649.  digitalWrite(N1D, LOW);  //D1
  650.  digitalWrite(N1C, LOW);  //C1
  651.  digitalWrite(N1B, HIGH); //B1
  652.  digitalWrite(N1A, LOW);  //A1
  653. delay(10);
  654.  digitalWrite(N2D, LOW);  //D2
  655.  digitalWrite(N2C, LOW);  //C2
  656.  digitalWrite(N2B, HIGH);  //B2
  657.  digitalWrite(N2A, LOW);  //A2
  658. delay(10);
  659.  digitalWrite(N3D, LOW);  //D3
  660.  digitalWrite(N3C, LOW);  //C3
  661.  digitalWrite(N3B, HIGH);  //B3
  662.  digitalWrite(N3A, LOW);  //A3
  663. delay(10);
  664.  digitalWrite(N4D, LOW);  //D3
  665.  digitalWrite(N4C, LOW);  //C3
  666.  digitalWrite(N4B, HIGH);  //B3
  667.  digitalWrite(N4A, LOW);  //A3
  668.  delay(10);
  669.  
  670.  //3
  671.  digitalWrite(N1D, LOW);  //D1
  672.  digitalWrite(N1C, LOW);  //C1
  673.  digitalWrite(N1B, HIGH); //B1
  674.  digitalWrite(N1A, HIGH); //A1
  675. delay(10);
  676.  digitalWrite(N2D, LOW);  //D2
  677.  digitalWrite(N2C, LOW);  //C2
  678.  digitalWrite(N2B, HIGH);  //B2
  679.  digitalWrite(N2A, HIGH);  //A2
  680. delay(10);
  681.  digitalWrite(N3D, LOW);  //D3
  682.  digitalWrite(N3C, LOW);  //C3
  683.  digitalWrite(N3B, HIGH);  //B3
  684.  digitalWrite(N3A, HIGH);  //A3
  685. delay(10);
  686.  digitalWrite(N4D, LOW);  //D3
  687.  digitalWrite(N4C, LOW);  //C3
  688.  digitalWrite(N4B, HIGH);  //B3
  689.  digitalWrite(N4A, HIGH);  //A3
  690.  delay(10);
  691.  
  692.  //4
  693.  digitalWrite(N1D, LOW);  //D1
  694.  digitalWrite(N1C, HIGH); //C1
  695.  digitalWrite(N1B, LOW);  //B1
  696.  digitalWrite(N1A, LOW);  //A1
  697. delay(10);
  698.  digitalWrite(N2D, LOW);  //D2
  699.  digitalWrite(N2C, HIGH);  //C2
  700.  digitalWrite(N2B, LOW);  //B2
  701.  digitalWrite(N2A, LOW);  //A2
  702. delay(10);
  703.  digitalWrite(N3D, LOW);  //D3
  704.  digitalWrite(N3C, HIGH);  //C3
  705.  digitalWrite(N3B, LOW);  //B3
  706.  digitalWrite(N3A, LOW);  //A3
  707. delay(10);
  708.  digitalWrite(N4D, LOW);  //D3
  709.  digitalWrite(N4C, HIGH);  //C3
  710.  digitalWrite(N4B, LOW);  //B3
  711.  digitalWrite(N4A, LOW);  //A3
  712.  delay(10);
  713.  
  714.  //5
  715.  digitalWrite(N1D, LOW);  //D1
  716.  digitalWrite(N1C, HIGH); //C1
  717.  digitalWrite(N1B, LOW);  //B1
  718.  digitalWrite(N1A, HIGH); //A1
  719. //delay(10);
  720.  digitalWrite(N2D, LOW);  //D2
  721.  digitalWrite(N2C, HIGH);  //C2
  722.  digitalWrite(N2B, LOW);  //B2
  723.  digitalWrite(N2A, HIGH);  //A2
  724. //delay(10);
  725.  digitalWrite(N3D, LOW);  //D3
  726.  digitalWrite(N3C, HIGH);  //C3
  727.  digitalWrite(N3B, LOW);  //B3
  728.  digitalWrite(N3A, HIGH);  //A3
  729. //delay(10);
  730.  digitalWrite(N4D, LOW);  //D3
  731.  digitalWrite(N4C, HIGH);  //C3
  732.  digitalWrite(N4B, LOW);  //B3
  733.  digitalWrite(N4A, HIGH);  //A3
  734.  delay(10);
  735.  
  736.  //6
  737.  digitalWrite(N1D, LOW);  //D1
  738.  digitalWrite(N1C, HIGH); //C1
  739.  digitalWrite(N1B, HIGH); //B1
  740.  digitalWrite(N1A, LOW);  //A1
  741. delay(10);
  742.  digitalWrite(N2D, LOW);  //D2
  743.  digitalWrite(N2C, HIGH);  //C2
  744.  digitalWrite(N2B, HIGH);  //B2
  745.  digitalWrite(N2A, LOW);  //A2
  746. delay(10);
  747.  digitalWrite(N3D, LOW);  //D3
  748.  digitalWrite(N3C, HIGH);  //C3
  749.  digitalWrite(N3B, HIGH);  //B3
  750.  digitalWrite(N3A, LOW);  //A3
  751. delay(10);
  752.  digitalWrite(N4D, LOW);  //D3
  753.  digitalWrite(N4C, HIGH);  //C3
  754.  digitalWrite(N4B, HIGH);  //B3
  755.  digitalWrite(N4A, LOW);  //A3
  756.  delay(10);
  757.  
  758.  //7
  759.  digitalWrite(N1D, LOW);  //D1
  760.  digitalWrite(N1C, HIGH); //C1
  761.  digitalWrite(N1B, HIGH); //B1
  762.  digitalWrite(N1A, HIGH); //A1
  763. delay(10);
  764.  digitalWrite(N2D, LOW);  //D2
  765.  digitalWrite(N2C, HIGH);  //C2
  766.  digitalWrite(N2B, HIGH);  //B2
  767.  digitalWrite(N2A, HIGH);  //A2
  768. delay(10);
  769.  digitalWrite(N3D, LOW);  //D3
  770.  digitalWrite(N3C, HIGH);  //C3
  771.  digitalWrite(N3B, HIGH);  //B3
  772.  digitalWrite(N3A, HIGH);  //A3
  773. delay(10);
  774.  digitalWrite(N4D, LOW);  //D3
  775.  digitalWrite(N4C, HIGH);  //C3
  776.  digitalWrite(N4B, HIGH);  //B3
  777.  digitalWrite(N4A, HIGH);  //A3
  778.  delay(10);
  779.  
  780.  //8
  781.  digitalWrite(N1D, HIGH); //D1
  782.  digitalWrite(N1C, LOW);  //C1
  783.  digitalWrite(N1B, LOW);  //B1
  784.  digitalWrite(N1A, LOW);  //A1
  785. delay(10);
  786.  digitalWrite(N2D, HIGH);  //D2
  787.  digitalWrite(N2C, LOW);  //C2
  788.  digitalWrite(N2B, LOW);  //B2
  789.  digitalWrite(N2A, LOW);  //A2
  790. delay(10);
  791.  digitalWrite(N3D, HIGH);  //D3
  792.  digitalWrite(N3C, LOW);  //C3
  793.  digitalWrite(N3B, LOW);  //B3
  794.  digitalWrite(N3A, LOW);  //A3
  795. delay(10);
  796.  digitalWrite(N4D, HIGH);  //D3
  797.  digitalWrite(N4C, LOW);  //C3
  798.  digitalWrite(N4B, LOW);  //B3
  799.  digitalWrite(N4A, LOW);  //A3
  800.  delay(10);
  801.  
  802.  //9
  803.  digitalWrite(N1D, HIGH); //D1
  804.  digitalWrite(N1C, LOW);  //C1
  805.  digitalWrite(N1B, LOW); //B1
  806.  digitalWrite(N1A, HIGH); //A1
  807. delay(10);
  808.  digitalWrite(N2D, HIGH);  //D2
  809.  digitalWrite(N2C, LOW);  //C2
  810.  digitalWrite(N2B, LOW);  //B2
  811.  digitalWrite(N2A, HIGH);  //A2
  812. delay(10);
  813.  digitalWrite(N3D, HIGH);  //D3
  814.  digitalWrite(N3C, LOW);  //C3
  815.  digitalWrite(N3B, LOW);  //B3
  816.  digitalWrite(N3A, HIGH);  //A3
  817. delay(10);
  818.  digitalWrite(N4D, HIGH);  //D3
  819.  digitalWrite(N4C, LOW);  //C3
  820.  digitalWrite(N4B, LOW);  //B3
  821.  digitalWrite(N4A, HIGH);  //A3
  822.  delay(10);}
  823. }
  824. //
  825. //
  826. void DriveTubes() //..............Evaluate and display each nixie tube bit pattern.............................
  827. {
  828.     //  - ----------------------- Display First Nixie Tube Digit N1 --------------
  829.     if (dig1 == 16) // write overflow to turn off all chip outputs and blank out the nixie tube.
  830.     {
  831.      digitalWrite(N1A, HIGH);
  832.      digitalWrite(N1B, HIGH);
  833.      digitalWrite(N1C, HIGH);
  834.      digitalWrite(N1D, HIGH);
  835.     }
  836.     if (dig1 == 0) //write 0000
  837.     {
  838.      digitalWrite(N1A, LOW);
  839.      digitalWrite(N1B, LOW);
  840.      digitalWrite(N1C, LOW);
  841.      digitalWrite(N1D, LOW);
  842.     }
  843.     if (dig1 == 1) //write 0001
  844.     {
  845.      digitalWrite(N1A, HIGH);
  846.      digitalWrite(N1B, LOW);
  847.      digitalWrite(N1C, LOW);
  848.      digitalWrite(N1D, LOW);
  849.     }
  850.     if (dig1 == 2) //write 0010
  851.     {
  852.      digitalWrite(N1A, LOW);
  853.      digitalWrite(N1B, HIGH);
  854.      digitalWrite(N1C, LOW);
  855.      digitalWrite(N1D, LOW);
  856.     }
  857.     if (dig1 == 3) //write 0011
  858.     {
  859.      digitalWrite(N1A, HIGH);
  860.      digitalWrite(N1B, HIGH);
  861.      digitalWrite(N1C, LOW);
  862.      digitalWrite(N1D, LOW);
  863.     }
  864.     if (dig1 == 4) //write 0100
  865.     {
  866.      digitalWrite(N1A, LOW);
  867.      digitalWrite(N1B, LOW);
  868.      digitalWrite(N1C, HIGH);
  869.      digitalWrite(N1D, LOW);
  870.     }
  871.     if (dig1 == 5) //write 0101
  872.     {
  873.      digitalWrite(N1A, HIGH);
  874.      digitalWrite(N1B, LOW);
  875.      digitalWrite(N1C, HIGH);
  876.      digitalWrite(N1D, LOW);
  877.     }
  878.     if (dig1 == 6) //write 0110
  879.     {
  880.      digitalWrite(N1A, LOW);
  881.      digitalWrite(N1B, HIGH);
  882.      digitalWrite(N1C, HIGH);
  883.      digitalWrite(N1D, LOW);
  884.     }
  885.     if (dig1 == 7) //write 0111
  886.     {
  887.      digitalWrite(N1A, HIGH);
  888.      digitalWrite(N1B, HIGH);
  889.      digitalWrite(N1C, HIGH);
  890.      digitalWrite(N1D, LOW);
  891.     }
  892.     if (dig1 == 8) //write 1000
  893.     {
  894.      digitalWrite(N1A, LOW);
  895.      digitalWrite(N1B, LOW);
  896.      digitalWrite(N1C, LOW);
  897.      digitalWrite(N1D, HIGH);
  898.     }
  899.     if (dig1 == 9) //write 1001
  900.     {
  901.      digitalWrite(N1A, HIGH);
  902.      digitalWrite(N1B, LOW);
  903.      digitalWrite(N1C, LOW);
  904.      digitalWrite(N1D, HIGH);
  905.     }
  906. //  -------------------------   Display Second Nixie Tube Digit  N2 -------------------
  907.     if (dig2 == 0) //write 0000
  908.     {
  909.      digitalWrite(N2A, LOW);
  910.      digitalWrite(N2B, LOW);
  911.      digitalWrite(N2C, LOW);
  912.      digitalWrite(N2D, LOW);
  913.     }
  914.     if (dig2 == 1) //write 0001
  915.     {
  916.      digitalWrite(N2A, HIGH);
  917.      digitalWrite(N2B, LOW);
  918.      digitalWrite(N2C, LOW);
  919.      digitalWrite(N2D, LOW);
  920.     }
  921.     if (dig2 == 2) //write 0010
  922.     {
  923.      digitalWrite(N2A, LOW);
  924.      digitalWrite(N2B, HIGH);
  925.      digitalWrite(N2C, LOW);
  926.      digitalWrite(N2D, LOW);
  927.     }
  928.     if (dig2 == 3) //write 0011
  929.     {
  930.      digitalWrite(N2A, HIGH);
  931.      digitalWrite(N2B, HIGH);
  932.      digitalWrite(N2C, LOW);
  933.      digitalWrite(N2D, LOW);
  934.     }
  935.     if (dig2 == 4) //write 0100
  936.     {
  937.      digitalWrite(N2A, LOW);
  938.      digitalWrite(N2B, LOW);
  939.      digitalWrite(N2C, HIGH);
  940.      digitalWrite(N2D, LOW);
  941.     }
  942.     if (dig2 == 5) //write 0101
  943.     {
  944.      digitalWrite(N2A, HIGH);
  945.      digitalWrite(N2B, LOW);
  946.      digitalWrite(N2C, HIGH);
  947.      digitalWrite(N2D, LOW);
  948.     }
  949.     if (dig2 == 6) //write 0110
  950.     {
  951.      digitalWrite(N2A, LOW);
  952.      digitalWrite(N2B, HIGH);
  953.      digitalWrite(N2C, HIGH);
  954.      digitalWrite(N2D, LOW);
  955.     }
  956.     if (dig2 == 7) //write 0111
  957.     {
  958.      digitalWrite(N2A, HIGH);
  959.      digitalWrite(N2B, HIGH);
  960.      digitalWrite(N2C, HIGH);
  961.      digitalWrite(N2D, LOW);
  962.     }
  963.     if (dig2 == 8) //write 1000
  964.     {
  965.      digitalWrite(N2A, LOW);
  966.      digitalWrite(N2B, LOW);
  967.      digitalWrite(N2C, LOW);
  968.      digitalWrite(N2D, HIGH);
  969.     }
  970.     if (dig2 == 9) //write 1001
  971.     {
  972.      digitalWrite(N2A, HIGH);
  973.      digitalWrite(N2B, LOW);
  974.      digitalWrite(N2C, LOW);
  975.      digitalWrite(N2D, HIGH);
  976.     }
  977. //  ---------------------  Display the Third Nixie Tube Digit N3 -----------
  978.     if (dig3 == 0) //write 0000
  979.     {
  980.      digitalWrite(N3A, LOW);
  981.      digitalWrite(N3B, LOW);
  982.      digitalWrite(N3C, LOW);
  983.      digitalWrite(N3D, LOW);
  984.     }
  985.     if (dig3 == 1) //write 0001
  986.     {
  987.      digitalWrite(N3A, HIGH);
  988.      digitalWrite(N3B, LOW);
  989.      digitalWrite(N3C, LOW);
  990.      digitalWrite(N3D, LOW);
  991.     }
  992.     if (dig3 == 2) //write 0010
  993.     {
  994.      digitalWrite(N3A, LOW);
  995.      digitalWrite(N3B, HIGH);
  996.      digitalWrite(N3C, LOW);
  997.      digitalWrite(N3D, LOW);
  998.     }
  999.     if (dig3 == 3) //write 0011
  1000.     {
  1001.      digitalWrite(N3A, HIGH);
  1002.      digitalWrite(N3B, HIGH);
  1003.      digitalWrite(N3C, LOW);
  1004.      digitalWrite(N3D, LOW);
  1005.     }
  1006.     if (dig3 == 4) //write 0100
  1007.     {
  1008.      digitalWrite(N3A, LOW);
  1009.      digitalWrite(N3B, LOW);
  1010.      digitalWrite(N3C, HIGH);
  1011.      digitalWrite(N3D, LOW);
  1012.     }
  1013.     if (dig3 == 5) //write 0101
  1014.     {
  1015.      digitalWrite(N3A, HIGH);
  1016.      digitalWrite(N3B, LOW);
  1017.      digitalWrite(N3C, HIGH);
  1018.      digitalWrite(N3D, LOW);
  1019.     }
  1020.     if (dig3 == 6) //write 0110
  1021.     {
  1022.      digitalWrite(N3A, LOW);
  1023.      digitalWrite(N3B, HIGH);
  1024.      digitalWrite(N3C, HIGH);
  1025.      digitalWrite(N3D, LOW);
  1026.     }
  1027.     if (dig3 == 7) //write 0111
  1028.     {
  1029.      digitalWrite(N3A, HIGH);
  1030.      digitalWrite(N3B, HIGH);
  1031.      digitalWrite(N3C, HIGH);
  1032.      digitalWrite(N3D, LOW);
  1033.     }
  1034.     if (dig3 == 8) //write 1000
  1035.     {
  1036.      digitalWrite(N3A, LOW);
  1037.      digitalWrite(N3B, LOW);
  1038.      digitalWrite(N3C, LOW);
  1039.      digitalWrite(N3D, HIGH);
  1040.     }
  1041.     if (dig3 == 9) //write 1001
  1042.     {
  1043.      digitalWrite(N3A, HIGH);
  1044.      digitalWrite(N3B, LOW);
  1045.      digitalWrite(N3C, LOW);
  1046.      digitalWrite(N3D, HIGH);
  1047.     }
  1048. // ---------------------- Display the Last Nixie Tube Digit N4 -------------------
  1049.     if (dig4 == 0) //write 0000
  1050.     {
  1051.      digitalWrite(N4A, LOW);
  1052.      digitalWrite(N4B, LOW);
  1053.      digitalWrite(N4C, LOW);
  1054.      digitalWrite(N4D, LOW);
  1055.     }
  1056.     if (dig4 == 1) //write 0001
  1057.     {
  1058.      digitalWrite(N4A, HIGH);
  1059.      digitalWrite(N4B, LOW);
  1060.      digitalWrite(N4C, LOW);
  1061.      digitalWrite(N4D, LOW);
  1062.     }
  1063.     if (dig4 == 2) //write 0010
  1064.     {
  1065.      digitalWrite(N4A, LOW);
  1066.      digitalWrite(N4B, HIGH);
  1067.      digitalWrite(N4C, LOW);
  1068.      digitalWrite(N4D, LOW);
  1069.     }
  1070.     if (dig4 == 3) //write 0011
  1071.     {
  1072.      digitalWrite(N4A, HIGH);
  1073.      digitalWrite(N4B, HIGH);
  1074.      digitalWrite(N4C, LOW);
  1075.      digitalWrite(N4D, LOW);
  1076.     }
  1077.     if (dig4 == 4) //write 0100
  1078.     {
  1079.      digitalWrite(N4A, LOW);
  1080.      digitalWrite(N4B, LOW);
  1081.      digitalWrite(N4C, HIGH);
  1082.      digitalWrite(N4D, LOW);
  1083.     }
  1084.     if (dig4 == 5) //write 0101
  1085.     {
  1086.      digitalWrite(N4A, HIGH);
  1087.      digitalWrite(N4B, LOW);
  1088.      digitalWrite(N4C, HIGH);
  1089.      digitalWrite(N4D, LOW);
  1090.     }
  1091.     if (dig4 == 6) //write 0110
  1092.     {
  1093.      digitalWrite(N4A, LOW);
  1094.      digitalWrite(N4B, HIGH);
  1095.      digitalWrite(N4C, HIGH);
  1096.      digitalWrite(N4D, LOW);
  1097.     }
  1098.     if (dig4 == 7) //write 0111
  1099.     {
  1100.      digitalWrite(N4A, HIGH);
  1101.      digitalWrite(N4B, HIGH);
  1102.      digitalWrite(N4C, HIGH);
  1103.      digitalWrite(N4D, LOW);
  1104.     }
  1105.     if (dig4 == 8) //write 1000
  1106.     {
  1107.      digitalWrite(N4A, LOW);
  1108.      digitalWrite(N4B, LOW);
  1109.      digitalWrite(N4C, LOW);
  1110.      digitalWrite(N4D, HIGH);
  1111.     }
  1112.     if (dig4 == 9) //write 1001
  1113.     {
  1114.      digitalWrite(N4A, HIGH);
  1115.      digitalWrite(N4B, LOW);
  1116.      digitalWrite(N4C, LOW);
  1117.      digitalWrite(N4D, HIGH);
  1118.     }
  1119.     delay (10);
  1120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement