Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Návod, jak vytvořit časovač do studovny.
Krok 1: Interakční video
drive.google.com/file/d/12z5zQR52AXILX2AGb3EplfbmZWANZiCl/view?usp=drivesdk
Krok 2: Prohlášení o problému
Studovny jsou většinou vždy obsazeny. Stává se to proto, že lidé rádi zůstávají v místnosti mnohem déle, než potřebují. Navrhli jsme časovač, který umožňuje každému člověku celkem 2 hodiny a lidem, kteří čekají, možnost požádat místnost, aby se stala další skupinou. Použití RGB na Neopixelech vyjádří zbývající čas.
Krok 3: Přehled toho, jak to funguje
Časovač se skládá z částí řezaných laserovou řezačkou, 3 tlačítek, 1 LED, 1 potenciometru.
Neopixely a potenciometr jsou připojeny k NodeMCU. NodeMCU je naprogramován tak, aby regonizoval, jak daleko je potenciometr otočen, aby se změnilo množství LED diod, které svítí na kruhovém pásu Neopixel. Tlačítko Request zastaví funkci funkcí Start, Stop a Set time. Barva LED diod na časovači v místnosti je stejná jako barva LED svítí na boku krabice. Neopixel na boku krabice představuje displej ve vestibulu budovy, aby věděl, který pokoj je zabrán a kolik času zbývá. Pro každou místnost jsou předepsány 2 LED diody, jedna LED představuje, zda je místnost obsazena, a druhá LED zrcadlí barvu LED diod na časovači (zelená je více času, poté žlutá, poté červená po kratší dobu).
Krok 4: Seznam materiálů a nástrojů
-Čistý akryl
-MicroUSB kabel
www.digikey.com/product-detail/en/stewart-…
-prkénko
www.amazon.com/gp/product/B01EV6LJ7G/ref=o…
-Potenciometr
www.alliedelec.com/honeywell-380c32500/701…
-3 tlačítka
www.digikey.com/product-detail/en/te-conne…
-NodeMCU
www.amazon.com/gp/product/B07CB4P2XY/ref=o…
- 2 Neopixelové proužky
www.amazon.com/Lighting-Modules-NeoPixel-W…
-Rezistory
www.digikey.com/product-detail/en/te-conne…
- Dráty
www.digikey.com/product-detail/en/sparkfun…
-1 LED
www.mouser.com/ProductDetail/Cree-Inc/C512…
-Horká lepicí pistole
www.walmart.com/ip/AdTech-Hi-Temp-Mini-Hot…
-Lepicí pásky na suchý zip
www.amazon.com/VELCRO-Brand-90076-Fastener…
Krok 5: Začněte stavět s Breadboard
A0 na střední pin na potenciometru
Vin to Power na prstenu Neopixel
3v3 na jednu stranu potenciometru
Všechny důvody k uzemnění na NodeMCU
Tlačítko D1 na vyžádání
D2 pro požadavek LED
Tlačítko D3 pro spuštění
Tlačítko D4 pro zastavení
D5 na odpor k vstupu Neopixel na kroužku
D6 na odpor k vstupnímu proužku Neopixel
Krok 6: Spuštění kódu
Toto je kód, který zajišťuje, že váš projekt zatím funguje. Časovač by měl být pouze několik sekund pro každou LED diodu na Neopixel Ring. Jakmile víte, že to funguje až do tohoto bodu, vše, co musíte udělat, je změnit čas, pokud příkazy níže na zadaný rozsah. V případě příkazů, které je třeba změnit pro přidělení času, vložím „#Change time“.
Vyzkoušení kódu:
čas importu
čas importu
ze strojového importu ADC
importní stroj
import neopixel
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.hodnota (0)
def tglled (): # přepíná funkci LED 'požadavku'
pokud l1.value () == 0:
l1.hodnota (1)
jiný:
l1.hodnota (0)
x = 0
b1temp1 = 0
b1temp2 = 0
t = 0
b2temp1 = 0
b2temp2 = 0
b3temp1 = 0
b3temp2 = 0
s = 0
zatímco pravda:
# Toto je tlačítko, které přepíná LED „požadavek“
b1temp2 = b1.value ()
pokud b1temp1 a ne b1temp2:
tglled ()
time.sleep (0,05)
b1temp1 = b1temp2
# Toto je mřížka
np2 [0] = np [11]
pokud l1.value () == 1:
np2 [1] = (30, 0, 0)
jiný:
np2 [1] = (0, 0, 30)
np2.write ()
# Zde vybereme, kolik času potřebujeme
pokud t == 0:
pro i v rozsahu (-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)
jiný:
np = (0, 0, 30)
np.write ()
jiný:
np = (0, 0, 0)
np.write ()
# Toto je tlačítko pro spuštění časovače
if (l1.value () == 0) and (t == 0):
b2temp2 = b2.value ()
pokud b2temp1 a ne b2temp2:
x += 1
t += (s * 100)
time.sleep (0,05)
b2temp1 = b2temp2
# Toto tlačítko ukončí časovač
if (l1.value () == 0):
b3temp2 = b3.value ()
pokud b3temp1 a ne b3temp2:
x = 0
t = 0
time.sleep (0,05)
b3temp1 = b3temp2
# Toto je časovač
pokud x> 0:
t += 1
if (t> 0) and (t <= 100): #Change time
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) and (t <= 200): #Change time
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) and (t <= 300): #Change time
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) and (t <= 400): #Change time
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) and (t <= 500): #Change time
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) and (t <= 600): #Change time
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) and (t <= 700): #Change time
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) and (t <= 800): #Change time
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) and (t <= 900): #Change time
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) and (t <= 1000): #Change time
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) and (t <= 1100): #Change time
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) and (t <= 1200): #Change time
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 ()
if t> = 1300: #Change time
t = 0
x = 0
Krok 7: Dokončení dotyků
Nyní, když jste tak daleko, měli byste mít pracovní kód nahraný na NodeMCU a všechny části zapojené na prkénko. Jakmile vyzkoušíte kód a odstřihnete všechny kusy, které máte pro exteriér, tj. Pouzdro řezané laserem, můžete nyní pájet vodiče k NodeMCU. Pájení je volitelné, ale může být pro vaše pouzdro bezpečnější a menší. Zde jsou některé části řezané laserem, které jsme vyrobili.