Isi kandungan:
2025 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2025-01-23 15:01
Petunjuk mengenai cara membuat pemasa untuk bilik belajar.
Langkah 1: Video Interaksi
drive.google.com/file/d/12z5zQR52AXILX2AGb3EplfbmZWANZiCl/view?usp=drivesdk
Langkah 2: Penyataan Masalah
Selalunya, bilik belajar selalu diambil. Ini berlaku kerana orang suka tinggal di bilik lebih lama daripada yang mereka perlukan. Kami telah merancang pemasa yang membolehkan setiap orang berjumlah 2 jam dan orang yang menunggu kemampuan untuk meminta bilik menjadi kumpulan berikutnya. Penggunaan RGB pada Neopixels akan menyatakan jumlah masa yang tersisa.
Langkah 3: Gambaran Keseluruhan Cara Berfungsi
Pemasa terdiri daripada bahagian yang dipotong oleh pemotong laser, 3 butang, 1 LED, 1 potensiometer.
Neopixels dan potensiometer disambungkan ke NodeMCU. NodeMCU diprogramkan untuk mengatur kembali sejauh mana potensiometer dipusingkan untuk mengubah jumlah LED yang menyala pada jalur Neopixel bulat. Butang Permintaan menghentikan fungsi fungsi Mula, Berhenti, dan Tetapkan waktu. Warna LED pada pemasa di dalam bilik adalah warna yang sama dengan LED yang menyala di sisi kotak. Neopixel di sebelah kotak mewakili paparan di lobi bangunan untuk mengetahui ruangan mana yang diambil dan berapa banyak masa yang tersisa. 2 LED ditentukan untuk setiap bilik, satu LED menunjukkan jika ruangan diambil dan lampu LED lain mencerminkan warna LED pada pemasa (hijau lebih banyak masa, kemudian kuning, kemudian merah untuk waktu yang lebih sedikit).
Langkah 4: Senarai Bahan dan Alatan
-Akrilik Bersih
-Kabel MicroUSB
www.digikey.com/product-detail/en/stewart-…
- Papan roti
www.amazon.com/gp/product/B01EV6LJ7G/ref=o…
-Potentiometer
www.alliedelec.com/honeywell-380c32500/701…
-3 butang
www.digikey.com/product-detail/en/te-conne…
-NodeMCU
www.amazon.com/gp/product/B07CB4P2XY/ref=o…
- 2 Jalur Neopixel
www.amazon.com/Lighting-Modules-NeoPixel-W…
-Penyokong
www.digikey.com/product-detail/en/te-conne…
- Wayar
www.digikey.com/product-detail/en/sparkfun…
-1 LED
www.mouser.com/ProductDetail/Cree-Inc/C512…
-Got Gun Lekap
www.walmart.com/ip/AdTech-Hi-Temp-Mini-Hot…
- Jalur Velcro yang Lekas
www.amazon.com/VELCRO-Brand-90076-Fastener…
Langkah 5: Mula Membangun Dengan Breadboard
Pin A0 hingga tengah pada Potensiometer
Vin to Power pada cincin Neopixel
3v3 ke satu sisi Potentiometer
Semua alasan untuk mendarat di NodeMCU
D1 untuk Meminta Butang
D2 untuk Meminta LED
D3 untuk Mula Butang
D4 untuk Menghentikan Butang
D5 ke perintang ke Input Neopixel pada cincin
D6 ke perintang ke jalur Input Neopixel
Langkah 6: Memulakan Kod
Ini adalah kod untuk memastikan projek anda berfungsi setakat ini. Pemasa hanya boleh beberapa saat setiap LED pada Neopixel Ring. Sebaik sahaja anda tahu ia berfungsi sehingga tahap ini, yang perlu anda lakukan adalah menukar masa jika pernyataan di bawah ke julat yang anda tentukan. Saya akan meletakkan '#Change time' pada setiap masa jika pernyataan yang anda perlu ubah untuk peruntukan masa anda.
Mencuba Kod:
import utime
masa import
dari mesin import ADC
mesin import
import neopixel
adc = ADC (0)
pin = mesin. Pin (14, mesin. Pin. OUT)
np = neopixel. NeoPixel (pin, 12)
pin2 = mesin. Pin (12, mesin. Pin. OUT)
np2 = neopixel. NeoPixel (pin2, 8)
l1 = mesin. Pin (4, mesin. Pin. OUT)
b1 = mesin. Pin (5, mesin. Pin. IN, mesin. Pin. PULL_UP)
b3 = mesin. Pin (2, mesin. Pin. IN, mesin. Pin. PULL_UP)
b2 = mesin. Pin (0, mesin. Pin. IN, mesin. Pin. PULL_UP)
nilai1 (0)
def tglled (): # toggle 'permintaan' fungsi LED
jika l1.value () == 0:
nilai1 (1)
lain:
nilai1 (0)
x = 0
b1temp1 = 0
b1temp2 = 0
t = 0
b2temp1 = 0
b2temp2 = 0
b3temp1 = 0
b3temp2 = 0
s = 0
Walaupun Betul:
# Ini adalah butang yang menukar LED 'permintaan'
b1temp2 = b1. nilai ()
jika b1temp1 dan bukan b1temp2:
tergelincir ()
masa. tidur (0.05)
b1temp1 = b1temp2
# Ini adalah grid
np2 [0] = np [11]
jika l1.value () == 1:
np2 [1] = (30, 0, 0)
lain:
np2 [1] = (0, 0, 30)
np2.write ()
# Di sinilah kita memilih berapa banyak masa yang kita perlukan
jika t == 0:
untuk i dalam jarak (-1, 12):
jika (l1.value () == 0):
jika (adc.read ()> = (85.34 * (i + 1))):
np = (0, 0, 0)
np [11] = (0, 0, 30)
s = (i + 1)
lain:
np = (0, 0, 30)
np.write ()
lain:
np = (0, 0, 0)
np.write ()
# Ini adalah butang untuk memulakan pemasa
jika (l1.value () == 0) dan (t == 0):
b2temp2 = b2.nilai ()
jika b2temp1 dan bukan b2temp2:
x + = 1
t + = (s * 100)
masa. tidur (0.05)
b2temp1 = b2temp2
# Butang ini menamatkan pemasa
jika (l1.value () == 0):
b3temp2 = b3. nilai ()
jika b3temp1 dan bukan b3temp2:
x = 0
t = 0
masa. tidur (0.05)
b3temp1 = b3temp2
# Ini adalah pemasa
jika x> 0:
t + = 1
jika (t> 0) dan (t <= 100): #Tukar masa
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 ()
jika (t> 100) dan (t <= 200): #Tukar masa
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 ()
jika (t> 200) dan (t <= 300): #Tukar masa
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 ()
jika (t> 300) dan (t <= 400): #Tukar masa
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 ()
jika (t> 400) dan (t <= 500): #Tukar masa
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 ()
jika (t> 500) dan (t <= 600): #Tukar masa
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 ()
jika (t> 600) dan (t <= 700): #Tukar masa
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 ()
jika (t> 700) dan (t <= 800): #Tukar masa
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 ()
jika (t> 800) dan (t <= 900): #Tukar masa
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 ()
jika (t> 900) dan (t <= 1000): #Tukar masa
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 ()
jika (t> 1000) dan (t <= 1100): #Tukar masa
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 ()
jika (t> 1100) dan (t <= 1200): #Tukar masa
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 ()
jika t> = 1300: #Tukar masa
t = 0
x = 0
Langkah 7: Menyentuh Sentuhan
Sekarang, setelah anda berada sejauh ini, anda harus memuat naik kod kerja ke NodeMCU dan semua bahagiannya disambungkan ke papan roti. Sebaik sahaja anda mencuba kod tersebut dan memotong kepingan yang anda ada untuk bahagian luar, iaitu selongsong potong laser, kini anda boleh menyisipkan wayar ke NodeMCU. Pematerian adalah pilihan tetapi mungkin menjadikannya lebih selamat dan lebih kecil untuk selongsong anda. Berikut adalah beberapa bahagian potongan laser yang kami buat.
Disyorkan:
Penjejak Bilik Rehat Bilik Darjah Makey Makey: 5 Langkah
Penjejak Bilik Tidur Makey Makey: Adakah anda pernah sibuk di kelas anda dan kehilangan pelajar yang mana (atau jika lebih dari satu) telah pergi ke tandas? Saya mengajar Sains Komputer Sekolah Menengah, dan mendapati bahawa pelajar sering cuba meninggalkan kelas untuk " menggunakan tandas "
Mikrokontroler AVR. LED Flasher Menggunakan Pemasa. Gangguan Pemasa. Mod CTC Pemasa: 6 Langkah
Mikrokontroler AVR. LED Flasher Menggunakan Pemasa. Gangguan Pemasa. Mod CTC Pemasa: Halo semua! Pemasa adalah konsep penting dalam bidang elektronik. Setiap komponen elektronik berfungsi berdasarkan jangka masa. Pangkalan masa ini membantu memastikan semua kerja disegerakkan. Semua mikrokontroler berfungsi pada frekuensi jam yang ditentukan
Belajar Melukis Lilin - Langkah demi Langkah: 6 Langkah
Belajar Menggambar Lilin - Langkah demi Langkah: Lilin ini memerlukan 10 minit untuk dilukis sekiranya anda mengikuti langkah saya dengan teliti. Nikmati
Pemasa NE555 - Mengkonfigurasi Pemasa NE555 dalam Konfigurasi Astable: 7 Langkah
Pemasa NE555 | Mengkonfigurasi Pemasa NE555 dalam Konfigurasi Astable: Pemasa NE555 adalah salah satu IC yang paling biasa digunakan di dunia elektronik. Ini dalam bentuk DIP 8, yang bermaksud bahawa ia mempunyai 8 pin
Sekatan Bilik: Platform untuk Belajar Navigasi ROS Dengan Roomba, Raspberry Pi dan RPLIDAR: 9 Langkah (dengan Gambar)
Roomblock: Platform untuk Belajar Navigasi ROS Dengan Roomba, Raspberry Pi dan RPLIDAR: Apa ini? &Quot; Roomblock " adalah platform robot yang terdiri daripada Roomba, Raspberry Pi 2, sensor laser (RPLIDAR) dan bateri mudah alih. Bingkai pemasangan boleh dibuat oleh pencetak 3D. Sistem navigasi ROS memungkinkan untuk membuat peta bilik dan menggunakan