Am adăugat ceasului cu prezentare informaţii animate şi reglaj al ceasului şi datei, pentru a putea avea un ceas independent. Am păstrat si reglajul intensităţii (automat sau manual) cum e prezentat în articolul precedent.
sau
Am adăugat doar 2 butoane fără reţinere (pushbutoane) la pinii A1, respectiv A2:
Schema de bază rămânând aceeaşi
Apăsând butonul MENU/MENIU se intră în modul de reglaj, întâi al orelor care clipesc repede şi creşte valoare la fiecare apăsare a butonului +, dar dacă se ajunge la 23 şi s eappară o să avem ora 00.
Dacă se apasă iar butonul MENIU se intră în meniul de reglare al minutelor, care clipesc mai repede, iar valoarea lor creşte prin apăsarea butonului + (sau menţinerea apăsată pentru creştere mai rapidă) până la 59, după care trece la 00.
La următoarea apăsare a butonului MENIU apare anul, care poate fi schimba doar de la 2018 la 2049
urmează schimbarea lunilor de la 1 la 12
apoi prin apăsarea butonului MENIU se intră la reglarea zilelor, care depind de luna şi an (pentru februarie), în acest mod zilele clipesc rapid pentru a şti ce se modifică
Fata de articolul anterior, am adăugat reglaj al intensităţii, deoarece noaptea e deranjantă lumina ceasului, aceasta făcându-se prin adăugarea
- unui divizor rezistiv format dintr-o fotorezistenţă şi o rezistenţă de 10kohmi, pentru reglaj automat, funcţie de intensitatea luminoasă pe pastila fotorezistenţei
- unui comutator cu 2 poziţii (NIGHT-NOAPTE - intensitate redusă a afişajului, respectiv DA/ZI - intensitate crescută)
Măsurarea tensiunii pe pinul analog A3 va determina introducerea unui timp mai mic sau mai mare la multiplexare şi astfel afişajul se va aprinde cu intensitate mai mare sau mai mică.
Programul care face toate acestea este multiplexed_scroll_clock2.ino şi păstrează facilitatea testării, respectiv funcţionării cu afişaj cu cator comun sau anon, cum am descris in articolul anterior.
Schema de conectare a modului de ceas RTC, a senzorului DHT22 (AM2302) e aceeaşi
Ceasul, arată, în afara orei (ca în prima poză) timp de 10 secunde, cu secundă care se stinge şi se aprinde
şi următoarele informaţii, fiecare cca 2,5 secunde cu efecte de intrare şi ieşire pe ecran:
- temperatura ambiantă
- umiditatea relativă a aerului
- data (zi şi lună)
In filmuletele următoare se vede cum se poate regla manual intensitatea
Faţă de articolele anterioare de ceas cu afişaj led din 7 segmente, cu reglaj sau fără, acum am pus o mică animaţie la schimbarea informaţiilor, după ce am discutat cu GeoMar, care voia un ceas cu termometru.
Am testat şi făcut modificări în programul lui pentru a putea funcţiona cu informaţii simulate (pentru a vedea dacă afişează corect temperaturi negative şi pozitive) şi printr-o schimbare de variabilă să treacă la funcţionare normală de ceac cu modul RTC (cu DS1307 sau mai bine cu DS3231) şi termometru cu DS18B20, după cum se vede în filmuleţele:
- ceas cu termometru pe afisaj multiplexat cu animatie
Programul scris şi testat de mine pe partea de simulare şi real de GeoMar este multiplexed_scroll_clock0.ino şi se fac doar mici modificări la 2 variabile pentru
- funcţionare simulată
- funcţionare normală (modul de ceas RTC şi termometru cu DS18B20)
respectiv
- afişaj cu catod comun
- afişaj cu anod comun
Schema pentru anod comun este
iar pentru catod comun este
Dupa cum se constată, nu este diferenţă vizibilă între ele, deoarece se schimbă din program modul de comandă. Dacă se folosesc afişaje mai mari, cu consumri mari, atunci se introduc tranzistoare si apar diferenţe.
Eu am avut afisajul cu catod comun LFD080AAG-103, asa ca am pus tip = 0, Geomar are afişaj cu anod comun, aşa că el testeayă cu tip = 1. Eu neavând decât o placă Arduino Nano şi afişajul am folosit test =1, iar el test = 0, deoarece are montajul complet.
La teste, am obtinut prezentarea astfel:
- ora când are valoare doar unitară (am scos zero deranjant din faţă)
- data
- temperatura negativă din 2 cifre (temperaturi sun -10 grade Celsius)
- temperatura negativă mai mare de -10 grade Celsius
- temperaturi pozitive mai mice de +10 grade Celsius
- temperaturi pozitive mai mari de +10 grade Celsius
Conectarea afişajului cu catod comun sau anod comun se poate face şi direct sau cu rezistenţe de limitare de 33..47 ohmi între segmente şi pinii plăcii Arduino, astfel
Vrând să fac şi ceasul real, nu am dat de un senzor DS18B20, aşa că am făcut un montaj în care am folosit un senzor DHT22 (AM2302), pe care vi-l prezint în articolul următor.
Fata de articolul anterior, am modificat modul de afisare la reglarea orei si minutelor (xx.CLm respectiv CL.yy), in vederea scrierii unui program (sketch) pentru ceas cu alarma si acolo trebuie sa se stie clar ce se regleaza.
Schema de conectare este identica:
Pentru a putea functiona si afisa acest mod, a trebuit sa-mi creez si litera L (C era creata mai demult pentru a afisa simbolul de Celsius) si sa fac modificari in sketch-ul anterior.
In mod normal, pe afisaj sunt prezentate: ora cu secundar animat ("bate"secundele) timp de cca 5 secunde, apoi tenmperatura o secunda si apoi umiditatea tot o secunda. Daca se apasa mai lung butonul MENU (cel din stanga in poze), se va intra in modul de reglare ore, indicand xx.CL:
Daca se apasa butonul fara tetinere + (in partea dreapta, in poze), se creste valoarea orei, de la valoarea actuala; daca se tine apasat, valoarea creste automat, la depasirea valorii maxime (23) se trece la ora 0.
Daca se apasa butonul MENU (cel din stanga) se trece la reglaj minute, indicatia fiind CL.yy:
Daca se apasa butonul fara tetinere + (in partea dreapta, in poze), se creste valoarea minutelor, de la valoarea actuala; daca se tine apasat, valoarea creste automat, la depasirea valorii maxime (59) se trece la 0.
Daca se apasa butonul MENU (cel din stanga) se trece la functionarea normala
In articolul precedent am folosit pentru partea ceas propriu-zis (ore si minute) informatiile oferite de un ceas de timp real cu DS1307, acum o sa folosesc libraria Time.h care se bazeaza pe functia millis(), care numara milisecundele de la alimentarea placii Arduino. Intr-un articol numit 12.4Using Arduino as a Clock sunt date si exemple de programele (sketch-uri) inclusiv un exemplu de crestere, respectiv scadere a minutelor, dar eu l-am adaptat sa modific orele si minutele, in sens crescator. Un ceas, care foloseste ceasul intern al lui Arduino si senzorul DHT11 pentru temperatura si umiditate, se comporta similar cu cel prezentat in articolul anterior, vedeti filmuletul humidity and temperature with DHT11 using 7-segment LED from a broken wood brick clock (IX)
Pentru prima varianta, schema este cea folosita si anterior:
Sketch-ul:
/* 6-13-2011 Spark Fun Electronics 2011 Nathan Seidle This code is public domain but you buy me a beer if you use this and we meet someday (Beerware license). 4 digit 7 segment display: http://www.sparkfun.com/products/9483 Datasheet: http://www.sparkfun.com/datasheets/Components/LED/7-Segment/YSD-439AR6B-35.pdf This is an example of how to drive a 7 segment LED display from an ATmega without the use of current limiting resistors. This technique is very common but requires some knowledge of electronics - you do run the risk of dumping too much current through the segments and burning out parts of the display. If you use the stock code you should be ok, but be careful editing the brightness values. This code should work with all colors (red, blue, yellow, green) but the brightness will vary from one color to the next because the forward voltage drop of each color is different. This code was written and calibrated for the red color. This code will work with most Arduinos but you may want to re-route some of the pins. 7 segments 4 digits 1 colon = 12 pins required for full control */// modified connexion by niq_ro from http://nicuflorica.blogspot.com// for my Luckylight KW4-563ASA// dataseet: http://www.tme.eu/ro/Document/dfc2efde2e22005fd28615e298ea2655/KW4-563XSA.pdfint digit1 = 11; //PWM Display pin 12 (digit1 is common anonds A1 from right side)int digit2 = 10; //PWM Display pin 9 (digit2 is common A2)int digit3 = 9; //PWM Display pin 8 (digit3 is common anods A3)int digit4 = 6; //PWM Display pin 6 (digit4 is common anods, from left side)//Pin mapping from Arduino to the ATmega DIP28 if you need it//http://www.arduino.cc/en/Hacking/PinMappingint segA = 2; //Display pin 11int segB = 3; //Display pin 7int segC = 4; //Display pin 4int segD = 5; //Display pin 2int segE = 12; //Display pin 1int segF = 7; //Display pin 10int segG = 8; //Display pin 5int segDP = 13; // Display pin 3
#include "DHT.h"
#define DHTPIN A2 // what pin we're connected to
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
#include <Wire.h>
#include "RTClib.h"RTC_DS1307 RTC;
// Date and time functions using a DS1307 RTC connected via I2C and Wire lib// original sketck from http://learn.adafruit.com/ds1307-real-time-clock-breakout-board-kit/// add part with SQW=1Hz from http://tronixstuff.wordpress.com/2010/10/20/tutorial-arduino-and-the-i2c-bus/voidsetup() {
Wire.begin();
RTC.begin();
RTC.adjust(DateTime(__DATE__, __TIME__));
// if you need set clock... just remove // from line above this// part code for flashing LEDWire.beginTransmission(0x68);
Wire.write(0x07); // move pointer to SQW address// Wire.write(0x00); // turns the SQW pin offWire.write(0x10); // sends 0x10 (hex) 00010000 (binary) to control register - turns on square wave at 1Hz// Wire.write(0x13); // sends 0x13 (hex) 00010011 (binary) 32kHzWire.endTransmission();
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
RTC.adjust(DateTime(__DATE__, __TIME__));
}
dht.begin();
pinMode(segA, OUTPUT);
pinMode(segB, OUTPUT);
pinMode(segC, OUTPUT);
pinMode(segD, OUTPUT);
pinMode(segE, OUTPUT);
pinMode(segF, OUTPUT);
pinMode(segG, OUTPUT);
pinMode(segDP, OUTPUT);
pinMode(digit1, OUTPUT);
pinMode(digit2, OUTPUT);
pinMode(digit3, OUTPUT);
pinMode(digit4, OUTPUT);
// pinMode(13, OUTPUT);Serial.begin(9600);
Serial.println("test for niq_ro");
}
// here begin the main programvoidloop()
{
int h = dht.readHumidity();
int t = dht.readTemperature();
// display the temperaturaif (t < 10) // if temperature is < 10 degree
{
for(int i = 1000 ; i >0 ; i--) {
temperatura2(t); // this is number to diplay
}
}
else// if temperature is > 10 degree
{for(int i = 1000 ; i >0 ; i--) {
temperatura1(t); // this is number to diplay
}
}
// display the humidityfor(int i = 1000 ; i >0 ; i--) {
umidit(h); // this is number to diplay
}
digitalWrite(segDP, HIGH);
DateTimenow = RTC.now();
int tp = now.hour()*100 + now.minute();
int minutzi = now.minute()/10;
// int timp = (now.minute(), DEC);// displayNumber(12); // this is number to diplay// int timp = 1234;Serial.print(now.hour(), DEC);
Serial.print(":");
Serial.print(now.minute(), DEC);
Serial.print(" -> ");
Serial.print(tp);
Serial.println(" !");
Serial.print(minutzi);
Serial.print("=");
// here begin part with clock displayif (tp > 999)
{
switch (minutzi) {
case 3:
Serial.print(minutzi);
for(int i = 250 ; i >0 ; i--) ora12(tp);
for(int i = 250 ; i >0 ; i--) ora32(tp);
for(int i = 250 ; i >0 ; i--) ora12(tp);
for(int i = 250 ; i >0 ; i--) ora32(tp);
for(int i = 250 ; i >0 ; i--) ora12(tp);
break;
case 1:
Serial.print(minutzi);
for(int i = 250 ; i >0 ; i--) ora11(tp);
for(int i = 250 ; i >0 ; i--) ora31(tp);
for(int i = 250 ; i >0 ; i--) ora11(tp);
for(int i = 250 ; i >0 ; i--) ora31(tp);
for(int i = 250 ; i >0 ; i--) ora11(tp);
break;
case 4:
Serial.print(minutzi);
for(int i = 250 ; i >0 ; i--) ora13(tp);
for(int i = 250 ; i >0 ; i--) ora33(tp);
for(int i = 250 ; i >0 ; i--) ora13(tp);
for(int i = 250 ; i >0 ; i--) ora33(tp);
for(int i = 250 ; i >0 ; i--) ora13(tp);
break;
default:
Serial.print(minutzi);
for(int i = 250 ; i >0 ; i--) ora10(tp);
for(int i = 250 ; i >0 ; i--) ora30(tp);
for(int i = 250 ; i >0 ; i--) ora10(tp);
for(int i = 250 ; i >0 ; i--) ora30(tp);
for(int i = 250 ; i >0 ; i--) ora10(tp);
}
}
else
{
switch (minutzi) {
case 3:
Serial.print(minutzi);
for(int i = 250 ; i >0 ; i--) ora22(tp);
for(int i = 250 ; i >0 ; i--) ora42(tp);
for(int i = 250 ; i >0 ; i--) ora22(tp);
for(int i = 250 ; i >0 ; i--) ora42(tp);
for(int i = 250 ; i >0 ; i--) ora22(tp);
break;
case 1:
Serial.print(minutzi);
for(int i = 250 ; i >0 ; i--) ora21(tp);
for(int i = 250 ; i >0 ; i--) ora41(tp);
for(int i = 250 ; i >0 ; i--) ora21(tp);
for(int i = 250 ; i >0 ; i--) ora41(tp);
for(int i = 250 ; i >0 ; i--) ora21(tp);
break;
case 4:
Serial.print(minutzi);
for(int i = 250 ; i >0 ; i--) ora23(tp);
for(int i = 250 ; i >0 ; i--) ora43(tp);
for(int i = 250 ; i >0 ; i--) ora23(tp);
for(int i = 250 ; i >0 ; i--) ora43(tp);
for(int i = 250 ; i >0 ; i--) ora23(tp);
break;
default:
Serial.print(minutzi);
for(int i = 250 ; i >0 ; i--) ora20(tp);
for(int i = 250 ; i >0 ; i--) ora40(tp);
for(int i = 250 ; i >0 ; i--) ora20(tp);
for(int i = 250 ; i >0 ; i--) ora40(tp);
for(int i = 250 ; i >0 ; i--) ora20(tp);
}
}
Serial.println("? good");
}
/*//Given a number, we display 10:22//After running through the 4 numbers, the display is left turned off//Display brightness//Each digit is on for a certain amount of microseconds//Then it is off until we have reached a total of 20ms for the function call//Let's assume each digit is on for 1000us//Each digit is on for 1ms, there are 4 digits, so the display is off for 16ms.//That's a ratio of 1ms to 16ms or 6.25% on time (PWM).//Let's define a variable called brightness that varies from://5000 blindingly bright (15.7mA current draw per digit)//2000 shockingly bright (11.4mA current draw per digit)//1000 pretty bright (5.9mA)//500 normal (3mA)//200 dim but readable (1.4mA)//50 dim but readable (0.56mA)//5 dim but readable (0.31mA)//1 dim but readable in dark (0.28mA)*/// if temperature is >= 10 degree Celsiusvoid temperatura1(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
lightNumber(11); // display degree symboldelayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
lightNumber(12); // display C letterdelayMicroseconds(DISPLAY_BRIGHTNESS);
break;
}
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// if temperature is < 10 degree Celsiusvoid temperatura2(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_OFF);
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
lightNumber(11); // display degree symboldelayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
lightNumber(12); // display C letterdelayMicroseconds(DISPLAY_BRIGHTNESS);
break;
}
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// for humidityvoid umidit(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
lightNumber(11); // display degree symboldelayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
lightNumber(13); // display "o" letterdelayMicroseconds(DISPLAY_BRIGHTNESS);
break;
}
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// clock for hour >=10void ora10(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, LOW);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
//digitalWrite(segDP, HIGH);digitalWrite(segDP, LOW);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
}
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// clock for hour >=10 and minutes is 1x// ora e din 2 cifre si minutele incep cu cifra 1...void ora11(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, LOW);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
//digitalWrite(segDP, HIGH);
lightNumber(31); // display rotated 1 numberdigitalWrite(segDP, LOW);
// lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
}
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// clock for hour >=10 and minutes is 3x// ora e din 2 cifre si minutele incep cu cifra 3...void ora12(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, LOW);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
//digitalWrite(segDP, HIGH);
lightNumber(33); // display rotated 3digitalWrite(segDP, LOW);
// lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
}
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// clock for hour >=10 and minutes is 4x// ora e din 2 cifre si minutele incep cu cifra 4...void ora13(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, LOW);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
//digitalWrite(segDP, HIGH);
lightNumber(34); // display rotated 4digitalWrite(segDP, LOW);
// lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
}
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// clock for hour <10void ora20(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_OFF);
lightNumber(10); // off first valuedigitalWrite(segDP, HIGH);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, LOW);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
digitalWrite(segDP, LOW);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
}
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// clock for hour <10 and minutes is 1x// ora e din 2 cifre si minutele incep cu cifra 1...void ora21(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, LOW);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
//digitalWrite(segDP, HIGH);
lightNumber(31); // display rotated 1 numberdigitalWrite(segDP, LOW);
// lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
}
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// clock for hour <10 and minutes is 3x// ora e din 2 cifre si minutele incep cu cifra 3...void ora22(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, LOW);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
//digitalWrite(segDP, HIGH);
lightNumber(33); // display rotated 3digitalWrite(segDP, LOW);
// lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
}
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// clock for hour <10 and minutes is 4x// ora e din 2 cifre si minutele incep cu cifra 4...void ora23(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, LOW);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
//digitalWrite(segDP, HIGH);
lightNumber(34); // display rotated 4digitalWrite(segDP, LOW);
// lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
}
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// clock for hour >=10void ora30(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
//digitalWrite(segDP, HIGH);digitalWrite(segDP, HIGH);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
}
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// clock for hour >=10 and minutes is 1x// ora e din 2 cifre si minutele incep cu cifra 1...void ora31(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
//digitalWrite(segDP, HIGH);
lightNumber(31); // display rotated 1 numberdigitalWrite(segDP, HIGH);
// lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
}
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// clock for hour >=10 and minutes is 3x// ora e din 2 cifre si minutele incep cu cifra 3...void ora32(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
//digitalWrite(segDP, HIGH);
lightNumber(33); // display rotated 3digitalWrite(segDP, HIGH);
// lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
}
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// clock for hour >=10 and minutes is 4x// ora e din 2 cifre si minutele incep cu cifra 4...void ora33(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
//digitalWrite(segDP, HIGH);
lightNumber(34); // display rotated 4digitalWrite(segDP, HIGH);
// lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
}
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// clock for hour <10void ora40(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_OFF);
lightNumber(10); // off first valuedigitalWrite(segDP, HIGH);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
}
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// clock for hour <10 and minutes is 1x// ora e din 2 cifre si minutele incep cu cifra 1...void ora41(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
//digitalWrite(segDP, HIGH);
lightNumber(31); // display rotated 1 numberdigitalWrite(segDP, HIGH);
// lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
}
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// clock for hour <10 and minutes is 3x// ora e din 2 cifre si minutele incep cu cifra 3...void ora42(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
//digitalWrite(segDP, HIGH);
lightNumber(33); // display rotated 3digitalWrite(segDP,HIGH);
// lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
}
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// clock for hour <10 and minutes is 4x// ora e din 2 cifre si minutele incep cu cifra 4...void ora43(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
//digitalWrite(segDP, HIGH);
lightNumber(34); // display rotated 4digitalWrite(segDP, HIGH);
// lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
}
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
//Given a number, turns on those segments//If number == 10, then turn off numbervoid lightNumber(int numberToDisplay) {
#define SEGMENT_ON LOW
#define SEGMENT_OFF HIGHswitch (numberToDisplay){
case 0:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_OFF);
break;
case 1:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_OFF);
break;
case 2:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_OFF);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_ON);
break;
case 3:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_ON);
break;
case 4:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
case 5:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
case 6:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
case 7:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_OFF);
break;
case 8:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
case 9:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
// all segment are ONcase 10:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_OFF);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_OFF);
break;
// degree symbol made by niq_rocase 11:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_ON);
break;
// C letter made by niq_rocase 12:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_OFF);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_OFF);
break;
// "o mic" letter made by niq_rocase 13:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_ON);
break;
// "rotated 3" made by niq_rocase 33:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_OFF);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
// "rotated 1" made by niq_rocase 31:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_OFF);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_OFF);
break;
// "rotated 4" made by niq_rocase 34:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
}
}
Pentru reglaj al orelor si minutelor se completeaza schema cu 2 taste (butoane fara retinere):
iar un sketch, care functioneaza este:
// niq_ro's sketch made from a combination of several programs from web
int digit1 = 11;
int digit2 = 10;
int digit3 = 9;
int digit4 = 6;
int segA = 2;
int segB = 3;
int segC = 4;
int segD = 5;
int segE = 12;
int segF = 7;
int segG = 8;
int segDP = 13;
#include "DHT.h"
#define DHTPIN A2 // what pin we're connected to
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
#include <Time.h>
// see https://www.inkling.com/read/arduino-cookbook-michael-margolis-2nd/chapter-12/recipe-12-4//const int btnhour = 14; // button to move hour up //const int btnminute = 15; // button to move minute up//int minut = 0;//int ora = 0;voidsetup() {
dht.begin();
pinMode(segA, OUTPUT);
pinMode(segB, OUTPUT);
pinMode(segC, OUTPUT);
pinMode(segD, OUTPUT);
pinMode(segE, OUTPUT);
pinMode(segF, OUTPUT);
pinMode(segG, OUTPUT);
pinMode(segDP, OUTPUT);
pinMode(digit1, OUTPUT);
pinMode(digit2, OUTPUT);
pinMode(digit3, OUTPUT);
pinMode(digit4, OUTPUT);
// pinMode(13, OUTPUT);Serial.begin(9600);
Serial.println("test for niq_ro");
setTime(20,55,0,2,11,13); // set time at 20:55 in 02.nov.2013Serial.println("20:55 - 02.11.2013");
// digitalWrite(btnhour, HIGH); // enable internal pull-up resistors// digitalWrite(btnminute, HIGH); // enable internal pull-up resistorsdigitalWrite(A0, HIGH); // enable internal pull-up resistorsdigitalWrite(A1, HIGH); // enable internal pull-up resistors
}
// here begin the main programvoidloop()
{
digitalClockDisplay();
// delay(1000);// while(digitalRead(btnminute)== LOW)while(digitalRead(A1)== LOW)
{
int m= minute()+1;
setTime(hour(),m,0,2,11,13);
digitalClockDisplay(); // update clock delay(500);
}
while(digitalRead(A0)== LOW)
{
int has= hour()+1;
setTime(has,minute(),0,2,11,13);
digitalClockDisplay(); // update clock delay(500);
}
int h = dht.readHumidity();
int t = dht.readTemperature();
// display the temperaturaif (t < 10) // if temperature is < 10 degree
{
for(int i = 1000 ; i >0 ; i--) {
temperatura2(t); // this is number to diplay
}
}
else// if temperature is > 10 degree
{for(int i = 1000 ; i >0 ; i--) {
temperatura1(t); // this is number to diplay
}
}
// display the humidityfor(int i = 1000 ; i >0 ; i--) {
umidit(h); // this is number to diplay
}
digitalWrite(segDP, HIGH);
// DateTime now = RTC.now();// int tp = now.hour()*100 + now.minute();// int minutzi = now.minute()/10;int tp = hour()*100 + minute();
int minutzi = minute()/10;
Serial.print(hour(), DEC);
Serial.print(":");
// Serial.print(now.minute(), DEC);Serial.print(minute(), DEC);
Serial.print(" -> ");
Serial.print(tp);
Serial.println(" !");
Serial.print(minutzi);
Serial.print("=");
// here begin part with clock displayif (tp > 999)
{
switch (minutzi) {
case 3:
Serial.print(minutzi);
for(int i = 1000 ; i >0 ; i--) ora12(tp);
break;
case 1:
Serial.print(minutzi);
for(int i = 1000 ; i >0 ; i--) ora11(tp);
break;
case 4:
Serial.print(minutzi);
for(int i = 1000 ; i >0 ; i--) ora13(tp);
break;
default:
Serial.print(minutzi);
for(int i = 1000 ; i >0 ; i--) ora10(tp);
}
}
else
{
switch (minutzi) {
case 3:
Serial.print(minutzi);
for(int i = 1000 ; i >0 ; i--) ora22(tp);
break;
case 1:
Serial.print(minutzi);
for(int i = 1000 ; i >0 ; i--) ora21(tp);
break;
case 4:
Serial.print(minutzi);
for(int i = 1000 ; i >0 ; i--) ora23(tp);
break;
default:
Serial.print(minutzi);
for(int i = 1000 ; i >0 ; i--) ora20(tp);
}
}
Serial.println("? good");
}
// if temperature is >= 10 degree Celsiusvoid temperatura1(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
lightNumber(11); // display degree symboldelayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
lightNumber(12); // display C letterdelayMicroseconds(DISPLAY_BRIGHTNESS);
break;
}
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// if temperature is < 10 degree Celsiusvoid temperatura2(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_OFF);
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
lightNumber(11); // display degree symboldelayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
lightNumber(12); // display C letterdelayMicroseconds(DISPLAY_BRIGHTNESS);
break;
}
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// for humidityvoid umidit(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
lightNumber(11); // display degree symboldelayMicroseconds(DISPLAY_BRIGHTNESS);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
lightNumber(13); // display "o" letterdelayMicroseconds(DISPLAY_BRIGHTNESS);
break;
}
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// clock for hour >=10void ora10(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, LOW);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
//digitalWrite(segDP, HIGH);digitalWrite(segDP, LOW);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
}
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// clock for hour >=10 and minutes is 1x// ora e din 2 cifre si minutele incep cu cifra 1...void ora11(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, LOW);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
//digitalWrite(segDP, HIGH);
lightNumber(31); // display rotated 1 numberdigitalWrite(segDP, LOW);
// lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
}
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// clock for hour >=10 and minutes is 3x// ora e din 2 cifre si minutele incep cu cifra 3...void ora12(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, LOW);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
//digitalWrite(segDP, HIGH);
lightNumber(33); // display rotated 3digitalWrite(segDP, LOW);
// lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
}
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// clock for hour >=10 and minutes is 4x// ora e din 2 cifre si minutele incep cu cifra 4...void ora13(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, LOW);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
//digitalWrite(segDP, HIGH);
lightNumber(34); // display rotated 4digitalWrite(segDP, LOW);
// lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
}
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// clock for hour <10void ora20(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_OFF);
lightNumber(10); // off first valuedigitalWrite(segDP, HIGH);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, LOW);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
digitalWrite(segDP, LOW);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
}
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// clock for hour <10 and minutes is 1x// ora e din 2 cifre si minutele incep cu cifra 1...void ora21(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, LOW);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
//digitalWrite(segDP, HIGH);
lightNumber(31); // display rotated 1 numberdigitalWrite(segDP, LOW);
// lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
}
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// clock for hour <10 and minutes is 3x// ora e din 2 cifre si minutele incep cu cifra 3...void ora22(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, LOW);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
//digitalWrite(segDP, HIGH);
lightNumber(33); // display rotated 3digitalWrite(segDP, LOW);
// lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
}
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
// clock for hour <10 and minutes is 4x// ora e din 2 cifre si minutele incep cu cifra 4...void ora23(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOWfor(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of timeswitch(digit) {
case 1:
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, LOW);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
//digitalWrite(segDP, HIGH);
lightNumber(34); // display rotated 4digitalWrite(segDP, LOW);
// lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
lightNumber(toDisplay % 10);
toDisplay /= 10;
break;
}
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digitsdigitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
digitalWrite(segDP, HIGH);
}
}
//Given a number, turns on those segments//If number == 10, then turn off numbervoid lightNumber(int numberToDisplay) {
#define SEGMENT_ON LOW
#define SEGMENT_OFF HIGHswitch (numberToDisplay){
case 0:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_OFF);
break;
case 1:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_OFF);
break;
case 2:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_OFF);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_ON);
break;
case 3:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_ON);
break;
case 4:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
case 5:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
case 6:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
case 7:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_OFF);
break;
case 8:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
case 9:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
// all segment are ONcase 10:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_OFF);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_OFF);
break;
// degree symbol made by niq_rocase 11:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_ON);
break;
// C letter made by niq_rocase 12:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_OFF);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_OFF);
break;
// "o mic" letter made by niq_rocase 13:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_ON);
break;
// "rotated 3" made by niq_rocase 33:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_OFF);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
// "rotated 1" made by niq_rocase 31:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_OFF);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_OFF);
break;
// "rotated 4" made by niq_rocase 34:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;
}
}
void digitalClockDisplay(){
// digital clock display of the timeSerial.print(hour());
printDigits(minute());
printDigits(second());
Serial.print(" ");
Serial.print(day());
Serial.print(" ");
Serial.print(month());
Serial.print(" ");
Serial.print(year());
Serial.println();
}
void printDigits(int digits){
// utility function for clock display: prints preceding colon and leading 0Serial.print(":");
if(digits < 10)
Serial.print('0');
Serial.print(digits);
}
Cam atat... pentru moment. 19.11.2013 In unele cazuri precizia lasa de dorit, pe unele placi aparand erori de 2-3 minute la 24 de ore, datorita cristaleor de cuart.