Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Bir iş otağı üçün bir taymer yaratmaq üçün təlimatlar.
Addım 1: Qarşılıqlı Video
drive.google.com/file/d/12z5zQR52AXILX2AGb3EplfbmZWANZiCl/view?usp=drivesdk
Addım 2: Problem Bildirimi
Çox vaxt iş otaqları həmişə alınır. Bu, insanların ehtiyac duyduqlarından daha uzun müddət otaqda qalmağı sevdikləri üçün baş verir. Hər bir insana cəmi 2 saat və otaqdan növbəti qrup olmaq istəyini gözləyən insanlara imkan verən bir taymer hazırladıq. Neopikseldə RGB istifadəsi qalan vaxtın miqdarını ifadə edəcək.
Addım 3: Bunun necə işlədiyinə ümumi baxış
Taymer lazer kəsici ilə kəsilmiş hissələrdən, 3 düymədən, 1 LEDdən, 1 potansiyometrdən ibarətdir.
Neopixels və potensiometr NodeMCU -ya bağlanır. NodeMCU, dairəvi Neopixel şeridində yanan LED -lərin miqdarını dəyişdirmək üçün potensiometrin nə qədər döndüyünü yenidən tənzimləmək üçün proqramlaşdırılmışdır. İstək düyməsi Başlat, Durdur və Vaxtı təyin et funksiyasını dayandırır. Otaqdakı taymerdəki LED -lərin rəngi, qutunun yan tərəfində yanan LED -lərin rəngidir. Qutunun yan tərəfindəki neopiksel, hansı otağın alındığını və nə qədər vaxt qaldığını bilmək üçün binanın foyesindəki ekranı təmsil edir. Hər bir otaq üçün 2 LED təyin olunur, bir LED otaq alındıqda, digər LED isə LED -lərin rəngini timerdə əks etdirir (yaşıl daha çox vaxt, sonra sarı, sonra qırmızı daha az vaxt).
Addım 4: Materialların və Alətlərin siyahısı
-Təmiz akril
-MicroUSB Kabel
www.digikey.com/product-detail/az/stewart-…
-Çörək lövhəsi
www.amazon.com/gp/product/B01EV6LJ7G/ref=o…
-Potansiyometr
www.alliedelec.com/honeywell-380c32500/701…
-3 düymə
www.digikey.com/product-detail/az/te-conne…
-NodeMCU
www.amazon.com/gp/product/B07CB4P2XY/ref=o…
- 2 Neopixel Şeridi
www.amazon.com/Lighting-Modules-NeoPixel-W…
-Rezistorlar
www.digikey.com/product-detail/az/te-conne…
- Tellər
www.digikey.com/product-detail/az/sparkfun…
-1 LED
www.mouser.com/ProductDetail/Cree-Inc/C512…
-İsti Yapışqan Tabancası
www.walmart.com/ip/AdTech-Hi-Temp-Mini-Hot…
-Yapışqan cırtdan zolaqlar
www.amazon.com/VELCRO-Brand-90076-Fastener…
Addım 5: Breadboard ilə qurmağa başlayın
A0 - Potensiometrdəki orta pin
Vin to Neopixel üzük açır
Potensiometrin bir tərəfinə 3v3
NodeMCU -da Zəmin üçün bütün əsaslar
D1 düyməsini tələb edin
LED tələb etmək üçün D2
Başlat Düyməsinə D3
D4 düyməsini dayandırın
Üzükdəki Neopixel Girişinə D5 rezistoru
D6 Neopixel Giriş zolağına müqavimət göstərir
Addım 6: Kodun işə salınması
Bu, layihənizin indiyə qədər işlədiyinə əmin olmaq üçün koddur. Taymer Neopixel Halqasındakı LED başına cəmi bir neçə saniyə olmalıdır. Bu nöqtəyə qədər işlədiyini bildikdən sonra, aşağıda göstərilən ifadələrin göstərilən aralığa keçmə müddətini dəyişdirmək kifayətdir. Vaxt ayırmanız üçün dəyişdirməyiniz lazım olan ifadələr olarsa, hər dəfə '#Zaman dəyişdir' yazacam.
Kodu sınamaq:
utime idxal edin
idxal vaxtı
maşın idxal ADC -dən
idxal maşını
idxal neopixel
adc = ADC (0)
pin = maşın. Pin (14, maşın. Pin. Çıxdı)
np = neopixel. NeoPixel (pin, 12)
pin2 = maşın. Pin (12, maşın. Pin. Çıxdı)
np2 = neopixel. NeoPixel (pin2, 8)
l1 = maşın. Pin (4, dəzgah
b1 = maşın. Pin (5, maşın. Pin. IN, maşın. Pin.
b3 = maşın. Pin (2, maşın. Pin. IN, maşın. Pin.
b2 = maşın. Pin (0, maşın. Pin. IN, maşın. Pin.
l1.dəyər (0)
def tglled (): # istək 'LED funksiyasını dəyişdirin
əgər l1.value () == 0:
l1.dəyər (1)
başqa:
l1.dəyər (0)
x = 0
b1temp1 = 0
b1temp2 = 0
t = 0
b2temp1 = 0
b2temp2 = 0
b3temp1 = 0
b3temp2 = 0
s = 0
Doğru halda:
# Bu 'istək' LEDini dəyişən düymədir
b1temp2 = b1.value ()
b1temp1 və b1temp2 deyilsə:
tglled ()
vaxt.yuxu (0.05)
b1temp1 = b1temp2
# Bu şəbəkə
np2 [0] = np [11]
əgər l1.value () == 1:
np2 [1] = (30, 0, 0)
başqa:
np2 [1] = (0, 0, 30)
np2.write ()
# Bura nə qədər vaxt lazım olduğunu seçirik
t == 0 olarsa:
i aralığında (-1, 12):
əgər (l1.value () == 0):
əgər (adc.read ()> = (85.34 * (i+1))):
np = (0, 0, 0)
np [11] = (0, 0, 30)
s = (i + 1)
başqa:
np = (0, 0, 30)
np.write ()
başqa:
np = (0, 0, 0)
np.write ()
# Taymeri işə salmaq üçün düymə budur
əgər (l1.value () == 0) və (t == 0):
b2temp2 = b2. dəyər ()
b2temp2 və b2temp2 deyilsə:
x += 1
t += (s * 100)
vaxt.yuxu (0.05)
b2temp1 = b2temp2
# Bu düymə taymeri bitir
əgər (l1.value () == 0):
b3temp2 = b3.value ()
b3temp1 və b3temp2 deyilsə:
x = 0
t = 0
vaxt.yuxu (0.05)
b3temp1 = b3temp2
# Bu zamanlayıcıdır
x> 0 olarsa:
t += 1
əgər (t> 0) və (t <= 100): #Zamanı dəyişdir
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 ()
əgər (t> 100) və (t <= 200): #Zamanı dəyişdir
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 ()
əgər (t> 200) və (t <= 300): #Zamanı dəyişdir
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 ()
əgər (t> 300) və (t <= 400): #Zamanı dəyişdir
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 ()
əgər (t> 400) və (t <= 500): #Zamanı dəyişdir
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 ()
əgər (t> 500) və (t <= 600): #Zamanı dəyişdir
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 ()
əgər (t> 600) və (t <= 700): #Zaman dəyişdir
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 ()
əgər (t> 700) və (t <= 800): #Zamanı dəyişdir
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 ()
əgər (t> 800) və (t <= 900): #Zamanı dəyişdir
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 ()
əgər (t> 900) və (t <= 1000): #Zamanı dəyişdir
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 ()
əgər (t> 1000) və (t <= 1100): #Zamanı dəyişdir
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 ()
əgər (t> 1100) və (t <= 1200): #Zamanı dəyişdir
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 ()
əgər t> = 1300: #Vaxtı dəyiş
t = 0
x = 0
Addım 7: Toxunuşları bitirmək
İndi bu yerə çatdıqdan sonra iş kodunu NodeMCU -ya yükləməli və bütün hissələri çörək taxtasına bağlamalısınız. Kodu sınadıqdan sonra xarici hissənizdə olan hər hansı bir hissəni, yəni lazer kəsmə korpusunu kəsdikdən sonra, telləri NodeMCU -ya lehimləyə bilərsiniz. Lehimləmə isteğe bağlıdır, ancaq korpusunuz üçün daha etibarlı və kiçik edə bilər. İşdə hazırladığımız lazer kəsmə hissələrindən bəziləri.