ข้ามไปที่เนื้อหาหลัก

กลัวหาย (line follower two sensor)


/*
A simple line following program.
You will need 2 light sensors attached to inputs 1 and 3.
Place the bot on the test pad, with the wheels
on the start line facing forward.
Then start the program.
author: Jan-Klaas Kollhof
last changed by: $LastChangedBy$
last changed date: $Date$
revision: $Revision$
*/
#define LightThreshold 50
#define Fast 75
#define Slow 20
task main(){
SetSensorLight(IN_3);
SetSensorLight(IN_1);
//lets turn 90 deg left
RotateMotorEx(OUT_BC, Fast, 180,-100, true, false);
//now follow the line
OnFwd(OUT_BC, Fast);
while(1){
if(SENSOR_3 < LightThreshold){
//sensor 3 just detected a black line
//so lets go a bit slower on it's side
OnFwd(OUT_B, Fast);
OnFwd(OUT_C, Slow);
}else if (SENSOR_1 < LightThreshold){
//sensor 1 just detected a black line
//so lets go a bit slower on it's side
OnFwd(OUT_B, Slow);
OnFwd(OUT_C, Fast);
}else{
//either it is all black or all light
//lets just go forward
OnFwd(OUT_BC, Fast);
}
}
}
———————————————
/*
A simple line following program.
It works with the standard NXT bot.
Place the bot on the test pad, with the wheels
on the start line facing forward.
Then start the program.
author: Jan-Klaas Kollhof
last changed by: $LastChangedBy$
last changed date: $Date$
revision: $Revision$
*/
#define LightThreshold 50
#define Fast 75
#define Slow 30
task main(){
SetSensorLight(IN_3);
//lets turn 90 deg left
RotateMotorEx(OUT_BC, Fast, 180,-100, true, false);
//now follow the line
OnFwd(OUT_BC, Fast);
while(1){
if(Sensor(IN_3) > LightThreshold){
//we just went off of the black line
//so lets slow down on the right
OnFwd(OUT_B, Slow);
}else{
OnFwd(OUT_B, Fast);
}
}
}
———————————————
/*
A simple programm for avoiding
obstacles using the sonic sensor.
It works with the standard NXT bot.
author: Jan-Klaas Kollhof
last changed by: $LastChangedBy$
last changed date: $Date$
revision: $Revision$
*/
#define VeryClose 20
#define Close 40
#define Slow 30
#define Fast 70
task main(){
SetSensorLowspeed(IN_4);
while(1){
TextOut(0, LCD_LINE1, “sonic”, true);
NumOut(70, LCD_LINE1, SensorUS(IN_4));
int dist = SensorUS(IN_4);
if(dist < VeryClose){
//lets spin 45 deg in a random direction
if(Random(2) == 0){
RotateMotorEx(OUT_BC, Fast, 180, -100, true, false);
}else{
RotateMotorEx(OUT_BC, Fast, 180, 100, true, false);
}
}else{
OnFwd(OUT_BC, Fast);
}
Wait(100);
}
}
อ้างถึง http://jan.kollhof.net

โพสต์ยอดนิยมจากบล็อกนี้

หุ่นยนต์เคลื่อนที่ไปตามเส้นดำ

หุ่นยนต์และมนุษย์มีหลักการทำงานที่เหมือนกัน คือ หน่วยรับข้อมูลเข้า (Input Unit) หน่วยประมวลผล (Process Unit) และหน่วยแสดงผล (Output Unit) ดังนั้นการที่หุ่นยนต์จะเคลื่อนที่ไปให้ตรงเป้าหมาย หุ่นยนต์จะต้องมีอุปกรณ์ที่จะตรวจสอบตำแหน่งและส่งข้อมูลที่ได้ไปยังหน่วยประมวลผล เพื่อให้มอเตอร์ทำการแสดงผลโดยการไปยังเป้าหมายต่อไป อุปกรณ์พื้นฐานที่ใช้ในการตรวจสอบตำแหน่งนั้น คือ เซนเซอร์แสง (Light Sensor)

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

การเดินตามเส้นของหุ่นยนต์ โดยใช้เซนเซอร์ 1 ตัวมีวิธีการว่า เราจะต้องให้หุ่นยนต์ตรวจสอบเส้นดำเป็นช่วงๆ เพื่อไม่ให้หลุดจากเส้นดำที่กำหนด การตรวจสอบเส้นดำเป็นช่วงๆ มีวิธีการดังภาพ


วิธีการทำงานมีขั้นตอนดังนี้
1. เมื่อเซ็นเซอร์แสงวัดค่าแสงได้สีดำ หุ่นยนต์จะเลี้ยวออกออกจากเส้นดำ
2. เมื่อเซ็นเซอร์แสงวัดค่าแสงได้สีขาว (ไม่ใช่สีดำ) หุ่นยนต์เคลื่อนที่กลับไปหาเส้นดำ




ตัวอย่างโปรแกรม



เมื่อนำโปรแกรมไปใช้จริงจะต้อ…

การใช้เซนเซอร์แสงตรวจสอบเส้นดำ

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



          การรับรู้ของตามนุษย์ต่อสีเมื่อเปรียบเทียบกับเซนเซอร์แสง



          การแสดงค่าแสงของเซนเซอร์แสง สามารถทำได้โดยเปิด NXT Controller ไปที่เมนู View



          หากเลือก Reflected Light จะทำให้เซนเซอร์แสงฉายแสงสีแดงไปกระทบวัตถุและวัดแสงที่สะท้อนกลับมาเราสามารถใช้ในการตรวจสอบค่าของแสงที่สะท้อนจากวัตถุได้



          แต่ถ้าเลือกวิธีการวัดค่าแสงแบบ Ambient Light จะไม่มีการฉายแสงสีแดงออกมาจากเซนเซอร์แสง โดยเซนเซอร์แสงจะวัดแสงที่เกิดจากการสะท้อนแสงจากวัตถุโดยรอบเท่านั้น

          ค่าของแสงที่ได้จากการวัดของเซนเซอร์แสงจะเริ่มต้นตั้งแต่ 0% ซึ่งหมายถึงดำสนิทหรือมืด ถึง 100% ซึ่งหมายถึงสว่างมากหรือขาว โดยสามารถแสดงค่าของแสงได้ดังภาพ



วิธีการนำค่าแสงที่วัดได้ไปใช้ในการเขียนโปรแกรมให้หุ่นยนต์ตรวจสอบเส้นสีดำ มีดังนี้
ขั้นที่ 1 นำเซนเซอร์แสงที่ติดตั้งกับหุ่นยนต์…

ตราประจำโรงเรียนสิรินธร จังหวัดสุรินทร์ แบบโรงเรียนมาตรฐานสากล

ทำเสร็จนานแล้วครับ นำไปใช้ได้เลย @อนุญาต