Innehållsförteckning:

Studierumstimer: 7 steg
Studierumstimer: 7 steg

Video: Studierumstimer: 7 steg

Video: Studierumstimer: 7 steg
Video: Трактористы (комедия, реж. Иван Пырьев, 1939 г.) 2024, Juli
Anonim
Studierumstimer
Studierumstimer
Studierumstimer
Studierumstimer
Studierumstimer
Studierumstimer

Instruktioner om hur man skapar en timer för ett studierum.

Steg 1: Interaktionsvideo

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

Steg 2: Problemmeddelande

För det mesta används alltid studierum. Detta händer eftersom människor gillar att stanna i rummet mycket längre än de behöver. Vi har utformat en timer som tillåter varje person totalt 2 timmar och personer som väntar på möjligheten att begära att rummet ska vara nästa grupp i. Användningen av RGB på Neopixels kommer att uttrycka den tid som återstår.

Steg 3: Översikt över hur det fungerar

Timern består av delar som skärs av laserskäraren, 3 knappar, 1 LED, 1 potentiometer.

Neopixlarna och potentiometern är ansluten till NodeMCU. NodeMCU är programmerad att regonisera hur långt potentiometern vrids för att ändra mängden lysdioder som lyser på den cirkulära Neopixel -remsan. Knappen Begär stoppar funktionen för Start, Stopp och Ställ in tid. Färgen på lysdioderna på timern inne i rummet är samma färg som lysdioden tänd på lådans sida. Neopixeln på lådans sida representerar displayen i byggnadens lobby för att veta vilket rum som tas och hur mycket tid som är kvar. 2 lysdioder föreskrivs för varje rum, en lysdiod representerar om rummet tas och den andra lysdioden speglar färgen på lysdioderna på timern (grön är mer tid, sedan gul, sedan röd för kortare tid).

Steg 4: Lista över material och verktyg

-Klar akryl

-MicroUSB -kabel

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

-Bakbord

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

-Potentiometer

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

-3 knappar

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

-NodeMCU

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

- 2 Neopixel -remsor

www.amazon.com/Lighting-Modules-NeoPixel-W…

-Motstånd

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

- Trådar

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

-1 LED

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

-Lim pistol

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

-Klibbiga kardborreband

www.amazon.com/VELCRO-Brand-90076-Fastener…

Steg 5: Börja bygga med brödbrädan

Börja bygga med brödbrädan
Börja bygga med brödbrädan

A0 till mittstift på Potentiometer

Vin to Power on Neopixel ring

3v3 till ena sidan av potentiometern

Alla skäl att jorda på NodeMCU

Knapp för begäran D1

D2 för att begära LED

D3 till startknappen

D4 till stoppknappen

D5 till motstånd mot Neopixel Ingång på ring

D6 till motstånd mot Neopixel ingångslist

Steg 6: Starta koden

Detta är koden för att se till att ditt projekt fungerar hittills. Timern bör bara vara ett par sekunder per lysdiod på Neopixel -ringen. När du väl vet att det fungerar fram till denna punkt är allt du behöver göra att ändra tiden om uttalanden nedan till ditt angivna intervall. Jag kommer att sätta "#Ändra tid" på varje gång om uttalanden som du behöver ändra för din tidstilldelning.

Försöker koden:

import utime

importtid

från maskinimport ADC

importmaskin

importera 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.värde (0)

def tglled (): # växla 'begäran' LED -funktion

om l1.value () == 0:

l1.värde (1)

annan:

l1.värde (0)

x = 0

b1temp1 = 0

b1temp2 = 0

t = 0

b2temp1 = 0

b2temp2 = 0

b3temp1 = 0

b3temp2 = 0

s = 0

medan det är sant:

# Detta är knappen som växlar mellan "begäran" -lampan

b1temp2 = b1.value ()

om b1temp1 och inte b1temp2:

tglled ()

time.sleep (0,05)

b1temp1 = b1temp2

# Detta är rutnätet

np2 [0] = np [11]

om l1.value () == 1:

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

annan:

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

np2.write ()

# Här väljer vi hur mycket tid vi behöver

om t == 0:

för i inom intervallet (-1, 12):

om (l1.value () == 0):

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

np = (0, 0, 0)

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

s = (i + 1)

annan:

np = (0, 0, 30)

np.write ()

annan:

np = (0, 0, 0)

np.write ()

# Detta är knappen för att starta timern

om (l1.value () == 0) och (t == 0):

b2temp2 = b2.value ()

om b2temp1 och inte b2temp2:

x += 1

t += (s * 100)

time.sleep (0,05)

b2temp1 = b2temp2

# Denna knapp avslutar timern

om (l1.value () == 0):

b3temp2 = b3.value ()

om b3temp1 och inte b3temp2:

x = 0

t = 0

time.sleep (0,05)

b3temp1 = b3temp2

# Detta är timern

om x> 0:

t += 1

if (t> 0) och (t <= 100): #Ändra tid

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) och (t <= 200): #Ändra tid

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) och (t <= 300): #Ändra tid

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) och (t <= 400): #Ändra tid

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) och (t <= 500): #Ändra tid

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) och (t <= 600): #Ändra tid

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) och (t <= 700): #Ändra tid

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) och (t <= 800): #Ändra tid

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) och (t <= 900): #Ändra tid

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) och (t <= 1000): #Ändra tid

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) och (t <= 1100): #Ändra tid

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) och (t <= 1200): #Ändra tid

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

om t> = 1300: #Ändra tid

t = 0

x = 0

Steg 7: Finisher

Nu, när du är så långt, bör du ha arbetskoden uppladdad till NodeMCU och alla delar kopplade till brödbrädan. När du väl har provat koden och klippt alla bitar du har för utsidan, dvs. Lödningen är valfri men kan göra den säkrare och mindre för ditt hölje. Här är några av de laserskurna delarna som vi gjorde.

Rekommenderad: