สารบัญ:
- ขั้นตอนที่ 1: วิดีโอโต้ตอบ
- ขั้นตอนที่ 2: คำชี้แจงปัญหา
- ขั้นตอนที่ 3: ภาพรวมวิธีการทำงาน
- ขั้นตอนที่ 4: รายการวัสดุและเครื่องมือ
- ขั้นตอนที่ 5: เริ่มสร้างด้วยเขียงหั่นขนม
- ขั้นตอนที่ 6: การเริ่มรหัส
- ขั้นตอนที่ 7: เสร็จสิ้นการสัมผัส
วีดีโอ: Study Room Timer: 7 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:06
คำแนะนำในการสร้างนาฬิกาจับเวลาสำหรับห้องอ่านหนังสือ
ขั้นตอนที่ 1: วิดีโอโต้ตอบ
drive.google.com/file/d/12z5zQR52AXILX2AGb3EplfbmZWANZiCl/view?usp=drivesdk
ขั้นตอนที่ 2: คำชี้แจงปัญหา
ส่วนใหญ่แล้ว ห้องอ่านหนังสือมักจะถูกยึดไว้เสมอ สิ่งนี้เกิดขึ้นเพราะคนชอบอยู่ในห้องนานเกินความจำเป็น เราได้ออกแบบตัวจับเวลาที่ช่วยให้แต่ละคนมีเวลารวม 2 ชั่วโมงและคนที่รอความสามารถในการขอห้องเป็นกลุ่มต่อไปได้ การใช้ RGB บน Neopixels จะแสดงจำนวนเวลาที่เหลือ
ขั้นตอนที่ 3: ภาพรวมวิธีการทำงาน
ตัวจับเวลาประกอบด้วยชิ้นส่วนที่ตัดด้วยเครื่องตัดเลเซอร์, ปุ่ม 3 ปุ่ม, ไฟ LED 1 ดวง, โพเทนชิออมิเตอร์ 1 อัน
Neopixels และโพเทนชิออมิเตอร์เชื่อมต่อกับ NodeMCU NodeMCU ได้รับการตั้งโปรแกรมให้ปรับระยะโพเทนชิออมิเตอร์ที่หมุนใหม่เพื่อเปลี่ยนปริมาณของ LED ที่ติดสว่างบนแถบนีโอพิกเซลแบบวงกลม ปุ่มขอหยุดการทำงานของฟังก์ชัน Start, Stop และ Set time สีของ LED บนตัวจับเวลาภายในห้องเป็นสีเดียวกับ LED ที่ติดสว่างที่ด้านข้างของกล่อง นีโอพิกเซลที่ด้านข้างกล่องแสดงถึงการแสดงผลในล็อบบี้ของอาคารเพื่อให้ทราบว่ามีคนไปห้องไหนและเหลือเวลาอีกเท่าใด แต่ละห้องมีไฟ LED กำหนดไว้ 2 ดวง ไฟ LED ดวงหนึ่งแสดงว่ามีคนถ่ายในห้องหรือไม่ และไฟ LED อีกดวงจะสะท้อนสีของ LED บนตัวจับเวลา (สีเขียวเป็นเวลามากกว่า สีเหลือง และสีแดงในเวลาที่น้อยลง)
ขั้นตอนที่ 4: รายการวัสดุและเครื่องมือ
-อะคริลิคใส
- สายไมโครยูเอสบี
www.digigiy.com/product-detail/en/stewart-…
-เขียงหั่นขนม
www.amazon.com/gp/product/B01EV6LJ7G/ref=o…
-โพเทนชิออมิเตอร์
www.alliedelec.com/honeywell-380c32500/701…
-3 ปุ่ม
www.digigiy.com/product-detail/en/te-conne…
-NodeMCU
www.amazon.com/gp/product/B07CB4P2XY/ref=o…
- แถบนีโอพิกเซล 2 แถบ
www.amazon.com/Lighting-Modules-NeoPixel-W…
-ตัวต้านทาน
www.digigiy.com/product-detail/en/te-conne…
- สายไฟ
www.digigiy.com/product-detail/en/sparkfun…
-1 LED
www.mouser.com/ProductDetail/Cree-Inc/C512…
-ปืนกาวร้อน
www.walmart.com/ip/AdTech-Hi-Temp-Mini-Hot…
-แถบเวลโครเหนียว
www.amazon.com/VELCRO-Brand-90076-Fastener…
ขั้นตอนที่ 5: เริ่มสร้างด้วยเขียงหั่นขนม
A0 ถึงพินกลางบนโพเทนชิออมิเตอร์
Vin เปิดเครื่องบนวงแหวน Neopixel
3v3 ไปด้านหนึ่งของโพเทนชิออมิเตอร์
กราวด์ทั้งหมดบน NodeMCU
D1 เพื่อขอปุ่ม
D2 เพื่อขอ LED
D3 เพื่อเริ่มปุ่ม
D4 เพื่อหยุดปุ่ม
D5 เพื่อต้านทานต่ออินพุต Neopixel บนวงแหวน
D6 ถึงตัวต้านทานต่อแถบอินพุต Neopixel
ขั้นตอนที่ 6: การเริ่มรหัส
นี่คือรหัสเพื่อให้แน่ใจว่าโปรเจ็กต์ของคุณใช้งานได้จนถึงตอนนี้ ตัวจับเวลาควรใช้เวลาเพียงไม่กี่วินาทีต่อ LED บนวงแหวน Neopixel เมื่อคุณรู้ว่ามันทำงานจนถึงจุดนี้ สิ่งที่คุณต้องทำคือเปลี่ยนเวลาหากข้อความด้านล่างเป็นช่วงที่คุณระบุ ฉันจะใส่ '#Change time' ในแต่ละครั้งหากข้อความที่คุณต้องการเปลี่ยนสำหรับการจัดสรรเวลาของคุณ
ลองใช้รหัส:
นำเข้ายูทิลิตี้
เวลานำเข้า
จากการนำเข้าเครื่อง ADC
เครื่องนำเข้า
นำเข้า neopixel
เอดีซี = เอดีซี(0)
พิน = machine. Pin (14, machine. Pin. OUT)
np = neopixel. NeoPixel (พิน 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.value(0)
def tglled(): # สลับฟังก์ชั่น LED 'ขอ'
ถ้า l1.value() == 0:
l1.value(1)
อื่น:
l1.value(0)
x = 0
b1temp1 = 0
b1temp2 = 0
เสื้อ = 0
b2temp1 = 0
b2temp2 = 0
b3temp1 = 0
b3temp2 = 0
s = 0
ในขณะที่จริง:
# นี่คือปุ่มที่สลับ 'คำขอ' LED
b1temp2 = b1.value()
ถ้า b1temp1 และไม่ใช่ b1temp2:
tglled()
เวลานอน (0.05)
b1temp1 = b1temp2
#นี่คือตาราง
np2[0] = np[11]
ถ้า l1.value() == 1:
np2 [1] = (30, 0, 0)
อื่น:
np2[1] = (0, 0, 30)
np2.write()
#นี่คือที่ที่เราเลือกเวลาที่ต้องการ
ถ้าเสื้อ == 0:
สำหรับฉันอยู่ในช่วง (-1, 12):
ถ้า (l1.value() == 0):
ถ้า (adc.read() >= (85.34 * (i+1))):
np = (0, 0, 0)
np[11] = (0, 0, 30)
s = (ผม + 1)
อื่น:
np = (0, 0, 30)
np.write()
อื่น:
np = (0, 0, 0)
np.write()
# นี่คือปุ่มเพื่อเริ่มจับเวลา
ถ้า (l1.value() == 0) และ (t == 0):
b2temp2 = b2.value()
ถ้า b2temp1 และไม่ใช่ b2temp2:
x += 1
เสื้อ += (s * 100)
เวลานอน (0.05)
b2temp1 = b2temp2
# ปุ่มนี้สิ้นสุดตัวจับเวลา
ถ้า (l1.value() == 0):
b3temp2 = b3.value()
ถ้า b3temp1 และไม่ใช่ b3temp2:
x = 0
เสื้อ = 0
เวลานอน (0.05)
b3temp1 = b3temp2
#นี่คือตัวจับเวลา
ถ้า x > 0:
เสื้อ += 1
ถ้า (t > 0) และ (t <= 100): #เปลี่ยนเวลา
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()
ถ้า (t > 100) และ (t <= 200): #เปลี่ยนเวลา
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()
ถ้า (t > 200) และ (t <= 300): #เปลี่ยนเวลา
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()
ถ้า (t > 300) และ (t <= 400): #เปลี่ยนเวลา
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()
ถ้า (t > 400) และ (t <= 500): #เปลี่ยนเวลา
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()
ถ้า (t > 500) และ (t <= 600): #เปลี่ยนเวลา
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()
ถ้า (t > 600) และ (t <= 700): #เปลี่ยนเวลา
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()
ถ้า (t > 700) และ (t <= 800): #เปลี่ยนเวลา
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()
ถ้า (t > 800) และ (t <= 900): #เปลี่ยนเวลา
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()
ถ้า (t > 900) และ (t <= 1000): #เปลี่ยนเวลา
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()
ถ้า (t > 1000) และ (t <= 1100): #เปลี่ยนเวลา
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()
ถ้า (t > 1100) และ (t <= 1200): #เปลี่ยนเวลา
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()
ถ้า t >= 1300: #เปลี่ยนเวลา
เสื้อ = 0
x = 0
ขั้นตอนที่ 7: เสร็จสิ้นการสัมผัส
เมื่อคุณมาไกลถึงขนาดนี้แล้ว คุณควรอัปโหลดรหัสการทำงานไปที่ NodeMCU และทุกชิ้นส่วนเชื่อมต่อกับเขียงหั่นขนม เมื่อคุณได้ลองใช้โค้ดและตัดชิ้นส่วนใดๆ ที่คุณมีสำหรับภายนอก เช่น ปลอกตัดด้วยเลเซอร์ ตอนนี้คุณสามารถบัดกรีสายไฟเข้ากับ NodeMCU ได้แล้ว การบัดกรีเป็นทางเลือก แต่อาจทำให้ปลอกของคุณปลอดภัยและเล็กลง นี่คือบางส่วนของชิ้นส่วนตัดด้วยเลเซอร์ที่เราผลิตขึ้น
แนะนำ:
MicroBit Room Occupancy Counter และ Controller: 4 ขั้นตอน
MicroBit Room Occupancy Counter and Controller: ในช่วงที่มีการระบาดใหญ่ วิธีหนึ่งในการลดการแพร่เชื้อไวรัสคือการเพิ่มระยะห่างทางกายภาพระหว่างผู้คน ในห้องหรือร้านค้า การรู้ว่ามีคนกี่คนอยู่ในพื้นที่ปิดในเวลาใดก็ตาม โปรเจ็กต์นี้ใช้คู่ของ
Escape Room Arduino: 6 ขั้นตอน (พร้อมรูปภาพ)
Escape Room Arduino: โครงการนี้เกี่ยวกับการสร้างต้นแบบ Escape Room โดยใช้ส่วนประกอบทางอิเล็กทรอนิกส์ของ Arduino ซึ่งเป็นความรู้พื้นฐานของการเข้ารหัส ห้อง Escape Room นี้จะมี 5 ขั้นตอนที่ครอบคลุม:(แต่ละคนอาจแตกต่างกันไป)1. เซ็นเซอร์วัดความดัน - LED เมื่อคุณ
Room Thermostat - Arduino + Ethernet: 3 ขั้นตอน
Room Thermostat - Arduino + Ethernet: ในแง่ของฮาร์ดแวร์ โครงการใช้: Arduino Uno / Mega 2560 Ethernet shield Wiznet W5100 / โมดูล Ethernet Wiznet W5200-W5500 DS18B20 เซ็นเซอร์อุณหภูมิบนรีเลย์บัส OneWire SRD-5VDC-SL-C ที่ใช้สำหรับหม้อไอน้ำ เปลี่ยน
DIY ไฟ LED Strip-Study Table: 6 ขั้นตอน
DIY LED Strip-Study Table Illumination: สวัสดี Makers นี่เป็นโครงการแรกที่สอนได้ของฉัน แนวคิดพื้นฐานและแรงบันดาลใจเบื้องหลังการทำโปรเจ็กต์นี้คือการทำให้โต๊ะเรียนในหอพักที่น่าเบื่อและน่าเบื่อของฉันกลายเป็นโต๊ะที่สร้างแรงบันดาลใจและให้กำลังใจอย่างเต็มที่ ที่มาของแรงบันดาลใจพูดอย่างภาคภูมิใจว่า
Arduino Dust Study: 8 ขั้นตอน
Arduino Dust Study: การอยู่บนดาวอังคารจะเป็นอย่างไร? อากาศระบายอากาศได้หรือไม่? ปลอดภัยหรือไม่? มีฝุ่นมากแค่ไหน? พายุเข้าบ่อยแค่ไหน? เคยสงสัยคำตอบของคำถามเหล่านี้หรือไม่?