Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
Udhëzime se si të krijoni një kohëmatës për një dhomë studimi.
Hapi 1: Video e ndërveprimit
drive.google.com/file/d/12z5zQR52AXILX2AGb3EplfbmZWANZiCl/view?usp=drivesdk
Hapi 2: Deklarata e problemit
Shumicën e kohës, dhomat e studimit merren gjithmonë. Kjo ndodh sepse njerëzve u pëlqen të qëndrojnë në dhomë për shumë më tepër sesa kanë nevojë. Ne kemi krijuar një kohëmatës që i lejon secilit person një total prej 2 orësh dhe njerëzve që presin aftësinë për të kërkuar që dhoma të jetë grupi tjetër. Përdorimi i RGB në Neopixels do të shprehë sasinë e kohës së mbetur.
Hapi 3: Pasqyrë se si funksionon
Kohëmatësi përbëhet nga pjesë të prera nga prerësja lazer, 3 butona, 1 LED, 1 potenciometër.
Neopixelët dhe potenciometri lidhen me NodeMCU. NodeMCU është programuar të regonizojë sa larg është kthyer potenciometri për të ndryshuar sasinë e LED -ve që ndizen në shiritin rrethor Neopixel. Butoni Request ndalon funksionin e funksionit Start, Stop dhe Set time. Ngjyra e LED -ve në kohëmatësin brenda dhomës është e njëjta ngjyrë e LED e ndezur në anën e kutisë. Neopixel në anën e kutisë përfaqëson ekranin në hollin e ndërtesës për të ditur se cila dhomë është marrë dhe sa kohë ka mbetur. 2 LED janë të përshkruara për secilën dhomë, një LED përfaqëson nëse dhoma merret dhe tjetra led pasqyron ngjyrën e LED -ve në kohëmatës (jeshilja është më shumë kohë, pastaj e verdhë, pastaj e kuqe për më pak kohë).
Hapi 4: Lista e materialeve dhe mjeteve
-Akrilik i qartë
-Kabllo MicroUSB
www.digikey.com/product-detail/en/stewart-…
-Burboard
www.amazon.com/gp/product/B01EV6LJ7G/ref=o…
-Potentiometër
www.alliedelec.com/honeywell-380c32500/701…
-3 butona
www.digikey.com/product-detail/en/te-conne…
-NodeMCU
www.amazon.com/gp/product/B07CB4P2XY/ref=o…
- 2 shirita neopixel
www.amazon.com/Lighting-Modules-NeoPixel-W…
-Rezistorët
www.digikey.com/product-detail/en/te-conne…
- Tela
www.digikey.com/product-detail/en/sparkfun…
-1 LED
www.mouser.com/ProductDetail/Cree-Inc/C512…
-Armë ngjitëse e nxehtë
www.walmart.com/ip/AdTech-Hi-Temp-Mini-Hot…
-Shirita Velcro ngjitës
www.amazon.com/VELCRO-Brand-90076-Fastener…
Hapi 5: Filloni të ndërtoni me tabelën e bukës
A0 në kunjin e mesëm në Potenciometër
Vin për të ndezur unazën Neopixel
3v3 në njërën anë të Potenciometrit
Të gjitha bazat për t'u bazuar në NodeMCU
D1 Butoni i Kërkesës
D2 për të kërkuar LED
Butoni D3 për të filluar
Butoni D4 për të ndaluar
D5 në rezistencë ndaj Neopixel Hyrja në unazë
D6 në rezistencë ndaj shiritit të hyrjes Neopixel
Hapi 6: Fillimi i Kodit
Ky është kodi për t'u siguruar që projekti juaj po funksionon deri më tani. Kohëmatësi duhet të jetë vetëm disa sekonda për LED në Unazën Neopixel. Pasi ta dini se po funksionon deri në këtë pikë, gjithçka që duhet të bëni është të ndryshoni kohën nëse deklaratat më poshtë në gamën tuaj të specifikuar. Unë do të vendos '#Change time' në secilën prej kohës nëse deklaratat që ju duhet të ndryshoni për ndarjen e kohës tuaj.
Duke provuar Kodin:
import utime
koha e importit
nga importi i makinës ADC
makinë importi
import neopixel
adc = ADC (0)
pin = makinë. Pin (14, makinë. Pin. OUT)
np = neopixel. NeoPixel (pin, 12)
pin2 = makinë. Pin (12, makinë. Pin. OUT)
np2 = neopixel. NeoPixel (pin2, 8)
l1 = makinë. Pin (4, makinë. Pin. OUT)
b1 = makinë. Pin (5, makinë. Pin. IN, makinë. Pin. PULL_UP)
b3 = makinë. Pin (2, makinë. Pin. IN, makinë. Pin. PULL_UP)
b2 = makinë. Pin (0, makinë. Pin. IN, makinë. Pin. PULL_UP)
l1. vlera (0)
def tglled (): # kaloni 'kërkesë' funksion LED
nëse l1.vlera () == 0:
l1. vlera (1)
tjeter:
l1. vlera (0)
x = 0
b1temp1 = 0
b1temp2 = 0
t = 0
b2temp1 = 0
b2temp2 = 0
b3temp1 = 0
b3temp2 = 0
s = 0
ndërsa e vërtetë:
# Ky është butoni që ndryshon LED -in 'e kërkesës'
b1temp2 = b1.vlera ()
nëse b1temp1 dhe jo b1temp2:
tglled ()
koha. gjumi (0.05)
b1temp1 = b1temp2
# Ky është rrjeti
np2 [0] = np [11]
nëse l1.vlera () == 1:
np2 [1] = (30, 0, 0)
tjeter:
np2 [1] = (0, 0, 30)
np2.write ()
# Këtu zgjedhim sa kohë na duhet
nëse t == 0:
për i në rang (-1, 12):
nëse (l1.vlera () == 0):
nëse (adc.read ()> = (85.34 * (i+1))):
np = (0, 0, 0)
np [11] = (0, 0, 30)
s = (i + 1)
tjeter:
np = (0, 0, 30)
np.shkruaj ()
tjeter:
np = (0, 0, 0)
np.shkruaj ()
# Ky është butoni për të filluar kohëmatësin
nëse (l1.vlera () == 0) dhe (t == 0):
b2temp2 = b2.vlera ()
nëse b2temp1 dhe jo b2temp2:
x += 1
t += (s * 100)
koha. gjumi (0.05)
b2temp1 = b2temp2
# Ky buton përfundon kohëmatësin
nëse (l1.vlera () == 0):
b3temp2 = b3. vlera ()
nëse b3temp1 dhe jo b3temp2:
x = 0
t = 0
koha. gjumi (0.05)
b3temp1 = b3temp2
# Ky është kohëmatësi
nëse x> 0:
t += 1
nëse (t> 0) dhe (t <= 100): #Koha e ndryshimit
np [0] = (5, 30, 0)
np [1] = (5, 30, 0)
np [2] = (5, 30, 0)
np [3] = (5, 30, 0)
np [4] = (5, 30, 0)
np [5] = (5, 30, 0)
np [6] = (5, 30, 0)
np [7] = (5, 30, 0)
np [8] = (5, 30, 0)
np [9] = (5, 30, 0)
np [10] = (5, 30, 0)
np [11] = (5, 30, 0)
np.shkruaj ()
nëse (t> 100) dhe (t <= 200): #Koha e ndryshimit
np [0] = (0, 0, 0)
np [1] = (10, 30, 0)
np [2] = (10, 30, 0)
np [3] = (10, 30, 0)
np [4] = (10, 30, 0)
np [5] = (10, 30, 0)
np [6] = (10, 30, 0)
np [7] = (10, 30, 0)
np [8] = (10, 30, 0)
np [9] = (10, 30, 0)
np [10] = (10, 30, 0)
np [11] = (10, 30, 0)
np.shkruaj ()
nëse (t> 200) dhe (t <= 300): #Koha e ndryshimit
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (15, 30, 0)
np [3] = (15, 30, 0)
np [4] = (15, 30, 0)
np [5] = (15, 30, 0)
np [6] = (15, 30, 0)
np [7] = (15, 30, 0)
np [8] = (15, 30, 0)
np [9] = (15, 30, 0)
np [10] = (15, 30, 0)
np [11] = (15, 30, 0)
np.shkruaj ()
nëse (t> 300) dhe (t <= 400): #Koha e ndryshimit
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (20, 30, 0)
np [4] = (20, 30, 0)
np [5] = (20, 30, 0)
np [6] = (20, 30, 0)
np [7] = (20, 30, 0)
np [8] = (20, 30, 0)
np [9] = (20, 30, 0)
np [10] = (20, 30, 0)
np [11] = (20, 30, 0)
np.shkruaj ()
nëse (t> 400) dhe (t <= 500): #Koha e ndryshimit
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (0, 0, 0)
np [4] = (25, 30, 0)
np [5] = (25, 30, 0)
np [6] = (25, 30, 0)
np [7] = (25, 30, 0)
np [8] = (25, 30, 0)
np [9] = (25, 30, 0)
np [10] = (25, 30, 0)
np [11] = (25, 30, 0)
np.shkruaj ()
nëse (t> 500) dhe (t <= 600): #Koha e ndryshimit
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (0, 0, 0)
np [4] = (0, 0, 0)
np [5] = (30, 30, 0)
np [6] = (30, 30, 0)
np [7] = (30, 30, 0)
np [8] = (30, 30, 0)
np [9] = (30, 30, 0)
np [10] = (30, 30, 0)
np [11] = (30, 30, 0)
np.shkruaj ()
nëse (t> 600) dhe (t <= 700): #Koha e ndryshimit
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (0, 0, 0)
np [4] = (0, 0, 0)
np [5] = (0, 0, 0)
np [6] = (30, 25, 0)
np [7] = (30, 25, 0)
np [8] = (30, 25, 0)
np [9] = (30, 25, 0)
np [10] = (30, 25, 0)
np [11] = (30, 25, 0)
np.shkruaj ()
nëse (t> 700) dhe (t <= 800): #Koha e ndryshimit
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (0, 0, 0)
np [4] = (0, 0, 0)
np [5] = (0, 0, 0)
np [6] = (0, 0, 0)
np [7] = (30, 20, 0)
np [8] = (30, 20, 0)
np [9] = (30, 20, 0)
np [10] = (30, 20, 0)
np [11] = (30, 20, 0)
np.shkruaj ()
nëse (t> 800) dhe (t <= 900): #Koha e ndryshimit
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (0, 0, 0)
np [4] = (0, 0, 0)
np [5] = (0, 0, 0)
np [6] = (0, 0, 0)
np [7] = (0, 0, 0)
np [8] = (30, 15, 0)
np [9] = (30, 15, 0)
np [10] = (30, 15, 0)
np [11] = (30, 15, 0)
np.shkruaj ()
nëse (t> 900) dhe (t <= 1000): #Koha e ndryshimit
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (0, 0, 0)
np [4] = (0, 0, 0)
np [5] = (0, 0, 0)
np [6] = (0, 0, 0)
np [7] = (0, 0, 0)
np [8] = (0, 0, 0)
np [9] = (30, 10, 0)
np [10] = (30, 10, 0)
np [11] = (30, 10, 0)
np.shkruaj ()
nëse (t> 1000) dhe (t <= 1100): #Koha e ndryshimit
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (0, 0, 0)
np [4] = (0, 0, 0)
np [5] = (0, 0, 0)
np [6] = (0, 0, 0)
np [7] = (0, 0, 0)
np [8] = (0, 0, 0)
np [9] = (0, 0, 0)
np [10] = (30, 5, 0)
np [11] = (30, 5, 0)
np.shkruaj ()
nëse (t> 1100) dhe (t <= 1200): #Koha e ndryshimit
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (0, 0, 0)
np [4] = (0, 0, 0)
np [5] = (0, 0, 0)
np [6] = (0, 0, 0)
np [7] = (0, 0, 0)
np [8] = (0, 0, 0)
np [9] = (0, 0, 0)
np [10] = (0, 0, 0)
np [11] = (30, 0, 0)
np.shkruaj ()
nëse t> = 1300: #Koha e ndryshimit
t = 0
x = 0
Hapi 7: Përfundimi i Prekjeve
Tani, pasi të jeni aq larg, duhet të keni kodin e punës të ngarkuar në NodeMCU dhe të gjitha pjesët të lidhura me tabelën e bukës. Pasi të keni provuar kodin dhe të keni prerë çdo pjesë që keni për pjesën e jashtme, domethënë shtresën e prerë me lazer, tani mund t'i lidhni telat në NodeMCU. Bashkimi është opsional, por mund ta bëjë atë më të sigurt dhe më të vogël për shtresën tuaj. Këtu janë disa nga pjesët e prera me lazer që kemi bërë.