Inhoudsopgave:

Studeerkamer Timer: 7 stappen
Studeerkamer Timer: 7 stappen

Video: Studeerkamer Timer: 7 stappen

Video: Studeerkamer Timer: 7 stappen
Video: Vlog #7 De U7 plashorloges 2024, November
Anonim
Studeerkamer Timer
Studeerkamer Timer
Studeerkamer Timer
Studeerkamer Timer
Studeerkamer Timer
Studeerkamer Timer

Instructies voor het maken van een timer voor een studeerkamer.

Stap 1: Interactievideo

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

Stap 2: Probleemstelling

Meestal zijn studiezalen altijd bezet. Dit gebeurt omdat mensen graag veel langer in de kamer blijven dan nodig is. We hebben een timer ontworpen waarmee elke persoon in totaal 2 uur en wachtende mensen de mogelijkheid heeft om de kamer aan te vragen als de volgende groep. Het gebruik van RGB op Neopixels geeft de resterende tijd weer.

Stap 3: Overzicht van hoe het werkt

De timer bestaat uit onderdelen gesneden door de lasercutter, 3 knoppen, 1 LED, 1 potentiometer.

De Neopixels en potentiometer zijn aangesloten op de NodeMCU. De NodeMCU is geprogrammeerd om te bepalen hoe ver de potentiometer wordt gedraaid om het aantal LED's dat op de ronde Neopixel-strip brandt, te wijzigen. De knop Verzoek stopt de functie van de functie Start, Stop en Tijd instellen. De kleur van de LED's op de timer in de kamer is dezelfde kleur als de LED die aan de zijkant van de doos brandt. De neopixel aan de zijkant van de doos vertegenwoordigt het display in de lobby van het gebouw om te weten welke kamer is ingenomen en hoeveel tijd er nog is. Er zijn 2 LED's voorgeschreven voor elke kamer, één LED geeft aan of de kamer bezet is en de andere LED weerspiegelt de kleur van de LED's op de timer (groen is meer tijd, dan geel, dan rood voor minder tijd).

Stap 4: Lijst met materialen en gereedschappen

-Helder acryl

-MicroUSB-kabel

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

-Broodplank

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

-Potentiometer

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

-3 knoppen

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

-NodeMCU

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

- 2 Neopixel-strips

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

-Weerstanden

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

- Draden

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

-1 LED

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

-Heet lijmpistool

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

-Kleverige klittenbandstrips

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

Stap 5: Begin met bouwen met de Breadboard

Begin met bouwen met de Breadboard
Begin met bouwen met de Breadboard

A0 naar middelste pin op Potentiometer

Vin om Neopixel-ring aan te zetten

3v3 aan één kant van Potentiometer

Alle gronden om te aarden op NodeMCU

D1 naar aanvraagknop

D2 om LED aan te vragen

D3 naar startknop

D4 naar stopknop

D5 naar weerstand naar Neopixel Input op ring

D6 naar weerstand naar Neopixel Input strip

Stap 6: De code starten

Dit is de code om ervoor te zorgen dat uw project tot nu toe werkt. De timer zou slechts een paar seconden per LED op de Neopixel Ring moeten zijn. Zodra u weet dat het tot nu toe werkt, hoeft u alleen maar de tijd als onderstaande instructies te wijzigen in het door u opgegeven bereik. Ik zal '#Change time' op elk van de time if-statements zetten die je moet veranderen voor je beschikbare tijd.

De code proberen:

import utime

import tijd

van machine-import ADC

importmachine

neopixel importeren

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.waarde(0)

def tglled(): # toggle 'verzoek' LED-functie

if l1.waarde() == 0:

l1.waarde(1)

anders:

l1.waarde(0)

x = 0

b1temp1 = 0

b1temp2 = 0

t = 0

b2temp1 = 0

b2temp2 = 0

b3temp1 = 0

b3temp2 = 0

s = 0

terwijl waar:

# Dit is de knop waarmee de 'verzoek'-LED wordt omgeschakeld

b1temp2 = b1.waarde()

indien b1temp1 en niet b1temp2:

tglled()

tijd.slaap(0.05)

b1temp1 = b1temp2

# Dit is het raster

np2[0] = np[11]

als l1.waarde() == 1:

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

anders:

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

np2.write()

# Hier selecteren we hoeveel tijd we nodig hebben

als t == 0:

voor i in bereik (-1, 12):

if (l1.waarde() == 0):

if (adc.read() >= (85.34 * (i+1))):

np = (0, 0, 0)

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

s = (ik + 1)

anders:

np = (0, 0, 30)

np.schrijf()

anders:

np = (0, 0, 0)

np.schrijf()

# Dit is de knop om de timer te starten

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

b2temp2 = b2.waarde()

indien b2temp1 en niet b2temp2:

x += 1

t += (s * 100)

tijd.slaap(0.05)

b2temp1 = b2temp2

# Deze knop beëindigt de timer

if (l1.waarde() == 0):

b3temp2 = b3.waarde()

indien b3temp1 en niet b3temp2:

x = 0

t = 0

tijd.slaap(0.05)

b3temp1 = b3temp2

# Dit is de timer

als x > 0:

t += 1

als (t > 0) en (t <= 100): #Wijzig tijd

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

if (t > 100) en (t <= 200): #Wijzig tijd

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

if (t > 200) en (t <= 300): #Wijzig tijd

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

if (t > 300) en (t <= 400): #Wijzig tijd

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

if (t > 400) en (t <= 500): #Wijzig tijd

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

als (t > 500) en (t <= 600): #Verander tijd

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

als (t > 600) en (t <= 700): #Wijzig tijd

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

if (t > 700) en (t <= 800): #Wijzig tijd

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

als (t > 800) en (t <= 900): #Verander tijd

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

als (t > 900) en (t <= 1000): #Wijzig tijd

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

if (t > 1000) en (t <= 1100): #Wijzig tijd

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

if (t > 1100) en (t <= 1200): #Wijzig tijd

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

als t >= 1300: #Wijzig tijd

t = 0

x = 0

Stap 7: finishing touch

Nu, als je eenmaal zo ver bent, zou je de werkcode moeten uploaden naar de NodeMCU en alle onderdelen op het breadboard hebben aangesloten. Nadat je de code hebt geprobeerd en alle stukken hebt gesneden die je voor de buitenkant hebt, d.w.z. lasergesneden behuizing, kun je nu de draden aan de NodeMCU solderen. Het solderen is optioneel, maar kan het veiliger en kleiner maken voor uw behuizing. Hier zijn enkele van de lasergesneden onderdelen die we hebben gemaakt.

Aanbevolen: