Obsah:

Časovač študovne: 7 krokov
Časovač študovne: 7 krokov

Video: Časovač študovne: 7 krokov

Video: Časovač študovne: 7 krokov
Video: Смарт-Часы Maimo Watch - Детальный ОБЗОР + ТЕСТЫ 2024, Júl
Anonim
Časovač do študovne
Časovač do študovne
Časovač do študovne
Časovač do študovne
Časovač do študovne
Časovač do študovne

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

Začnite stavať s Breadboard
Začnite stavať s Breadboard

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.

Odporúča: