Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Instruksjoner om hvordan du lager en timer for et studierom.
Trinn 1: Interaksjonsvideo
drive.google.com/file/d/12z5zQR52AXILX2AGb3EplfbmZWANZiCl/view?usp=drivesdk
Trinn 2: Problemerklæring
Mesteparten av tiden blir det alltid tatt studierom. Dette skjer fordi folk liker å bli i rommet mye lenger enn de trenger. Vi har designet en tidtaker som tillater hver person totalt 2 timer og folk som venter på muligheten til å be rommet om å være den neste gruppen i. Bruk av RGB på Neopixels vil uttrykke hvor lang tid det er igjen.
Trinn 3: Oversikt over hvordan det fungerer
Timeren består av deler kuttet av laserskjæreren, 3 knapper, 1 LED, 1 potensiometer.
Neopixel og potensiometer er koblet til NodeMCU. NodeMCU er programmert til å regonisere hvor langt potensiometeret er dreid for å endre mengden LED -er som lyser på den sirkulære Neopixel -stripen. Forespørselsknappen stopper funksjonen til Start, Stopp og Angi klokkeslett -funksjonen. Fargen på lysdiodene på timeren inne i rommet er den samme fargen som lysdioden lyser på siden av boksen. Neopikselen på siden av esken representerer skjermen i lobbyen til bygningen for å vite hvilket rom som er tatt og hvor lang tid det er igjen. 2 lysdioder er foreskrevet for hvert rom, en lysdiode representerer hvis rommet er tatt, og den andre lysdioden speiler fargen på lysdiodene på timeren (grønn er mer tid, deretter gul, deretter rød for kortere tid).
Trinn 4: Liste over materialer og verktøy
-Klar akryl
-MicroUSB -kabel
www.digikey.com/product-detail/en/stewart-…
-Brødbrett
www.amazon.com/gp/product/B01EV6LJ7G/ref=o…
-Potensiometer
www.alliedelec.com/honeywell-380c32500/701…
-3 knapper
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…
-Motstandere
www.digikey.com/product-detail/en/te-conne…
- Ledninger
www.digikey.com/product-detail/en/sparkfun…
-1 LED
www.mouser.com/ProductDetail/Cree-Inc/C512…
-Varm limpistol
www.walmart.com/ip/AdTech-Hi-Temp-Mini-Hot…
-Sticky borrelåsstrimler
www.amazon.com/VELCRO-Brand-90076-Fastener…
Trinn 5: Begynn å bygge med brødbrettet
A0 til midtpinne på potensiometer
Vin to Power on Neopixel ring
3v3 til den ene siden av potensiometeret
All grunn til bakken på NodeMCU
D1 til forespørselsknapp
D2 for å be om LED
D3 til Start -knapp
D4 til stoppknapp
D5 til motstand mot Neopixel Inngang på ring
D6 til motstand mot Neopixel Input strip
Trinn 6: Start koden
Dette er koden for å sikre at prosjektet ditt fungerer så langt. Timeren bør bare være et par sekunder per LED på Neopixel -ringen. Når du vet at det fungerer frem til dette punktet, er alt du trenger å gjøre å endre tiden hvis utsagnene nedenfor er til det angitte området. Jeg vil sette "#Endre tid" på hver gang hvis uttalelser du må endre for din tidstildeling.
Prøver koden:
import utime
importtid
fra maskinimport ADC
import maskin
importer neopiksel
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.verdi (0)
def tglled (): # veksle 'forespørsel' LED -funksjon
hvis l1.value () == 0:
l1.verdi (1)
ellers:
l1.verdi (0)
x = 0
b1temp1 = 0
b1temp2 = 0
t = 0
b2temp1 = 0
b2temp2 = 0
b3temp1 = 0
b3temp2 = 0
s = 0
mens det er sant:
# Dette er knappen som veksler "forespørsels" LED
b1temp2 = b1.value ()
hvis b1temp1 og ikke b1temp2:
tglled ()
time.sleep (0,05)
b1temp1 = b1temp2
# Dette er rutenettet
np2 [0] = np [11]
hvis l1.value () == 1:
np2 [1] = (30, 0, 0)
ellers:
np2 [1] = (0, 0, 30)
np2.write ()
# Det er her vi velger hvor mye tid vi trenger
hvis t == 0:
for i i området (-1, 12):
hvis (l1.value () == 0):
if (adc.read ()> = (85,34 * (i+1))):
np = (0, 0, 0)
np [11] = (0, 0, 30)
s = (i + 1)
ellers:
np = (0, 0, 30)
np.write ()
ellers:
np = (0, 0, 0)
np.write ()
# Dette er knappen for å starte timeren
hvis (l1.value () == 0) og (t == 0):
b2temp2 = b2.value ()
hvis b2temp1 og ikke b2temp2:
x += 1
t += (s * 100)
time.sleep (0,05)
b2temp1 = b2temp2
# Denne knappen avslutter timeren
hvis (l1.value () == 0):
b3temp2 = b3.value ()
hvis b3temp1 og ikke b3temp2:
x = 0
t = 0
time.sleep (0,05)
b3temp1 = b3temp2
# Dette er timeren
hvis x> 0:
t += 1
hvis (t> 0) og (t <= 100): #Endre 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 ()
hvis (t> 100) og (t <= 200): #Endre 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 ()
hvis (t> 200) og (t <= 300): #Endre 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 ()
hvis (t> 300) og (t <= 400): #Endre 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 ()
hvis (t> 400) og (t <= 500): #Endre 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 ()
hvis (t> 500) og (t <= 600): #Endre 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 ()
hvis (t> 600) og (t <= 700): #Endre 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 ()
hvis (t> 700) og (t <= 800): #Endre 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 ()
hvis (t> 800) og (t <= 900): #Endre 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 ()
hvis (t> 900) og (t <= 1000): #Endre 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 ()
hvis (t> 1000) og (t <= 1100): #Endre 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 ()
hvis (t> 1100) og (t <= 1200): #Endre 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 ()
hvis t> = 1300: #Endre tid
t = 0
x = 0
Trinn 7: Etterbehandling
Nå, når du er så langt, bør du ha arbeidskoden lastet opp til NodeMCU og alle delene er koblet til brødbrettet. Når du har prøvd koden og kuttet de bitene du har til utsiden, dvs. laserskåret foringsrør, kan du nå lodde ledningene til NodeMCU. Loddetinnet er valgfritt, men kan gjøre det sikrere og mindre for huset ditt. Her er noen av de laserskårne delene vi har laget.