Spisu treści:

Zegar w pokoju do nauki: 7 kroków
Zegar w pokoju do nauki: 7 kroków

Wideo: Zegar w pokoju do nauki: 7 kroków

Wideo: Zegar w pokoju do nauki: 7 kroków
Wideo: Obudziłam się półnaga, obok mnie leżał kolega z akademika | Pokój nr 7 2024, Lipiec
Anonim
Zegar w pokoju nauki
Zegar w pokoju nauki
Zegar w pokoju nauki
Zegar w pokoju nauki
Zegar w pokoju nauki
Zegar w pokoju nauki

Instrukcje tworzenia timera do gabinetu.

Krok 1: Wideo interakcji

drive.google.com/file/d/12z5zQR52AXILX2AGb3EplfbmZWANZiCl/view?usp=drivesdk

Krok 2: Stwierdzenie problemu

W większości przypadków pokoje do nauki są zawsze zajęte. Dzieje się tak, ponieważ ludzie lubią przebywać w pokoju znacznie dłużej niż potrzebują. Zaprojektowaliśmy timer, który pozwala każdej osobie łącznie na 2 godziny, a osobom oczekującym możliwość zgłoszenia pokoju do następnej grupy. Użycie RGB w Neopikselach wykaże ilość czasu, jaka pozostała.

Krok 3: Przegląd, jak to działa

Timer składa się z części wyciętych przez wycinarkę laserową, 3 przycisków, 1 diody LED, 1 potencjometru.

Neopiksele i potencjometr są podłączone do NodeMCU. NodeMCU jest zaprogramowane tak, aby regonizować, jak daleko potencjometr jest obrócony, aby zmienić ilość diod LED, które świecą na okrągłym pasku Neopixel. Przycisk Żądaj zatrzymuje działanie funkcji Start, Stop i Ustaw godzinę. Kolor diod na zegarze w pomieszczeniu jest taki sam, jak dioda zapalona z boku pudełka. Neopiksel z boku pudełka reprezentuje wyświetlacz w holu budynku, aby wiedzieć, które miejsce jest zajęte i ile czasu pozostało. Dla każdego pomieszczenia przypisane są 2 diody LED, jedna dioda wskazuje, czy pokój jest zajęty, a druga dioda odzwierciedla kolor diod na zegarze (zielona oznacza więcej czasu, następnie żółta, a następnie czerwona krócej).

Krok 4: Lista materiałów i narzędzi

-Czysty akryl

-Kabel MicroUSB

www.digikey.com/product-detail/en/stewart-…

-Płytka do krojenia chleba

www.amazon.com/gp/product/B01EV6LJ7G/ref=o…

-Potencjometr

www.alliedelec.com/honeywell-380c32500/701…

-3 przyciski

www.digikey.com/product-detail/en/te-conne…

-NodeMCU

www.amazon.com/gp/product/B07CB4P2XY/ref=o…

-2 paski neopikselowe

www.amazon.com/Moduły-oświetleniowe-NeoPixel-W…

-Rezystory

www.digikey.com/product-detail/en/te-conne…

- Przewody

www.digikey.com/product-detail/en/sparkfun…

-1 LED

www.mouser.com/ProductDetail/Cree-Inc/C512…

-Pistolet na gorący klej

www.walmart.com/ip/AdTech-Hi-Temp-Mini-Hot…

-Lepkie paski na rzepy

www.amazon.com/VELCRO-Brand-90076-Zapięcie…

Krok 5: Zacznij budować z deską do krojenia chleba

Zacznij budować z deską do krojenia chleba
Zacznij budować z deską do krojenia chleba

A0 do środkowego pinu na potencjometrze

Vin to Power na pierścieniu Neopixel

3v3 z jednej strony potencjometru

Wszystkie podstawy do uziemienia na NodeMCU

D1 do przycisku żądania

D2 do diody LED żądania

D3 do przycisku Start

D4 do przycisku zatrzymania

D5 do rezystora do wejścia Neopixel na pierścieniu

D6 do rezystora do paska wejściowego Neopixel

Krok 6: Uruchamianie kodu

To jest kod do upewnienia się, że Twój projekt działa do tej pory. Licznik powinien wynosić tylko kilka sekund na diodę LED na pierścieniu Neopixel. Kiedy już wiesz, że wszystko działa do tego momentu, wszystko, co musisz zrobić, to zmienić czas, jeśli poniższe oświadczenia na określony zakres. Umieszczę '#Change time' na każdym z oświadczeń, które musisz zmienić ze względu na przydzielony czas.

Wypróbowanie kodu:

importuj utime

czas importu

z maszyny import ADC

importuj maszynę

importuj neopiksel

adc = ADC(0)

pin = maszyna. Pin(14, maszyna. Pin. OUT)

np = neopiksel. NeoPixel(pin, 12)

pin2 = maszyna. Pin(12, maszyna. Pin. OUT)

np2 = neopiksel. NeoPixel(pin2, 8)

l1 = maszyna. Pin(4, maszyna. Pin. OUT)

b1 = maszyna. Pin(5, maszyna. Pin. IN, maszyna. Pin. PULL_UP)

b3 = maszyna. Pin(2, maszyna. Pin. IN, maszyna. Pin. PULL_UP)

b2 = maszyna. Pin(0, maszyna. Pin. IN, maszyna. Pin. PULL_UP)

l1.wartość(0)

def tglled(): # włącz funkcję LED „żądanie”

jeśli l1.wartość() == 0:

l1.wartość(1)

w przeciwnym razie:

l1.wartość(0)

x = 0

b1temp1 = 0

b1temp2 = 0

t = 0

b2temp1 = 0

b2temp2 = 0

b3temp1 = 0

b3temp2 = 0

s = 0

podczas gdy prawda:

# To jest przycisk, który przełącza diodę „żądanie”

b1temp2 = b1.wartość()

jeśli b1temp1 a nie b1temp2:

tglled()

czas.snu(0.05)

b1temp1 = b1temp2

# To jest siatka

np2[0] = np[11]

jeśli l1.wartość() == 1:

np2[1] = (30, 0, 0)

w przeciwnym razie:

np2[1] = (0, 0, 30)

np2.zapis()

# Tutaj wybieramy ile czasu potrzebujemy

jeśli t == 0:

dla i w zakresie (-1, 12):

jeśli (l1.wartość() == 0):

if (adc.read() >= (85,34 * (i+1))):

np = (0, 0, 0)

np[11] = (0, 0, 30)

s = (i + 1)

w przeciwnym razie:

np = (0, 0, 30)

np. zapis()

w przeciwnym razie:

np = (0, 0, 0)

np. zapis()

# To jest przycisk do uruchomienia timera

if (l1.value() == 0) i (t == 0):

b2temp2 = b2.wartość()

jeśli b2temp1 a nie b2temp2:

x += 1

t += (s * 100)

czas.snu(0.05)

b2temp1 = b2temp2

# Ten przycisk kończy odliczanie

jeśli (l1.wartość() == 0):

b3temp2 = b3.wartość()

jeśli b3temp1 a nie b3temp2:

x = 0

t = 0

czas.snu(0.05)

b3temp1 = b3temp2

# To jest minutnik

jeśli x > 0:

t += 1

jeśli (t > 0) i (t <= 100): #Czas zmiany

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. zapis()

jeśli (t > 100) i (t <= 200): #Czas zmiany

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. zapis()

jeśli (t > 200) i (t <= 300): #Czas zmiany

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. zapis()

jeśli (t > 300) i (t <= 400): #Czas zmiany

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. zapis()

jeśli (t > 400) i (t <= 500): #Czas zmiany

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. zapis()

jeśli (t > 500) i (t <= 600): #Czas zmiany

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. zapis()

jeśli (t > 600) i (t <= 700): #Czas zmiany

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. zapis()

jeśli (t > 700) i (t <= 800): #Czas zmiany

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. zapis()

jeśli (t > 800) i (t <= 900): #Czas zmiany

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. zapis()

jeśli (t > 900) i (t <= 1000): #Czas zmiany

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. zapis()

jeśli (t > 1000) i (t <= 1100): #Czas zmiany

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. zapis()

jeśli (t > 1100) i (t <= 1200): #Czas zmiany

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. zapis()

jeśli t >= 1300: #Czas zmiany

t = 0

x = 0

Krok 7: Wykończenie szlifów

Teraz, gdy jesteś już tak daleko, powinieneś mieć wgrany kod roboczy do NodeMCU i wszystkie części podłączone do płytki prototypowej. Po wypróbowaniu kodu i wycięciu dowolnych elementów, które posiadasz na zewnątrz, tj. Obudowę wycinaną laserowo, możesz teraz przylutować przewody do NodeMCU. Lutowanie jest opcjonalne, ale może sprawić, że będzie ono bezpieczniejsze i mniejsze dla Twojej obudowy. Oto niektóre z wyciętych laserowo części, które wykonaliśmy.

Zalecana: