Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 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ćinom se uvijek zauzimaju radne sobe. To se događa jer ljudi vole ostati u sobi mnogo dulje nego što im je potrebno. Dizajnirali smo mjerač vremena koji omogućuje 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
Mjerač vremena sastoji se od dijelova izrezanih laserskim rezačem, 3 gumba, 1 LED, 1 potenciometar.
Neopikseli i potenciometar spojeni su 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. Gumb Zahtjev zaustavlja funkciju Start, Stop i Set time. Boja LED dioda na mjeraču vremena u prostoriji ista je boja LED diode koja svijetli sa strane kutije. Neopiksel sa strane kutije predstavlja zaslon u predvorju zgrade kako bi znao koja je soba zauzeta i koliko je vremena ostalo. 2 LED diode su propisane za svaku sobu, jedna LED predstavlja ako je soba zauzeta, a druga LED reflektira boju LED dioda na mjeraču vremena (zelena ima više vremena, zatim žuta, a zatim crvena za manje vremena).
Korak 4: Popis materijala i alata
-čisti akril
-MicroUSB kabel
www.digikey.com/product-detail/en/stewart-…
-Daska
www.amazon.com/gp/product/B01EV6LJ7G/ref=o…
-Potenciometar
www.alliedelec.com/honeywell-380c32500/701…
-3 tipke
www.digikey.com/product-detail/en/te-conne…
-NodeMCU
www.amazon.com/gp/product/B07CB4P2XY/ref=o…
- 2 Neopikselne 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 zatika na potenciometru
Vin to Power Neopixel prsten
3v3 na jednu stranu potenciometra
Sve osnove za uzemljenje na NodeMCU
D1 za gumb zahtjeva
D2 na zahtjev LED
D3 za pokretanje
D4 za zaustavljanje
D5 na otpornik do Neopixel ulaza 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. Mjerač vremena trebao bi biti samo nekoliko sekundi po LED na neopikselnom prstenu. 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 izjave koje morate promijeniti za svoju dodjelu vremena.
Isprobavanje koda:
uvoz utime
vrijeme uvoza
iz ADC uvoznog stroja
stroj 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 = stroj. Pin (4, stroj. 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.vrijednost (0)
def tglined (): # prebacivanje LED funkcije 'zahtjev'
ako je l1.value () == 0:
l1.vrijednost (1)
drugo:
l1.vrijednost (0)
x = 0
b1temp1 = 0
b1temp2 = 0
t = 0
b2temp1 = 0
b2temp2 = 0
b3temp1 = 0
b3temp2 = 0
s = 0
dok je istina:
# Ovo je gumb koji prebacuje LED "zahtjev"
b1temp2 = b1.value ()
ako b1temp1, a ne b1temp2:
tglined ()
vrijeme.spavanje (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 gumb za pokretanje mjerača vremena
if (l1.value () == 0) i (t == 0):
b2temp2 = b2.value ()
ako b2temp1, a ne b2temp2:
x += 1
t += (s * 100)
vrijeme.spavanje (0,05)
b2temp1 = b2temp2
# Ovaj gumb prekida mjerač vremena
if (l1.value () == 0):
b3temp2 = b3.value ()
ako b3temp1, a ne b3temp2:
x = 0
t = 0
vrijeme.spavanje (0,05)
b3temp1 = b3temp2
# Ovo je mjerač vremena
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): #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] = (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): #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] = (0, 0, 0)
np [10] = (30, 5, 0)
np [11] = (30, 5, 0)
np.write ()
if (t> 1100) i (t <= 1200): #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] = (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, kad ste ovoliki, radni kôd trebali biste učitati na NodeMCU, a svi dijelovi ožičeni na matičnoj ploči. Nakon što ste isprobali kôd i izrezali sve dijelove koje imate za vanjski dio, tj. Laserski izrezano kućište, 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 izradili.