Përmbajtje:
- Furnizimet
- Hapi 1: Lidhni Digit Drive dhe Segment Drive për ekran të shumëfishtë
- Hapi 2: Testoni lidhjet
- Hapi 3: Kodi për të shfaqur kohën dhe PWM për të kontrolluar shkëlqimin
- Hapi 4: Krijoni një lidhje interneti
- Hapi 5: Shtoni Kodin Bazë për të analizuar kohën nga uebi
- Hapi 6: Shtoni një sensor dhe dritë për të zbehur ekranin
- Hapi 7: Butoni në Orë dhe Filloni ta Përdorni
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
Gjeti një orë dixhitale prej 10 dollarësh në Amazon. Tani për ta personalizuar atë për të marrë kohë nga interneti.
Furnizimet
Vula ARM e programueshme në BASIC në dispozicion këtu
Hapi 1: Lidhni Digit Drive dhe Segment Drive për ekran të shumëfishtë
Fillova me një orë dixhitale të lirë nga rafti me numër të madh. Së pari hoqa çipin ekzistues të orës. Pastaj bëri disa sondazhe përreth dhe gjeti lidhjet e segmentit 7, të cilat mund të drejtohen drejtpërdrejt nga mikroprocesori. Pastaj u gjetën drejtuesit 4 shifror të cilët ishin transistorë të cilët mikroprocesori mund t'i drejtojë. Dhe pastaj lidhini ato.
Hapi 2: Testoni lidhjet
Si një eksperiment unë shkrova një program BASIC për të drejtuar të gjitha linjat, për të kontrolluar instalimet elektrike dhe për të matur rrymën, e cila në këtë rast ishte 82 mA
Tjetra ishte të shkruani kodin për të skanuar linjat.
'disku i ekranit të orës në internet
IO (7) = 0 'PMOS makinë - do të jetë PWM një ditë
për y = 45 në 48
IO (y) = makinë 0 -shifrore
për x = 8 deri në 15
Segmenti IO (x) = 0 '
prit (500)
IO (x) = 1
tjetra x
DIR (y) = 0 'çaktivizoni disqet në segment
tjetra y
Hapi 3: Kodi për të shfaqur kohën dhe PWM për të kontrolluar shkëlqimin
Tjetra shtova një transistor PMOS në furnizimin me energji për të gjithë drejtuesit shifror. Me atë të nxitur nga gjerësia e impulsit, modulimi do të kontrollojë shkëlqimin e ekranit. Këtu është kodi BAZ për të shfaqur kohën.
'disku i ekranit të orës në internet #përfshi "LPC11U3x.bas"
'globale
hr = 0 'përcaktojnë orën
min = 0 'përcaktoni minutën
#përcaktoni SEG_0 & HBB00
#përcaktoni SEG_1 & H1800
#përcaktoni SEG_2 & HD300
#përcaktoni SEG_3 & HD900
#përcaktoni SEG_4 & H7800
#përcaktoni SEG_5 & HE900
#përcaktoni SEG_6 & HEB00
#përcaktoni SEG_7 & H9800
#përcaktoni SEG_8 & HFB00
#përcaktoni SEG_9 & HF800
#përcaktoni SEG_o & H4B00
#përcaktoni SEG_f & HE200
const DIGarray = {SEG_0, SEG_1, SEG_2, SEG_3, SEG_4, SEG_5, SEG_6, SEG_7, SEG_8, SEG_9, SEG_o, SEG_f}
#përcakto DIG_WAIT 1
#përcakto US_TIME
nën -koha e shfaqjes (gabim, orë, min)
zbehur hr10, hr1, min10, min1, i
#ifdef US_TIME
nëse hr> 12 atëherë hr -= 12
nëse hr = 0 atëherë hr = 12
#endif
hr10 = orë / 10
hr1 = orë MOD 10
min10 = min / 10
min1 = min MOD 10
për i = 0 në 1
nëse hr10 atëherë
IO (45) = 0
endif
GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (hr10)
GPIO_CLR (0) = DIGarray (hr10)
prit (DIG_WAIT)
HYRJA (45)
IO (46) = 0
GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (hr1) + IF (i, & H400, 0)
GPIO_CLR (0) = DIGarray (hr1) + IF (i, & H400, 0)
prit (DIG_WAIT)
HYRJA (46)
IO (47) = 0
GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (min10)
GPIO_CLR (0) = DIGarray (min10)
prit (DIG_WAIT)
HYRJA (47)
IO (48) = 0
GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (min1)
GPIO_CLR (0) = DIGarray (min1)
prit (DIG_WAIT)
HYRJA (48)
tjeter i
fundet
'përdorues TIMER1 (32 bit) për të ndërprerë çdo minutë
NDTERRSHTIMI NUBN TIMER1IRQ
T1_IR = 1 'Pastro ndërprerjen
min += 1
nëse min> 59 atëherë
min = 0
orë += 1
nëse hr> 23 atëherë
hr = 0
endif
endif
ENDSUB
SUB ON_TIMER (max_cnt, dothis)
TIMER1_ISR = funksioni i vendosur + 1 'i VIC - keni nevojë për +1 për funksionimin e gishtit të madh
SYSCON_SYSAHBCLKCTRL OR = (1 << 10) 'aktivizoni TIMER1
T1_PR = 0 'pa prescale - do të rregullojë vlerën për një kohë më të saktë
VICIntEnable OR = (1 << TIMER1_IRQn) 'Aktivizo ndërprerjen
T1_MR0 = max_cnt-1 'vendos numrin e përputhjes të ms
T1_MCR = 3 'Ndërprit dhe Rivendos në
MR0 T1_IR = 1 'ndërprerje e qartë
T1_TC = 0 'numërues i qartë i kohëmatësit
T1_TCR = 1 'TIMER1 Aktivizo
ENDSUB
#përcakto MINUT_PCLK 2880000000 '60 sekonda në 48 MHz
kryesore:
orë = 9
min = 33
ON_TIMER (MINUT_PCLK, ADDRESSOF TIMER1IRQ)
IO (7) = 0 'PWM një ditë - duhet të kaloni në P0_22 ??
ndërsa 1
koha e shfaqjes (0, orë, min)
lak
Hapi 4: Krijoni një lidhje interneti
Përdorni një ESP8266 për një lidhje WiFi. Pasi u hodh në internet për një kohë zgjidhja më e mirë ishte nodemcu version 0.9.6 dhe një esp8266_flasher më i vjetër funksionoi më së miri.
www.electrodragon.com/w/File:Nodemcu_20150704_firmware.zip
Pastaj një faqe e thjeshtë PHP për të shërbyer kohë nga interneti-
Serveri i Kohës Coridium
<? php
$ timezone = htmlspecialchars ($ _ GET ["zone"]); nëse ($ timezone == "")
$ timezone = 'America/Los_Angeles';
$ tz_object = e re DateTimeZone ($ timezone);
$ datetime = data e re e datës ();
$ datetime-> setTimezone ($ tz_object);
jehona "koha është-", $ datetime-> format ('H: i: s');
jehonë "";
jehonë "data është-", $ datetime-> format ('m/d/Y');
?>
Ajo faqe në internet është kështu që ju mund të kërkoni
coridium.us/time.php - dhe ju merrni mirë zonën kohore amerikane të Paqësorit
ose
coridium.us/time.php?zone=Europe/London
Nuk ka kontroll të gabimeve dhe ka shumë të ngjarë që kurrë nuk do të jetë
Dhe Lua ta lexojë atë -
wifi.sta.config ("your_SSID", "your_PASSWORD")> wifi.sta.connect ()…
sk = net.createConnection (net. TCP, 0)
sk: aktiv ("marr", funksioni (sck, c) print (c) fund)
sk: lidheni (80, "coridium.us")
sk: send ("GET /time.php HTTP/1.1 / r / nHost: coridium.us / r / nLidhja: mbaj gjallë / r / nPrano: */ *\ r / n / r / n")
Dhe ju e ktheni kohën si
ora është-09: 38: 49data është -2018-31-12
Hapi 5: Shtoni Kodin Bazë për të analizuar kohën nga uebi
Kjo është një nëngrup i programit të plotë BASIC, ai program i plotë mund të shihet në lidhjen në hapin përfundimtar.
nëse strstr (build_gets, "koha është-") = 0 atëherë
hr = build_gets (8) - "0"
nëse build_gets (9) = ":" atëherë
min = (build_gets (10) - "0")*10
min += build_gets (11) - "0"
tjeter
hr = hr * 10 + build_gets (9) - "0"
min = (build_gets (11) - "0")*10
min += build_gets (12) - "0"
endif
endif
Hapi 6: Shtoni një sensor dhe dritë për të zbehur ekranin
Një transistor fotografik u shtua për të ndjerë dritën e ambientit në dhomë. Pa të, ekrani është mjaft i ndritshëm për të zgjuar të vdekurit (mua) gjatë natës.
Tensioni analog i daljes së transistorit të fotografisë lexohet dhe modulimi i gjerësisë së pulsit vendos shkëlqimin e përgjithshëm të ekranit.
Hapi 7: Butoni në Orë dhe Filloni ta Përdorni
Versioni përfundimtar shfaq kohën, dhe rreth orës 3 të mëngjesit del në internet për të lexuar kohën aktuale. Kjo gjithashtu merret me kursimin e dritës së ditës.
Motivimi për këtë projekt ishte ndërprerjet e energjisë që përjetojmë këtu në male dhe nevoja për të rivendosur orët ose për të zëvendësuar bateritë për t'i mbajtur ato gjallë.
Ky ka qenë një pasqyrë e shpejtë e projektit.
Detajet e plota të kësaj ore të lidhur me ueb në internet.