วีดีโอ: Happy Hack Light Switch: 3 ขั้นตอน
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
ในช่วง 2 สัปดาห์ที่ผ่านมา เราได้ทำงานในโครงการของโรงเรียนที่ชื่อว่า "Happy hacking" ด้วยโปรเจ็กต์นี้ เราพยายามสร้าง "แฮ็กแห่งความสุข" สำหรับพื้นที่สาธารณะ "แฮ็คแฮ็ปปี้" คืออะไร? ในกรณีของเรา เราจำเป็นต้องสร้างสิ่งที่เป็นบวกโดยอิงจากความคับข้องใจ จำเป็นต้องใช้ Arduino สำหรับโครงการนี้ "แฮ็กแฮ็ก" ที่เราตัดสินใจทำคือการติดตั้งเพื่อพลิกสวิตช์ไฟจากระยะไกล
ขั้นตอนที่ 1: วัสดุ:
1x Arduino Uno
1x เขียงหั่นขนม
เซอร์โว 2x
1x เซ็นเซอร์อินฟราเรด
สาย 11x
1x ผู้ส่งอินฟราเรด (ลบทีวี)
เทป
ขั้นตอนที่ 2: วิธีเชื่อมต่อ:
ใส่เครื่องรับอินฟราเรด Arduino ลงในเขียงหั่นขนม สมมติว่าด้านหน้าของเครื่องรับเป็นด้านที่มีทรงกลมอยู่:
- ต่อสายหนึ่งเส้นจาก 'ขา' ซ้ายสุดกับพอร์ต Arduino uno '6'
- ต่อสายหนึ่งเส้นจาก 'ขา' ตรงกลางกับแถว '-' ในเขียงหั่นขนม
- ต่อสายหนึ่งเส้นจาก 'ขา' ขวาสุดไปยังแถว '+' ในเขียงหั่นขนม
ตรวจสอบให้แน่ใจว่าสายไฟอยู่ระหว่างแถว '-' ในเขียงหั่นขนมและพอร์ต 'กราวด์' บน Arduino uno และตรวจสอบให้แน่ใจว่าสายไฟอยู่ระหว่างแถว '+' ในเขียงหั่นขนมและพอร์ต '5V' บน Arduino uno
ตอนนี้เชื่อมต่อ 2 เซอร์โว
- ทั้งสองมีลวดจากลวดที่มืดที่สุดบนเซอร์โวไปยังแถว '-' บนเขียงหั่นขนม
- ทั้งสองมีลวดจากสายกลางบนเซอร์โวไปยังแถว '+' บนเขียงหั่นขนม
ตอนนี้สำหรับเซอร์โวตัวใดตัวหนึ่งให้เชื่อมต่อสายเซอร์โวที่เหลือกับพอร์ต Arduino uno '9' และเชื่อมต่อเซอร์โวตัวอื่นกับพอร์ต Arduino uno '10'
ขั้นตอนที่ 3: รหัส:
#รวม //
#รวม //
#รวม //
irrecv irrecv(6);
ผลลัพธ์ decode_results;
เซอร์โว theServo1;
เซอร์โว theServo2;
bool lightOn = เท็จ;
บูลดิสโก้ = เท็จ;
การตั้งค่าเป็นโมฆะ (){
theServo1.attach(10);
theServo2.attach(9);
โหมดพิน (6, อินพุต);
Serial.begin(9600);
irrecv.enableIRIn(); // เริ่มเครื่องรับ
irrecv.blink13(จริง);
}
วงเป็นโมฆะ (){
ถ้า (irrecv.decode (&ผลลัพธ์)) {
Serial.println(ผลลัพธ์.ค่า); // คุณได้รับผลลัพธ์ที่แตกต่างกันสำหรับทุกปุ่ม ดังนั้นตรวจสอบในมอนิเตอร์แบบอนุกรมว่าค่าปุ่มของคุณคืออะไร
if (results.value == 3772793023){ // นี่คือผลลัพธ์ของปุ่มเปิด/ปิดของเรา (3772793023) นี่อาจแตกต่างกับรีโมตของคุณ
lightOn = !lightOn;
ถ้า (เปิดไฟ){
theServo1.write(65);
theServo2.write(15);
}
ถ้า (!lightOn){
theServo1.write(95);
theServo2.write(95);
}
ล่าช้า (1000);
}
if (results.value == 3772839943){ // นี่คือผลลัพธ์ปุ่มข้อมูลของเรา (37728)
ดิสโก้ = !ดิสโก้;
ล่าช้า (1000);
}
Serial.println(ผลลัพธ์.ค่า);
irrecv.resume(); // รับค่าต่อไป
}
ถ้า (ดิสโก้) {
lightOn = !lightOn;
ถ้า (เปิดไฟ){
theServo1.write(65);
theServo2.write(15);
}
ถ้า (!lightOn){
theServo1.write(95);
theServo2.write(90);
}
ล่าช้า (2000);
}
}