În acest post vom construi un ceas digital folosind afișaj LED pe 7 segmente cu design controlat Arduino.
DE:
Cum funcționează circuitele
Circuitul de ceas propus pe 7 segmente este ieftin și chiar începător în Arduino îl poate realiza cu ușurință. Acest ceas este format din patru afișaje pe 7 segmente, două pentru ore și două pentru minute.
Afișajul este asociat cu IC 4026, care este conceput pentru a conduce afișaje pe 7 segmente. Fiecare IC 4026 este controlat de Arduino.
Acest ceas are funcția de alertă sonoră, care emite un sunet la fiecare început de oră, oferind o idee aproximativă despre timp, fără a privi ceasul. Acest ceas nu are funcția de alarmă.
Codul Arduino nu are nevoie de nicio bibliotecă specială pentru a compila programul. Ceasul are un design foarte minimalist, doar patru afișaje și două LED-uri pentru indicatorul AM / PM și nu are alte funcții fanteziste în afară de semnal sonor la fiecare oră.
Prototipul autorului:
Iată un prototip complet, care folosește materiale de carton și resturi:
Design-ul:
Circuitul este format din patru IC 4026 pentru controlul a patru afișaje pe 7 segmente și creierul ceasului arduino. Două rezistențe de tragere sunt conectate la pinul de resetare al IC 4026 pentru a evita resetarea accidentală din cauza încărcării statice. Indicator AM / PM conectat la arduino în combinație cu rezistor de limitare a curentului de 330 ohmi.
Notă: Rezistorul de la 220 ohmi la 330 ohmi trebuie conectat la fiecare segment de afișaj.
Configurarea pinului IC 4026:
Circuitul sonor:
Circuitul sonor este doar un multivibrator monostabil proiectat folosind IC555. Când un impuls negativ este alimentat la pinul 2 al IC555, acesta emite un bip aproximativ o secundă. Această alertă audio îl ajută pe utilizator să își păstreze o idee aproximativă despre timp. Pinul 2 al IC555 ar trebui să fie conectat la pinul 10 al arduino.
Codul programului:
//---------Program developed by R.Girish---------------//
int mint=13
int hrs=11
int beep=10
int rst=8 // reset to mint ic.
int rsth=9 //reset to hrs ic.
int am=7
int pm=6
int y=0
int t=0
int x=0
void setup()
{
pinMode(beep,OUTPUT)
pinMode(hrs,OUTPUT)
pinMode(am,OUTPUT)
pinMode(pm,OUTPUT)
pinMode(mint,OUTPUT)
pinMode(rst,OUTPUT)
pinMode(rsth,OUTPUT)
}
void loop()
{
digitalWrite(beep,1)
digitalWrite(13,0)
delay(10000)
delay(10000)
delay(10000)
delay(10000)
delay(10000)
delay(10000)
digitalWrite(13,1)
t=t+1
if(t==60)
{
digitalWrite(rst,1)
digitalWrite(rst,0)
digitalWrite(hrs,1)
digitalWrite(hrs,0)
digitalWrite(beep,0)
digitalWrite(beep,1)
x=x+1
y=y+1
t=0
delay(2000) // error fixing (varies with temperature)
}
if(x==13) // display 1'O clock after 12'O clock.
{
digitalWrite(rsth,1)
digitalWrite(rsth,0)
digitalWrite(hrs,1)
digitalWrite(hrs,0)
x=1
}
if(y<12)
{
digitalWrite(am,1)
digitalWrite(pm,0)
}
if(y>=12)
{
digitalWrite(pm,1)
digitalWrite(am,0)
}
if(y==24) y=0
}
//---------Program developed by R.Girish---------------//
Cum setați ora:
Fiind un design foarte minimalist, „butonul de resetare” poate fi folosit pentru a seta timpul. Dar utilizatorul trebuie să seteze ora cu ajutorul ceasului de referință. Utilizatorul trebuie să reseteze arduino la exact 12’O ceas. Unul dintre acestea este realizat, ceasul actualizează singură ora.
Notă: Întrucât ceasul digital pe 7 segmente explicat mai sus, care utilizează Arduino, nu are „cip de ceas în timp real”, pentru menținerea orei exacte, există posibilitatea ca timpul să poată duce / întârzia din cauza schimbării temperaturii ambiante.
Pentru a remedia acest lucru, iată pașii:
• Dacă ceasul dvs. conduce timpul de referință cu câteva secunde, acesta trebuie să fie încetinit, notați diferența și introduceți valoarea în program în milisecunde.
delay (2000) // remedierea erorilor (variază în funcție de temperatură) Aceasta va încetini câteva secunde în fiecare oră.
• Înlocuiți 2000 cu valoarea dvs.
• Dacă întârziați ceasul, setați „întârziere (0) // remedierea erorilor (variază în funcție de timp)” și efectuați următoarele modificări în program:
delay(10000)
delay(10000)
delay(10000)
delay(10000)
delay(10000)
delay(10000)
to
delay(10000)
delay(10000)
delay(10000)
delay(10000)
delay(10000)
delay(9700)
Înlocuiți „întârziere (9700)” cu valoarea dvs. pentru a accelera timpul în fiecare minut.
Acești pași nu garantează că timpul va fi întotdeauna corect, dar ajută la menținerea timpului cu o inexactitate minimă. Designul propus este de 12 ore.
Precedent: Circuitul indicatorului de încărcare completă a bateriei utilizând două tranzistoare Următorul: Generator de efecte Corona