![เซนเซอร์ตรวจจับแสง Arduino พร้อม Buzzer และไฟ LED กะพริบ: 5 ขั้นตอน เซนเซอร์ตรวจจับแสง Arduino พร้อม Buzzer และไฟ LED กะพริบ: 5 ขั้นตอน](https://img.gwsigeps.com/img/img/blank.jpg)
สารบัญ:
- วัสดุ:
- ขั้นตอนที่ 1: ขั้นตอนที่ 1 - เดินสายไฟ LED ดวงแรก
- ขั้นตอนที่ 2: ขั้นตอนที่ 2 - เดินสายไฟ LED 4 ดวงอื่น ๆ
- ขั้นตอนที่ 3: ขั้นตอนที่ 3 - วางสาย Piezo
- ขั้นตอนที่ 4: ขั้นตอนที่ 4 - ต่อสายเซลล์ไฟฟ้าโซลาร์เซลล์
- ขั้นตอนที่ 5: ขั้นตอนที่ 5 - รหัส
นี่เป็นโปรเจคที่ยอดเยี่ยมที่ฉันสร้างขึ้นพร้อมกับลูกสาว ผลิตภัณฑ์ขั้นสุดท้ายคือความสนุกและให้สิ่งดีๆแก่คุณที่จะไปโรงเรียนเพื่อแสดงและบอกหรือแสดงญาติของคุณเมื่อพวกเขามาเยี่ยม!
มันเป็นการรวมกันของสามโครงการ Arduino ขนาดเล็กอื่น ๆ:
- เซ็นเซอร์วัดแสงโดยใช้ตาแมว
- การใช้สัญญาณเตือนแบบ piezo เพื่อสร้างเสียงบี๊บที่มีโทนเสียงและความเร็วและ
- กะพริบลำดับ LED ด้วยความเร็วที่เปลี่ยนแปลง
ผลิตภัณฑ์สุดท้ายคือเซ็นเซอร์ตรวจจับแสงที่มีชุดไฟ LED ที่ (a) กระพริบเร็วขึ้นด้วยแสงมากขึ้น (และช้าลงด้วยน้อยกว่า) และ (b) ส่งเสียงบี๊บเร็วขึ้นและที่ระยะห่างที่สูงขึ้นด้วยแสงมากขึ้น
เมื่อฉันสร้างแผนผัง Breadboard โดยใช้ Fritzing ฉันทำการปรับเปลี่ยนบางอย่างจาก Breadboard ดั้งเดิมเพื่อให้เห็นภาพสายไฟได้ชัดเจน
สิ่งที่คุณต้องการ:
- เขียงหั่นขนม
- Arduino Uno
- ไฟ LED 5x
- เซลล์ไฟฟ้าโซลาร์เซลล์
- ลำโพง Piezo
- ตัวต้านทาน 5x 220 โอห์ม (สำหรับ LED)
- ตัวต้านทาน 500 โอห์ม (สำหรับเซลล์ไฟฟ้าโซลาร์เซลล์)
- ตัวต้านทาน 100 โอห์ม (สำหรับ piezo buzzer)
เพื่อความซื่อสัตย์อย่างสมบูรณ์ฉันได้เลือกตัวต้านทานเหล่านั้นตามงานที่ทำโดยคนอื่นและโครงการอื่น ๆ ที่ฉันได้พบทางออนไลน์ ฉันแน่ใจว่ามีวิทยาศาสตร์และสูตรอยู่ด้านหลัง แต่คุณจะไม่พบมันในคำแนะนำนี้ขอโทษ
วัสดุ:
ขั้นตอนที่ 1: ขั้นตอนที่ 1 - เดินสายไฟ LED ดวงแรก
เริ่มต้นด้วยพื้นฐาน: เชื่อมต่อบอร์ดเข้ากับ GND และหมุด 5V และตรวจสอบให้แน่ใจว่าคุณมีจัมเปอร์ที่เชื่อมต่อรางบวกและลบเข้ากับด้านอื่น ๆ ของเขียงหั่นขนมทำให้พวกมัน "ทำงานอยู่" และช่วยคุณสร้างวงจรของคุณ มากเกินไป
เราต้องการสร้างลำดับของ LED เพื่อให้ทำงานได้อย่างอิสระ
ลองเชื่อมต่อ LED แรก ด้านบวกของ LED เชื่อมต่อกับขา 13 ด้านลบของ LED ที่คุณจะเชื่อมต่อกับตัวต้านทาน 220 โอห์มที่เชื่อมต่อกับ GND
ขั้นตอนที่ 2: ขั้นตอนที่ 2 - เดินสายไฟ LED 4 ดวงอื่น ๆ
ทีนี้ต่อสายไฟ LED อีกสี่ดวงตามแผนเดียวกัน: ด้านบวกต่อหมุด 12, 11, 10 และ 9 ตามลำดับและด้านลบต่อกราวด์โดยใช้ตัวต้านทาน 220 โอห์มแต่ละตัว
ไฟ LED พร้อมแล้ว: คุณจะสามารถควบคุมได้อย่างอิสระแต่ละอันผ่าน PIN แยกต่างหาก
ขั้นตอนที่ 3: ขั้นตอนที่ 3 - วางสาย Piezo
เราต้องการให้เซ็นเซอร์ส่งเสียงบี๊บ สำหรับสิ่งที่เราจะใช้ออดสัญญาณ Piezo ดังนั้นเราจะมาต่อกัน
ลวดลบเชื่อมต่อกับ GND และลวดบวกเชื่อมต่อแรกกับตัวต้านทาน 100 โอห์มกว่าหมุด 7 อย่างที่ฉันพูดก่อนหน้านี้ตัวต้านทาน 100 โอห์มแนะนำในโครงการอื่น ๆ ที่ฉันพบทางออนไลน์
ขั้นตอนที่ 4: ขั้นตอนที่ 4 - ต่อสายเซลล์ไฟฟ้าโซลาร์เซลล์
เซลล์ไฟฟ้าโซลาร์เซลล์เป็นตัวต้านทานอย่างง่ายที่จะนำไฟฟ้ามากขึ้นเมื่อสัมผัสกับแสง ดังนั้นด้วยศูนย์แสงจะบล็อกกระแส 100% และด้วยแสงเต็มจะช่วยให้กระแสไหลผ่าน วิธีที่ Arduino "อ่าน" นี่คือแสงศูนย์ส่งคืนค่า 0 และแสงเต็มคืนค่า 1024
เซลล์ไฟฟ้าโซลาร์เซลล์ไม่มีด้านลบและบวก ดังนั้นคุณจะวางสายด้านหนึ่งเข้ากับรางบวกของบอร์ด การเดินสายของด้านลบนั้นซับซ้อนเล็กน้อย: คุณจะเชื่อมต่อ ทั้งสอง (a) ไปยังรางเชิงลบโดยใช้ตัวต้านทาน 500 โอห์ม และ (b) ตรงไปยังพิน A0
วงจรพร้อม ลองดูรหัส
ขั้นตอนที่ 5: ขั้นตอนที่ 5 - รหัส
คุณจะพบรหัสเต็มด้านล่างเพื่อตัดและวาง มันมี // ความคิดเห็นเพื่อให้คุณสามารถเข้าใจสิ่งที่เกิดขึ้น
นี่คือสิ่งที่รหัสกำลังทำอยู่:
1 - เซ็นเซอร์อ่านระดับแสงโดยวัดจาก 0 ถึง 1024
2 - เรา "แปล" การอ่านนี้เป็นคำสั่งสำหรับเสียงสัญญาณเตือนเพื่อส่งเสียงบี๊บและไฟ LED จะกะพริบ
3 - สำหรับ LED เราแปลการอ่านของแสงเป็นมิลลิวินาทีของการกระพริบ แสงน้อยลงช้าก็กระพริบ ทำการทดสอบบางอย่างแม้ว่าแสงจะแรงไม่เกิน 700 หรือ 800 (ยากที่จะได้รับ 1024) ดังนั้นฉันจึงใช้ 700 เป็นระดับแสง "บน" ของฉัน เนื่องจากวิธีการที่ฟังก์ชั่นแผนที่ใช้งานได้หากแสงถึงสูงกว่า 700 มันจะเปลี่ยนเวลาที่กะพริบเป็นตัวเลขติดลบและสิ่งทั้งหมดก็ล่ม ดังนั้นฉันจึงสร้างกฎที่ Blink_Time ต้องไม่สั้นกว่า 20 มิลลิวินาที
4 - ไฟ LED ตามลำดับ (นั่นคือไฟแรกเปิดจากนั้นเมื่อปิดไฟถัดไปจะเปิด ฯลฯ)
5 - สำหรับเสียงกริ่งเราแปลการอ่านแสง (0 - 1024) เป็นเฮิร์ต (120 ถึง 1500) ดังนั้นแสงยิ่งมากเท่าไร
6 - เสียงสัญญาณเตือนจะดังขึ้นพร้อมกันกับ LED ตัวแรก, ตัวที่สามและตัวที่ห้า, (และสำหรับระยะเวลาการขาย) จากนั้นหยุดชั่วคราวเมื่อไฟ LED หยุดชั่วคราว สิ่งนี้จะสร้างเอฟเฟกต์การเต้นเป็นจังหวะแสงและเสียงในจังหวะเดียวกัน
นี่ไง. สนุกกับมัน!
รหัส:
// เซ็นเซอร์ตรวจจับแสงที่มีเสียงบี๊บและลำดับของหลอดไฟ led เหมือนสนามบิน
// ints สำหรับการกะพริบ
int Blink_Time = 20; // สร้างตัวแปรนี้เพื่อใช้สำหรับความยาวของการกะพริบและช่วงเวลา
int Light_Level = 0; // สร้างตัวแปรนี้เพื่อใช้สำหรับระดับแสง
int Light_Pin = A0; // pin 0 จะถูกใช้สำหรับตาแมว
// ints สำหรับออด
int Buzz_Tone = 300; // สร้างตัวแปรนี้สำหรับเสียงของออด
int Buzz_Tone_Max = 1500; // max herz สำหรับ buzz tone
int Buzz_Tone_Min = 120; // min herz เพื่อหา buzz tone
การตั้งค่าเป็นโมฆะ () {
pinMode (9, OUTPUT); // เริ่มต้นไพน์ 9 - 13 เช่นเดียวกับเอาท์พุทสำหรับไฟ led
pinMode (10, OUTPUT);
pinMode (11, OUTPUT);
pinMode (12, OUTPUT);
pinMode (13, OUTPUT);
pinMode (7, OUTPUT); // Set buzzer - pin 7 เป็นเอาท์พุทสำหรับออด
Serial.begin (9600); Serial.println ("พร้อม"); // เปิดพอร์ตอนุกรมที่ 9600 baud เพื่อตรวจสอบพฤติกรรมของตัวแปร
}
void loop () {
Light_Level = analogRead (Light_Pin); // อ่านระดับแสง
Blink_Time = map (Light_Level, 0, 700, 300, 1); // ตั้งเวลากะพริบตามระดับแสง (แสงมากขึ้นความเร็วมากขึ้น)
if (Blink_Time <= 20) {Blink_Time = 20;} // กำหนดขีด จำกัด ขั้นต่ำสำหรับเวลากะพริบ เนื่องจากระดับแสงสามารถสูงกว่า 700 ได้ฟังก์ชั่นการแมปอาจทำให้เวลากะพริบเป็นค่าลบในกรณีนี้โปรแกรมค้าง
// ตั้งค่าเสียงพึมพำตามระดับแสง (แสงมากขึ้น, เพิ่มเติม herz, ระยะห่างที่สูงขึ้น)
Buzz_Tone = แผนที่ (Light_Level, 0, 700, Buzz_Tone_Min, Buzz_Tone_Max);
// พิมพ์ตัวแปรทั้งหมดในมอนิเตอร์อนุกรมเพื่อให้คุณเห็นสิ่งที่เกิดขึ้น
Serial.print ("ระดับแสง =");
Serial.print (Light_Level);
Serial.print ("เวลากะพริบ =");
Serial.print (Blink_Time);
Serial.print ("Buzz_Tone =");
Serial.print (Buzz_Tone);
Serial.println ("");
// LED แรก
เสียง (7, Buzz_Tone); // เริ่มต้นการส่งเสียงบี๊ปพร้อมกันที่การเปิดครั้งแรกจะเปิดขึ้น
digitalWrite (9, สูง); // เปิดไฟ LED (HIGH คือระดับแรงดันไฟฟ้า)
ล่าช้า (Blink_Time); // รอ เวลากะพริบ
digitalWrite (9, ต่ำ); // ปิด LED โดยทำให้แรงดันไฟฟ้าต่ำ
(7) noTone; // หยุดเสียงบี๊บ
// LED ที่สอง
// ไม่มีเสียงบี๊บที่นี่, ฉันต้องการเสียงบี๊บเพียงสามครั้งเท่านั้นดังนั้นฉันจึงใส่มันในไฟ LED ดวงที่หนึ่ง, สามและห้า
digitalWrite (10, สูง); // เปิดไฟ LED (HIGH คือระดับแรงดันไฟฟ้า)
ล่าช้า (Blink_Time); // รอ เวลากะพริบ
digitalWrite (10, ต่ำ); // ปิด LED โดยทำให้แรงดันไฟฟ้าต่ำ
// LED สามดวง
เสียง (7, Buzz_Tone); // เสียงเตือน
digitalWrite (11, สูง); // เปิดไฟ LED (HIGH คือระดับแรงดันไฟฟ้า)
ล่าช้า (Blink_Time); // รอ เวลากะพริบ
digitalWrite (11, ต่ำ); // ปิด LED โดยทำให้แรงดันไฟฟ้าต่ำ
(7) noTone;
// LED สี่ดวง
digitalWrite (12, สูง); // เปิดไฟ LED (HIGH คือระดับแรงดันไฟฟ้า)
ล่าช้า (Blink_Time); // รอ เวลากะพริบ
digitalWrite (12, ต่ำ) // ปิด LED โดยทำให้แรงดันไฟฟ้าต่ำ
// LED ลำดับที่ห้า
เสียง (7, Buzz_Tone);
digitalWrite (13, สูง); // เปิดไฟ LED (HIGH คือระดับแรงดันไฟฟ้า)
ล่าช้า (Blink_Time); // รอ เวลากะพริบ
digitalWrite (13, ต่ำ); // ปิด LED โดยทำให้แรงดันไฟฟ้าต่ำ
(7) noTone;
ล่าช้า (5 * Blink_Time); // หยุดชั่วคราวระหว่างชุดไฟ LED กะพริบ + เสียงเตือน
}