Obsah:

Časovač studovny: 7 kroků
Časovač studovny: 7 kroků

Video: Časovač studovny: 7 kroků

Video: Časovač studovny: 7 kroků
Video: 7 funkcí, které musí Samsung uživatelé znát. 2024, Červenec
Anonim
Časovač studovny
Časovač studovny
Časovač studovny
Časovač studovny
Časovač studovny
Časovač studovny

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

Začněte stavět s prkénkem
Začněte stavět s prkénkem

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.

Doporučuje: