Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Návod, ako vytvoriť časovač do študovne.
Krok 1: Interakčné video
drive.google.com/file/d/12z5zQR52AXILX2AGb3EplfbmZWANZiCl/view?usp=drivesdk
Krok 2: Vyhlásenie o probléme
Väčšinu času sú študovne vždy obsadené. Stáva sa to preto, že ľudia radi zostanú v miestnosti oveľa dlhšie, ako potrebujú. Navrhli sme časovač, ktorý umožní každej osobe celkom 2 hodiny a čakajúcim osobám požiadať, aby sa miestnosť stala ďalšou skupinou. Použitie RGB na Neopixeloch vyjadrí zostávajúci čas.
Krok 3: Prehľad toho, ako to funguje
Časovač sa skladá z častí rezaných laserovou rezačkou, 3 tlačidiel, 1 diódy LED, 1 potenciometra.
Neopixely a potenciometer sú zapojené do NodeMCU. NodeMCU je naprogramovaný tak, aby regonizoval, ako ďaleko je potenciometer otočený, aby sa zmenil počet LED diód, ktoré svietia na kruhovom neopixelovom páse. Tlačidlo Požiadať zastaví funkciu funkcií Štart, Zastaviť a Nastaviť čas. Farba diód LED na časovači v miestnosti je rovnaká ako farba diód LED rozsvietených na boku krabice. Neopixel na bočnej strane škatule predstavuje displej vo vstupnej hale budovy, aby vedel, ktorá izba je obsadená a koľko času ešte zostáva. Pre každú izbu sú predpísané 2 LED diódy, jedna LED dióda predstavuje, či je miestnosť obsadená, a druhá LED dióda odzrkadľuje farbu diód LED na časovači (zelená je viac času, potom žltá, potom červená kratšiu dobu).
Krok 4: Zoznam materiálov a nástrojov
-čistý akryl
-Kábel microUSB
www.digikey.com/product-detail/en/stewart-…
-Breadboard
www.amazon.com/gp/product/B01EV6LJ7G/ref=o…
-potenciometer
www.alliedelec.com/honeywell-380c32500/701…
-3 tlačidlá
www.digikey.com/product-detail/en/te-conne…
-NodeMCU
www.amazon.com/gp/product/B07CB4P2XY/ref=o…
- 2 neopixelové prúž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…
-Horúca lepiaca pištoľ
www.walmart.com/ip/AdTech-Hi-Temp-Mini-Hot…
-Lepiace pásky na suchý zips
www.amazon.com/VELCRO-Brand-90076-Fastener…
Krok 5: Začnite stavať s doskou
A0 k strednému kolíku na potenciometri
Neopixelový prsteň Vin to Power
3v3 na jednu stranu potenciometra
Všetky dôvody na uzemnenie na NodeMCU
Tlačidlo D1 na vyžiadanie
D2 na vyžiadanie LED
D3 na tlačidlo Štart
D4 na tlačidlo Stop
D5 na odpor k neopixelovému vstupu na krúžku
D6 na odpor k vstupnému prúžku Neopixel
Krok 6: Spustenie kódu
Toto je kód, ktorý zaisťuje, aby váš projekt doteraz fungoval. Časovač by mal byť iba niekoľko sekúnd na jednu diódu LED na neopixelovom krúžku. Akonáhle budete vedieť, že to funguje až do tohto bodu, stačí, ak zmeníte čas, ak príkazy uvedené nižšie na vami určený rozsah. V prípade vyhlásení, ktoré musíte pre svoj časový limit zmeniť, vložím do každého času „#Change time“.
Vyskúšajte kód:
čas importu
čas importu
zo strojového importu ADC
importný stroj
import neopixel
adc = ADC (0)
pin = machine. Pin (14, machine. Pin. OUT)
np = neopixel. NeoPixel (kolík, 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 (): # prepína funkciu LED „požiadavky“
ak l1.value () == 0:
l1.hodnota (1)
inak:
l1.hodnota (0)
x = 0
b1temp1 = 0
b1temp2 = 0
t = 0
b2temp1 = 0
b2temp2 = 0
b3temp1 = 0
b3temp2 = 0
s = 0
kým je pravda:
# Toto je tlačidlo, ktoré prepína LED „požiadavka“
b1temp2 = b1.value ()
ak b1temp1 a nie b1temp2:
tglled ()
time.sleep (0,05)
b1temp1 = b1temp2
# Toto je mriežka
np2 [0] = np [11]
ak l1.hodnota () == 1:
np2 [1] = (30, 0, 0)
inak:
np2 [1] = (0, 0, 30)
np2.write ()
# Tu vyberáme, koľko času potrebujeme
ak t == 0:
pre i v rozsahu (-1, 12):
ak (l1.value () == 0):
if (adc.read ()> = (85,34 * (i+1))):
np = (0, 0, 0)
np [11] = (0, 0, 30)
s = (i + 1)
inak:
np = (0, 0, 30)
np.write ()
inak:
np = (0, 0, 0)
np.write ()
# Toto je tlačidlo na spustenie časovača
ak (l1.hodnota () == 0) a (t == 0):
b2temp2 = b2.value ()
ak b2temp1 a nie b2temp2:
x += 1
t += (s * 100)
time.sleep (0,05)
b2temp1 = b2temp2
# Toto tlačidlo ukončí časovač
ak (l1.value () == 0):
b3temp2 = b3.hodnota ()
ak b3temp1 a nie b3temp2:
x = 0
t = 0
time.sleep (0,05)
b3temp1 = b3temp2
# Toto je časovač
ak x> 0:
t += 1
ak (t> 0) a (t <= 100): #Zmeniť čas
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 ()
ak (t> 100) a (t <= 200): #Čas zmeny
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 ()
ak (t> 200) a (t <= 300): #Čas zmeny
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 ()
ak (t> 300) a (t <= 400): #Čas zmeny
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 ()
ak (t> 400) a (t <= 500): #Čas zmeny
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 ()
ak (t> 500) a (t <= 600): #Čas zmeny
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 ()
ak (t> 600) a (t <= 700): #Čas zmeny
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 ()
ak (t> 700) a (t <= 800): #Čas zmeny
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 ()
ak (t> 800) a (t <= 900): #Čas zmeny
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 ()
ak (t> 900) a (t <= 1000): #Čas zmeny
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 ()
ak (t> 1000) a (t <= 1100): #Čas zmeny
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 ()
ak (t> 1100) a (t <= 1200): #Čas zmeny
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 ()
ak t> = 1300: #Čas zmeny
t = 0
x = 0
Krok 7: Dokončenie dotykov
Keď ste už tak ďaleko, mali by ste mať pracovný kód nahraný na NodeMCU a všetky diely zapojené na doske. Akonáhle vyskúšate kód a odstrihnete všetky kusy, ktoré máte pre exteriér, t.j. laserom rezané puzdro, môžete teraz spájkovať vodiče k NodeMCU. Spájkovanie je voliteľné, ale môže byť bezpečnejšie a menšie pre váš plášť. Tu sú niektoré časti laserom rezané, ktoré sme vyrobili.