İçindekiler:

Çalışma Odası Zamanlayıcısı: 7 Adım
Çalışma Odası Zamanlayıcısı: 7 Adım

Video: Çalışma Odası Zamanlayıcısı: 7 Adım

Video: Çalışma Odası Zamanlayıcısı: 7 Adım
Video: 7 Saat Kesintisiz Birlikte Çalışalım 2024, Kasım
Anonim
Çalışma Odası Zamanlayıcısı
Çalışma Odası Zamanlayıcısı
Çalışma Odası Zamanlayıcısı
Çalışma Odası Zamanlayıcısı
Çalışma Odası Zamanlayıcısı
Çalışma Odası Zamanlayıcısı

Bir çalışma odası için bir zamanlayıcının nasıl oluşturulacağına ilişkin talimatlar.

1. Adım: Etkileşim Videosu

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

2. Adım: Sorun Bildirimi

Çoğu zaman, çalışma odaları her zaman alınır. Bunun nedeni, insanların odada ihtiyaç duyduklarından çok daha uzun süre kalmayı sevmeleridir. Her kişiye toplam 2 saat ve bekleyenlere odayı bir sonraki grup olarak talep etme olanağı tanıyan bir zamanlayıcı tasarladık. Neopiksellerde RGB kullanımı, kalan süreyi ifade edecektir.

Adım 3: Nasıl Çalıştığına Genel Bakış

Zamanlayıcı lazer kesici, 3 buton, 1 LED, 1 potansiyometre ile kesilen parçalardan oluşmaktadır.

Neopikseller ve potansiyometre, NodeMCU'ya bağlanmıştır. NodeMCU, dairesel Neopiksel şeridinde yanan LED'lerin miktarını değiştirmek için potansiyometrenin ne kadar döndürüldüğünü yeniden ayarlayacak şekilde programlanmıştır. İstek düğmesi Başlat, Durdur ve Saati ayarla işlevinin işlevini durdurur. Oda içindeki zamanlayıcıdaki LED'lerin rengi, kutunun yan tarafında yanan LED'in rengiyle aynıdır. Kutunun yan tarafındaki neopiksel, binanın lobisindeki hangi odanın tutulduğunu ve ne kadar zaman kaldığını gösteren ekranı temsil eder. Her oda için 2 LED reçete edilir, bir LED odanın alındığını gösterir ve diğer led zamanlayıcıdaki LED'lerin rengini yansıtır (yeşil daha fazla zaman, sonra sarı, sonra kırmızı daha kısa süre).

Adım 4: Malzeme ve Araç Listesi

-Temiz akrilik

-MicroUSB Kablosu

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

-Breadboard

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

-Potansiyometre

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

-3 düğme

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

-DüğümMCU

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

- 2 Neopiksel Şerit

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

-dirençler

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

- Teller

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

-1 LED

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

-Sıcak yapıştırıcı tabancası

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

-Yapışkan Velcro Şeritler

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

Adım 5: Breadboard ile İnşa Etmeye Başlayın

Breadboard ile İnşa Etmeye Başlayın
Breadboard ile İnşa Etmeye Başlayın

Potansiyometrede A0 ila orta pim

Neopiksel halkasını Vin'den Güçlendirmek

Potansiyometrenin bir tarafına 3v3

Tüm gerekçeler NodeMCU'da Topraklanacak

D1 Talep Düğmesi

LED Talep Etmek için D2

Başlat Düğmesine D3

D4 Durdurma Düğmesi

D5, halkada Neopiksel Girişine direnç

D6'dan Neopiksel Giriş şeridine direnç

Adım 6: Kodu Başlatma

Bu, projenizin şu ana kadar çalıştığından emin olmak için kullanılan koddur. Zamanlayıcı, Neopixel Ring'deki LED başına yalnızca birkaç saniye olmalıdır. Bu noktaya kadar çalıştığını öğrendikten sonra, yapmanız gereken tek şey, aşağıdaki ifadeleri belirtilen aralığa göre değiştirmektir. Zaman tahsisiniz için değiştirmeniz gereken if ifadelerinin her birine '#Zamanı değiştir' koyacağım.

Kodu Denemek:

utime'ı içe aktar

ithalat zamanı

makine ithalat ADC'sinden

ithalat makinesi

neopiksel içe aktar

adc = ADC(0)

pin = makine. Pin(14, makine. Pin. OUT)

np = neopixel. NeoPixel(pin, 12)

pin2 = makine. Pin(12, makine. Pin. OUT)

np2 = neopiksel. NeoPixel(pin2, 8)

l1 = makine. Pin(4, makine. Pin. OUT)

b1 = makine. Pin(5, makine. Pin. IN, makine. Pin. PULL_UP)

b3 = makine. Pin(2, makine. Pin. IN, makine. Pin. PULL_UP)

b2 = makine. Pin(0, makine. Pin. IN, makine. Pin. PULL_UP)

l1.değer(0)

def tglled(): # 'istek' LED işlevini değiştir

if l1.value() == 0:

l1.değer(1)

Başka:

l1.değer(0)

x = 0

b1temp1 = 0

b1temp2 = 0

t = 0

b2temp1 = 0

b2temp2 = 0

b3temp1 = 0

b3temp2 = 0

s = 0

Doğru iken:

# Bu, 'istek' LED'ini değiştiren düğmedir.

b1temp2 = b1.değer()

b1temp1 ve b1temp2 değilse:

tglled()

zaman.uyku(0.05)

b1temp1 = b1temp2

# Bu ızgara

np2[0] = np[11]

if l1.value() == 1:

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

Başka:

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

np2.write()

# Ne kadar zamana ihtiyacımız olduğunu burada seçiyoruz

t == 0 ise:

i aralığında (-1, 12):

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

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

np = (0, 0, 0)

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

s = (i + 1)

Başka:

np = (0, 0, 30)

np.yaz()

Başka:

np = (0, 0, 0)

np.yaz()

# Bu, zamanlayıcıyı başlatmak için kullanılan düğmedir.

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

b2temp2 = b2.değer()

b2temp1 ve b2temp2 değilse:

x += 1

t += (s * 100)

zaman.uyku(0.05)

b2temp1 = b2temp2

# Bu düğme zamanlayıcıyı sonlandırır

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

b3temp2 = b3.değer()

b3temp1 ve b3temp2 değilse:

x = 0

t = 0

zaman.uyku(0.05)

b3temp1 = b3temp2

# Bu zamanlayıcı

x > 0 ise:

t += 1

if (t > 0) ve (t <= 100): #Değiştirme zamanı

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

if (t > 100) ve (t <= 200): #Değiştirme zamanı

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

if (t > 200) ve (t <= 300): #Değiştirme zamanı

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

if (t > 300) ve (t <= 400): #Değiştirme zamanı

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

if (t > 400) ve (t <= 500): #Değiştirme zamanı

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

if (t > 500) ve (t <= 600): #Değiştirme zamanı

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

if (t > 600) ve (t <= 700): #Değiştirme zamanı

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

if (t > 700) ve (t <= 800): #Değiştirme zamanı

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

if (t > 800) ve (t <= 900): #Değiştirme zamanı

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

if (t > 900) ve (t <= 1000): #Değiştirme zamanı

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

if (t > 1000) ve (t <= 1100): #Değiştirme zamanı

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

if (t > 1100) ve (t <= 1200): #Değiştirme zamanı

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

if t >= 1300: #Zamanı değiştir

t = 0

x = 0

Adım 7: Son Dokunuşlar

Şimdi, buraya kadar geldiğinizde, çalışma kodunun NodeMCU'ya yüklenmesini ve tüm parçaların devre tahtasına bağlanmasını sağlamalısınız. Kodu denedikten ve dış kısım için, yani lazer kesim kasa için sahip olduğunuz tüm parçaları kestikten sonra, artık kabloları NodeMCU'ya lehimleyebilirsiniz. Lehimleme isteğe bağlıdır, ancak kasanız için daha güvenli ve daha küçük hale getirebilir. İşte yaptığımız lazer kesim parçalardan bazıları.

Önerilen: