Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
Upute o tome kako stvoriti mjerač vremena za radnu sobu.
Korak 1: Videozapis o interakciji
drive.google.com/file/d/12z5zQR52AXILX2AGb3EplfbmZWANZiCl/view?usp=drivesdk
Korak 2: Izjava o problemu
Većinu vremena radne sobe su uvijek zauzete. To se događa zato što ljudi vole ostati u sobi mnogo duže nego što im je potrebno. Dizajnirali smo mjerač vremena koji omogućava svakoj osobi ukupno 2 sata i ljudima koji čekaju mogućnost da zatraže da soba bude sljedeća grupa. Korištenje RGB -a na neopikselima izrazit će preostalo vrijeme.
Korak 3: Pregled kako to funkcionira
Tajmer se sastoji od dijelova izrezanih laserskim rezačem, 3 dugmeta, 1 LED, 1 potenciometar.
Neopikseli i potenciometar su spojeni na NodeMCU. NodeMCU je programiran za ponovno određivanje udaljenosti okretanja potenciometra za promjenu količine LED dioda koje svijetle na kružnoj traci od neopiksela. Tipka Zahtjev zaustavlja funkciju Start, Stop i Set time. Boja LED dioda na tajmeru u prostoriji je ista boja LED diode koja svijetli sa strane kutije. Neopiksel sa strane kutije predstavlja ekran u predvorju zgrade kako bi znao koja je soba zauzeta i koliko je vremena ostalo. 2 LED diode su propisane za svaku prostoriju, jedna LED predstavlja ako je soba zauzeta, a druga LED reflektuje boju LED dioda na tajmeru (zelena ima više vremena, zatim žuta, a zatim crvena za manje vremena).
Korak 4: Lista materijala i alata
-Čisti akril
-MicroUSB kabl
www.digikey.com/product-detail/en/stewart-…
-Bboardboard
www.amazon.com/gp/product/B01EV6LJ7G/ref=o…
-Potenciometar
www.alliedelec.com/honeywell-380c32500/701…
-3 dugmeta
www.digikey.com/product-detail/en/te-conne…
-NodeMCU
www.amazon.com/gp/product/B07CB4P2XY/ref=o…
- 2 Neopixel trake
www.amazon.com/Lighting-Modules-NeoPixel-W…
-Otpornici
www.digikey.com/product-detail/en/te-conne…
- Žice
www.digikey.com/product-detail/en/sparkfun…
-1 LED
www.mouser.com/ProductDetail/Cree-Inc/C512…
Pištolj za vruće ljepilo
www.walmart.com/ip/AdTech-Hi-Temp-Mini-Hot…
-Ljepljive čičak trake
www.amazon.com/VELCRO-Brand-90076-Fastener…
Korak 5: Počnite graditi s tlocrtom
A0 do srednjeg pina na potenciometru
Vin za uključivanje Neopixel prstena
3v3 na jednu stranu potenciometra
Sve osnove za uzemljenje na NodeMCU
D1 za dugme za traženje
D2 na zahtjev LED
D3 za pokretanje
D4 za dugme Stop
D5 na otpor prema Neopixel ulazu na prstenu
D6 na otpor prema Neopixel ulaznoj traci
Korak 6: Pokretanje koda
Ovo je kôd za provjeru funkcioniranja vašeg projekta do sada. Tajmer bi trebao imati samo nekoliko sekundi po LED diodi na Neopixel prstenu. Jednom kad znate da radi do ove točke, sve što trebate učiniti je promijeniti donje izraze time if u navedeni raspon. Stavit ću '#Promijeni vrijeme' na svako vrijeme ako se izjave koje morate promijeniti za dodjelu vremena.
Isprobavanje koda:
import utime
vreme uvoza
iz ADC -a za uvoz mašina
mašina za uvoz
uvoz neopiksela
adc = ADC (0)
pin = machine. Pin (14, machine. Pin. OUT)
np = neopixel. NeoPixel (pin, 12)
pin2 = machine. Pin (12, machine. Pin. OUT)
np2 = neopixel. NeoPixel (pin2, 8)
l1 = Machine. Pin (4, machine. Pin. OUT)
b1 = Machine. Pin (5, machine. Pin. IN, machine. Pin. PULL_UP)
b3 = Machine. Pin (2, machine. Pin. IN, machine. Pin. PULL_UP)
b2 = Machine. Pin (0, machine. Pin. IN, machine. Pin. PULL_UP)
l1.value (0)
def tglined (): # prebacivanje LED funkcije 'zahtjev'
ako je l1.value () == 0:
l1.value (1)
drugo:
l1.value (0)
x = 0
b1temp1 = 0
b1temp2 = 0
t = 0
b2temp1 = 0
b2temp2 = 0
b3temp1 = 0
b3temp2 = 0
s = 0
dok je True:
# Ovo je dugme za prebacivanje LED -a za 'zahtev'
b1temp2 = b1.value ()
ako b1temp1, a ne b1temp2:
tglined ()
time.sleep (0,05)
b1temp1 = b1temp2
# Ovo je mreža
np2 [0] = np [11]
ako je l1.value () == 1:
np2 [1] = (30, 0, 0)
drugo:
np2 [1] = (0, 0, 30)
np2.write ()
# Ovdje odabiremo koliko nam je vremena potrebno
ako je t == 0:
za i u rasponu (-1, 12):
if (l1.value () == 0):
if (adc.read ()> = (85.34 * (i+1))):
np = (0, 0, 0)
np [11] = (0, 0, 30)
s = (i + 1)
drugo:
np = (0, 0, 30)
np.write ()
drugo:
np = (0, 0, 0)
np.write ()
# Ovo je dugme za pokretanje odbrojavanja
if (l1.value () == 0) i (t == 0):
b2temp2 = b2.value ()
ako b2temp1, a ne b2temp2:
x += 1
t += (s * 100)
time.sleep (0,05)
b2temp1 = b2temp2
# Ovo dugme prekida tajmer
if (l1.value () == 0):
b3temp2 = b3.value ()
ako b3temp1, a ne b3temp2:
x = 0
t = 0
time.sleep (0,05)
b3temp1 = b3temp2
# Ovo je tajmer
ako je x> 0:
t += 1
if (t> 0) i (t <= 100): #Promijeni vrijeme
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.write ()
if (t> 100) i (t <= 200): #Promijeni vrijeme
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.write ()
if (t> 200) i (t <= 300): #Promijeni vrijeme
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.write ()
if (t> 300) i (t <= 400): #Promijeni vrijeme
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.write ()
if (t> 400) i (t <= 500): #Promijeni vrijeme
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.write ()
if (t> 500) i (t <= 600): #Promeni vreme
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.write ()
if (t> 600) i (t <= 700): #Promijeni vrijeme
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.write ()
if (t> 700) i (t <= 800): #Promijeni vrijeme
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.write ()
if (t> 800) i (t <= 900): #Promijeni vrijeme
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.write ()
if (t> 900) i (t <= 1000): #Promijeni vrijeme
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.write ()
if (t> 1000) i (t <= 1100): #Promijenite vrijeme
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.write ()
if (t> 1100) i (t <= 1200): #Promijenite vrijeme
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.write ()
ako je t> = 1300: #Promijenite vrijeme
t = 0
x = 0
Korak 7: Završni dodiri
Sada, kada ste ovoliki, radni kôd biste trebali učitati na NodeMCU, a svi dijelovi ožičeni na matičnoj ploči. Nakon što ste isprobali kod i izrezali sve dijelove koje imate za vanjski dio, tj. Kućište laserskim rezanjem, sada možete lemiti žice na NodeMCU. Lemljenje je opcionalno, ali ga može učiniti sigurnijim i manjim za vaše kućište. Evo nekih laserski izrezanih dijelova koje smo napravili.