รหัส Arduino และตัวส่งสัญญาณวิดีโอและเซนเซอร์เลเซอร์
ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีใช้ตัวส่งและตัวรับเลเซอร์เพื่อตรวจจับลำแสงเลเซอร์และสั่งให้ออดหรือการทำงานอื่นทำงาน การตั้งค่านี้สามารถนำไปใช้ในงานต่างๆ ได้หลากหลาย รวมถึงระบบอัตโนมัติและหุ่นยนต์ เมื่อจบบทช่วยสอนนี้ คุณจะเข้าใจวิธีเชื่อมต่ออุปกรณ์และเขียนโค้ด Arduino เพื่อให้ทุกอย่างทำงานได้อย่างราบรื่น


ตลอดบทช่วยสอนนี้ เราจะพูดถึงส่วนประกอบหลักที่เกี่ยวข้องในโปรเจกต์นี้ รวมถึงวิธีเชื่อมต่ออย่างถูกต้องและวิธีที่โค้ดทำงาน ดูวิดีโอสำหรับคำอธิบายโดยละเอียด (ในวิดีโอที่ 02:00)
อธิบายฮาร์ดแวร์
ส่วนประกอบหลักของโปรเจกต์นี้ประกอบด้วยตัวส่งเลเซอร์ ตัวรับเลเซอร์ และออด ตัวส่งเลเซอร์จะปล่อยลำแสงออกมา ในขณะที่ตัวรับจะตรวจจับลำแสงนี้ เมื่อลำแสงถูกขัดจังหวะ ตัวรับจะส่งสัญญาณไปยัง Arduino ซึ่งสามารถสั่งให้ออดทำงานหรือดำเนินการอื่นได้
โมดูลตัวส่งทำงานที่ 5 โวลต์และมีตัวต้านทานเพื่อจำกัดกระแส โมดูลตัวรับสามารถเชื่อมต่อกับสายภายนอกเพื่อความยืดหยุ่นในการวางตำแหน่ง ออดยังใช้ไฟ 5 โวลต์และมีสองขา: ขาหนึ่งสำหรับขั้วบวกและอีกขาหนึ่งสำหรับกราวด์
รายละเอียดจาก Datasheet
| ผู้ผลิต | ไม่ทราบ |
|---|---|
| หมายเลขชิ้นส่วน | โมดูลตัวส่ง/ตัวรับเลเซอร์ |
| แรงดันไฟฟ้าที่ใช้งาน | 5 V |
| กระแสไฟฟ้าที่ใช้ | 5 mA โดยทั่วไป |
| ประเภทเอาต์พุต | สัญญาณดิจิทัล |
| ระยะการตรวจจับ | ขึ้นอยู่กับสภาพแวดล้อม |
| ขนาด | ตัวส่ง: 14.8 มม. x 18.8 มม., ตัวรับ: 15.4 มม. x 23.4 มม. |
- ตรวจสอบให้แน่ใจว่าแหล่งจ่ายไฟมีแรงดันไฟฟ้าที่เหมาะสมเพื่อป้องกันความเสียหาย
- ใช้สายไฟสั้นเพื่อลดการสูญเสียสัญญาณ
- จัดตำแหน่งตัวรับให้ตรงกับตัวส่งเพื่อการตรวจจับที่เชื่อถือได้
- ทดสอบการตั้งค่าในสภาพแสงที่แตกต่างกัน
- ระวังการสะท้อนที่อาจทำให้เกิดการตรวจจับผิดพลาด
คำแนะนำการเชื่อมต่อสายไฟ

ในการเชื่อมต่อตัวส่งเลเซอร์ ให้ต่อขากราวด์เข้ากับ GND ของ Arduino และขาบวกเข้ากับ 5V ของ Arduino ขากลางของตัวส่งไม่ถูกใช้งาน สำหรับตัวรับเลเซอร์ ให้ต่อขากราวด์เข้ากับ GND ขาบวกเข้ากับ 5V และขาเอาต์พุตเข้ากับขา 2 ของ Arduino ขาเอาต์พุตนี้จะอ่านสัญญาณจากตัวรับเลเซอร์
จากนั้นเชื่อมต่อออด: ขาที่ยาวกว่า (ขั้วบวก) ควรต่อเข้ากับขา 8 ของ Arduino ในขณะที่ขาที่สั้นกว่า (กราวด์) ต่อเข้ากับ GND ตรวจสอบให้แน่ใจว่าการเชื่อมต่อทั้งหมดแน่นหนาเพื่อหลีกเลี่ยงปัญหาที่เกิดขึ้นเป็นระยะระหว่างการทำงาน
ตัวอย่างโค้ดและคำอธิบาย
โค้ด Arduino เริ่มต้นด้วยการกำหนดขาสำหรับเซ็นเซอร์เลเซอร์และการทำงาน (ออด) โดยใช้ตัวระบุ DETECT และ ACTION โค้ดเริ่มต้นการสื่อสารแบบอนุกรมสำหรับการดีบักและตั้งค่าโหมดของขาในฟังก์ชัน setup()
#define DETECT 2 // ขา 2 สำหรับเซ็นเซอร์
#define ACTION 8 // ขา 8 สำหรับการทำงานบางอย่าง
void setup() {
Serial.begin(9600);
pinMode(DETECT, INPUT); // กำหนดขาตรวจจับเป็นอินพุต
pinMode(ACTION, OUTPUT); // กำหนดขา ACTION เป็นเอาต์พุต
}
ตัวอย่างโค้ดนี้แสดงวิธีกำหนดค่าขาสำหรับอินพุตและเอาต์พุต ซึ่งสำคัญต่อการทำงานของการตั้งค่านี้ คำสั่ง Serial.begin(9600) ช่วยให้สามารถสื่อสารกับซีเรียลมอนิเตอร์ได้ ทำให้เราเห็นข้อความดีบัก
ในฟังก์ชัน loop() โค้ดจะตรวจสอบสถานะของเซ็นเซอร์เลเซอร์อย่างต่อเนื่อง หากตรวจพบลำแสงเลเซอร์ โค้ดจะสั่งให้ออดทำงานและพิมพ์ "Detected!" ไปยังซีเรียลมอนิเตอร์
void loop() {
int detected = digitalRead(DETECT); // อ่านเซ็นเซอร์เลเซอร์
if(detected == HIGH) {
digitalWrite(ACTION, HIGH); // เปิดออด
Serial.println("Detected!");
} else {
digitalWrite(ACTION, LOW); // ปิดออด
Serial.println("No laser");
}
delay(200); // หน่วงเวลา 200 มิลลิวินาที
}
ตัวอย่างนี้แสดงตรรกะหลักของโปรแกรม ตัวแปร detected เก็บค่าจากฟังก์ชัน digitalRead() ซึ่งตรวจสอบว่ามีลำแสงเลเซอร์อยู่หรือไม่ ขึ้นอยู่กับสถานะ ออดจะถูกเปิดหรือปิด
การสาธิต / สิ่งที่คาดหวัง
เมื่อการตั้งค่าเชื่อมต่ออย่างถูกต้องและอัปโหลดโค้ดแล้ว ระบบควรทำงานตามที่คาดหวัง ซีเรียลมอนิเตอร์จะแสดง "Detected!" เมื่อลำแสงเลเซอร์ตกกระทบตัวรับ และออดจะดังขึ้น หากลำแสงถูกขัดจังหวะหรือไม่ถูกตรวจจับ จะแสดง "No laser" และออดจะปิด
สิ่งสำคัญคือต้องแน่ใจว่าลำแสงเลเซอร์จัดตำแหน่งตรงกับตัวรับอย่างถูกต้องเพื่อการทำงานที่เชื่อถือได้ ระวังการสะท้อนที่อาจทำให้เกิดการตรวจจับผิดพลาด ตามที่กล่าวไว้ในวิดีโอ (ในวิดีโอที่ 08:00)
ไทม์สแตมป์ในวิดีโอ
- 00:00 - บทนำ
- 02:00 - คำอธิบายฮาร์ดแวร์
- 04:30 - คำแนะนำการเชื่อมต่อสายไฟ
- 06:15 - คำอธิบายโค้ด
- 08:00 - การสาธิต
++
/*
* Laser Sensor module for Arduino
* Turns ON a buzzer or you can control a motor or servo or any other action.
* Watch the video https://youtu.be/h_y1y6eUvIY
* *
Laser Sensor module for Arduino
Written by Ahmad Shamshiri for Robojax.com
on Feb 02, 2018 at 18:24 in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purposes only.
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
/*
/*
*/
// Laser Sensor code for Robojax.com
#define DETECT 2 // pin 2 for sensor
#define ACTION 8 // pin 8 for action to do something
void setup() {
Serial.begin(9600);
Serial.println("Robojax.com Laser Module Test");
pinMode(DETECT, INPUT);//define detect input pin
pinMode(ACTION, OUTPUT);//define ACTION output pin
// Laser sensor code for Robojax.com
}
void loop() {
// Laser Sensor code for Robojax.com
int detected = digitalRead(DETECT);// read Laser sensor
if( detected == HIGH)
{
digitalWrite(ACTION,HIGH);// set the buzzer ON
Serial.println("Detected!");
}else{
digitalWrite(ACTION,LOW); // Set the buzzer OFF
Serial.println("No laser");
// Laser Sensor code for Robojax.com
}
delay(200);
}
สิ่งที่คุณอาจต้องการ
-
อเมซอน
แหล่งข้อมูลและเอกสารอ้างอิง
ยังไม่มีทรัพยากรเลย
ไฟล์📁
ไม่มีไฟล์ที่พร้อมใช้งาน