Talaan ng mga Nilalaman:
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-13 06:58
Mga tagubilin sa kung paano lumikha ng isang timer para sa isang silid ng pag-aaral.
Hakbang 1: Video ng Pakikipag-ugnay
drive.google.com/file/d/12z5zQR52AXILX2AGb3EplfbmZWANZiCl/view?usp=drivesdk
Hakbang 2: Paglalahad ng Suliranin
Kadalasan, ang mga silid sa pag-aaral ay palaging kinukuha. Nangyayari ito dahil nais ng mga tao na manatili sa silid nang mas matagal kaysa sa kailangan nila. Dinisenyo namin ang isang timer na nagbibigay-daan sa bawat tao ng isang kabuuang 2 oras at mga taong naghihintay ng kakayahang humiling ng silid na maging susunod na pangkat. Ang paggamit ng RGB sa Neopixels ay magpapahayag ng dami ng natitirang oras.
Hakbang 3: Pangkalahatang-ideya ng Paano Ito Gumagawa
Ang timer ay binubuo ng mga bahagi na hiwa ng laser cutter, 3 mga pindutan, 1 LED, 1 potentiometer.
Ang Neopixels at potentiometer ay naka-wire sa NodeMCU. Ang NodeMCU ay naka-program upang muling mabuhay kung gaano kalayo ang potensyomiter ay nabago upang baguhin ang dami ng mga LED na naiilawan sa paikot na Neopixel strip. Ititigil ng pindutan ng Kahilingan ang pagpapaandar ng pagpapaandar ng Start, Stop, at Itakda ang oras. Ang kulay ng mga LED sa timer sa loob ng silid ay ang parehong kulay ng LED na naiilawan sa gilid ng kahon. Ang neopixel sa gilid ng kahon ay kumakatawan sa pagpapakita sa lobby ng gusali upang malaman kung aling silid ang kukunin at kung gaano karaming oras ang natitira. Ang 2 LED ay inireseta para sa bawat silid, ang isang LED ay kumakatawan kung ang silid ay kinuha at ang iba pang pinangunahan ay salamin ang kulay ng mga LED sa timer (ang berde ay mas maraming oras, pagkatapos ay dilaw, pagkatapos ay pula para sa mas kaunting oras).
Hakbang 4: Listahan ng Mga Materyales at Mga Tool
-Clear Acrylic
-MicroUSB Cable
www.digikey.com/product-detail/en/stewart-…
-Breadboard
www.amazon.com/gp/product/B01EV6LJ7G/ref=o…
-Potentiometer
www.alliedelec.com/honeywell-380c32500/701…
-3 mga pindutan
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…
-Mga Resistor
www.digikey.com/product-detail/en/te-conne…
- Mga wire
www.digikey.com/product-detail/en/sparkfun…
-1 LED
www.mouser.com/ProductDetail/Cree-Inc/C512…
-Mainit na glue GUN
www.walmart.com/ip/AdTech-Hi-Temp-Mini-Hot…
-Malakas na Velcro Strips
www.amazon.com/VELCRO-Brand-90076-Fastener…
Hakbang 5: Simulang Bumuo Gamit ang Breadboard
A0 hanggang gitnang pin sa Potentiometer
Vin to Power sa singsing ng Neopixel
3v3 sa isang bahagi ng Potentiometer
Lahat ng mga bakuran sa Ground sa NodeMCU
D1 sa Humiling ng Button
D2 sa Humiling ng LED
D3 upang Simulan ang Button
D4 upang Itigil ang Button
D5 na resistor sa Neopixel Input on ring
D6 upang labanan ang Neopixel Input strip
Hakbang 6: Pagsisimula ng Code
Ito ang code para matiyak na ang iyong proyekto ay gumagana hanggang ngayon. Ang timer ay dapat na isang segundo lamang bawat LED sa Neopixel Ring. Kapag alam mong gumagana ito hanggang sa puntong ito, ang kailangan mo lang gawin ay baguhin ang oras kung ang mga pahayag sa ibaba sa iyong tinukoy na saklaw. Ilalagay ko ang '#Change time' sa bawat oras kung ang mga pahayag na kailangan mong baguhin para sa iyong pag-aayos ng oras.
Sinusubukan ang Code:
import utime
oras ng pag-import
mula sa machine import ADC
import machine
i-import ang 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 = makina. Pin (4, makina. 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.value (0)
def tglled (): # i-toggle ang 'pag-andar' na pag-andar ng LED
kung l1.value () == 0:
l1.value (1)
iba pa:
l1.value (0)
x = 0
b1temp1 = 0
b1temp2 = 0
t = 0
b2temp1 = 0
b2temp2 = 0
b3temp1 = 0
b3temp2 = 0
s = 0
habang Totoo:
# Ito ang pindutan na nagpapalipat-lipat sa 'hiling' na LED
b1temp2 = b1.value ()
kung b1temp1 at hindi b1temp2:
tglled ()
oras. tulog (0.05)
b1temp1 = b1temp2
# Ito ang grid
np2 [0] = np [11]
kung l1.value () == 1:
np2 [1] = (30, 0, 0)
iba pa:
np2 [1] = (0, 0, 30)
np2.write ()
# Dito natin pipiliin kung gaano karaming oras ang kailangan natin
kung t == 0:
para sa saklaw ko (-1, 12):
kung (l1.value () == 0):
kung (adc.read ()> = (85.34 * (i + 1))):
np = (0, 0, 0)
np [11] = (0, 0, 30)
s = (i + 1)
iba pa:
np = (0, 0, 30)
np.write ()
iba pa:
np = (0, 0, 0)
np.write ()
# Ito ang pindutan upang simulan ang timer
kung (l1.value () == 0) at (t == 0):
b2temp2 = b2.value ()
kung b2temp1 at hindi b2temp2:
x + = 1
t + = (s * 100)
oras. tulog (0.05)
b2temp1 = b2temp2
# Ang pindutan na ito ay nagtatapos sa timer
kung (l1.value () == 0):
b3temp2 = b3.value ()
kung b3temp1 at hindi b3temp2:
x = 0
t = 0
oras. tulog (0.05)
b3temp1 = b3temp2
# Ito ang timer
kung x> 0:
t + = 1
kung (t> 0) at (t <= 100): # Pagbabago ng oras
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 ()
kung (t> 100) at (t <= 200): # Pagbabago ng oras
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 ()
kung (t> 200) at (t <= 300): # Pagbabago ng oras
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 ()
kung (t> 300) at (t <= 400): # Pagbabago ng oras
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 ()
kung (t> 400) at (t <= 500): # Pagbabago ng oras
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 ()
kung (t> 500) at (t <= 600): # Pagbabago ng oras
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 ()
kung (t> 600) at (t <= 700): # Pagbabago ng oras
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 ()
kung (t> 700) at (t <= 800): # Pagbabago ng oras
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 ()
kung (t> 800) at (t <= 900): # Pagbabago ng oras
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 ()
kung (t> 900) at (t <= 1000): # Pagbabago ng oras
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 ()
kung (t> 1000) at (t <= 1100): # Pagbabago ng oras
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 ()
kung (t> 1100) at (t <= 1200): # Pagbabago ng oras
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 ()
kung t> = 1300: # Pagbabago ng oras
t = 0
x = 0
Hakbang 7: Pagtatapos ng Mga Touch
Ngayon, sa sandaling malayo ka na, dapat ay na-upload mo ang gumaganang code sa NodeMCU at lahat ng mga bahagi na na-wire sa breadboard. Kapag nasubukan mo na ang code at gupitin ang anumang mga piraso mo para sa panlabas, ibig sabihin, laser cut casing, maaari mo na ngayong maghinang ng mga wire sa NodeMCU. Ang paghihinang ay opsyonal ngunit maaaring gawin itong mas ligtas at mas maliit para sa iyong pambalot. Narito ang ilan sa mga bahagi ng laser cut na ginawa namin.