เซนเซอร์ตรวจจับแสง Arduino พร้อม Buzzer และไฟ LED กะพริบ: 5 ขั้นตอน

เซนเซอร์ตรวจจับแสง Arduino พร้อม Buzzer และไฟ LED กะพริบ: 5 ขั้นตอน

สารบัญ:

Anonim

นี่เป็นโปรเจคที่ยอดเยี่ยมที่ฉันสร้างขึ้นพร้อมกับลูกสาว ผลิตภัณฑ์ขั้นสุดท้ายคือความสนุกและให้สิ่งดีๆแก่คุณที่จะไปโรงเรียนเพื่อแสดงและบอกหรือแสดงญาติของคุณเมื่อพวกเขามาเยี่ยม!

มันเป็นการรวมกันของสามโครงการ 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 กะพริบ + เสียงเตือน

}