Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
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
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.