ก่อนเข้าเรื่องก็จะมาเล่าเรื่อง alcohol ต่อนิดหน่อย เมื่อวานก็กินเบียร์ครั้งแรก 555 ไม่เข็ด ขมจริง วันก่อนก็พึ่งไปบาร์มา แล้วก็ดื่ม magarita ที่เป็น strawberry ผสมกับ tequila น่ะ
ว่าแล้วก็มาเข้าเรื่อง หลังจากที่ไม่ได้พูดถึงหุ่นยนต์มาซะนาน เพราะมันไม่ค่อยมีอะไรคืบหน้า เมื่อวานก็พึ่งใส่ line follower เข้าไป ด้วยความที่ว่าจะต้องทำให้หุ่นยนต์มันเดินตรงให้ได้ ก็เลยต้องมีส่วนนี้ และก็ wheel encoder ไม่ก็ใช้ IR sensor แทน โดยตั้งให้มันขนานกัน
line follower ที่ใช้ได้ในกรณีนี้ก็เพราะว่าที่พื้นมันมีเส้นตัดกันตลอดน่ะ และก็เป็นเส้นตรง ก็เลยน่าจะเป็นวิธีที่ดีกว่าใช้ IR sensor แถม sensor มันก็ยังแพงกว่าซะด้วย แล้ว line follower ทำยังไงเหรอ....
ก็สร้างขึ้นมาเป็น circuit ง่ายๆ ส่วนประกอบก็คือ

แค่นี้ก็ได้ black/white sensor มาตัวนึง ส่วน config ที่เราใช้สำหรับทำ line sensor ก็ใช้ black/white sensor 5 ตัว โดย 4 ตัวเรียงกันบนเส้นตรงอยู่แถวหลัง ส่วนอีกตัวอยู่ตรงกลางของแถวแรก
เวลาใช้ก็เขียน code จาก pseudocode ดังนี้ โดยกำหนดให้ตัวแถวหน้าคือ sensor0 แล้วแถวหลังคือ sensor1 ~ sensor4 เรียงจากซ้ายไปขวา ก็จะได้
if sensor0 is on
{
flag = 1;
}
if sensor 1 is on AND flag == 1
{
if sensor 3 is on AND sensor4 is off
slow down left wheel;
else if sensor2 is on AND sensor3 is off
slow down left wheel even more;
else if sensor2 is off
slow down left wheel a lot more;
flag = 0; //reset flag
}
if sensor 4 is on AND flag == 1
{
if sensor 2 is on AND sensor1 is off
slow down right wheel;
else if sensor3 is on AND sensor2 is off
slow down right wheel even more;
else if sensor3 is off
slow down right wheel a lot more;
flag = 0; //reset flag
}
อธิบายง่ายๆก็ถ้าไม่เห็น sensor0 ก็ไม่ต้องเช็ค sensor ตัวอื่น
เขียน code เสร็จแล้วก็ต้องไป set interrupt routine ต่อ โดยไปแก้ vector table ให้ refer ถึง function ที่เขียนข้างบนเวลาพบ interrupt signal บน pin อะไรก็ว่าไป
อ้างอิง
photoreflector datasheet
ว่าแล้วก็มาเข้าเรื่อง หลังจากที่ไม่ได้พูดถึงหุ่นยนต์มาซะนาน เพราะมันไม่ค่อยมีอะไรคืบหน้า เมื่อวานก็พึ่งใส่ line follower เข้าไป ด้วยความที่ว่าจะต้องทำให้หุ่นยนต์มันเดินตรงให้ได้ ก็เลยต้องมีส่วนนี้ และก็ wheel encoder ไม่ก็ใช้ IR sensor แทน โดยตั้งให้มันขนานกัน
line follower ที่ใช้ได้ในกรณีนี้ก็เพราะว่าที่พื้นมันมีเส้นตัดกันตลอดน่ะ และก็เป็นเส้นตรง ก็เลยน่าจะเป็นวิธีที่ดีกว่าใช้ IR sensor แถม sensor มันก็ยังแพงกว่าซะด้วย แล้ว line follower ทำยังไงเหรอ....
ก็สร้างขึ้นมาเป็น circuit ง่ายๆ ส่วนประกอบก็คือ
- IR photoreflector เอาไว้ใช้สำหรับ detect ว่าเป็นสีดำหรือสีขาว
- resistor
- capacitor

แค่นี้ก็ได้ black/white sensor มาตัวนึง ส่วน config ที่เราใช้สำหรับทำ line sensor ก็ใช้ black/white sensor 5 ตัว โดย 4 ตัวเรียงกันบนเส้นตรงอยู่แถวหลัง ส่วนอีกตัวอยู่ตรงกลางของแถวแรก
เวลาใช้ก็เขียน code จาก pseudocode ดังนี้ โดยกำหนดให้ตัวแถวหน้าคือ sensor0 แล้วแถวหลังคือ sensor1 ~ sensor4 เรียงจากซ้ายไปขวา ก็จะได้
if sensor0 is on
{
flag = 1;
}
if sensor 1 is on AND flag == 1
{
if sensor 3 is on AND sensor4 is off
slow down left wheel;
else if sensor2 is on AND sensor3 is off
slow down left wheel even more;
else if sensor2 is off
slow down left wheel a lot more;
flag = 0; //reset flag
}
if sensor 4 is on AND flag == 1
{
if sensor 2 is on AND sensor1 is off
slow down right wheel;
else if sensor3 is on AND sensor2 is off
slow down right wheel even more;
else if sensor3 is off
slow down right wheel a lot more;
flag = 0; //reset flag
}
อธิบายง่ายๆก็ถ้าไม่เห็น sensor0 ก็ไม่ต้องเช็ค sensor ตัวอื่น
เขียน code เสร็จแล้วก็ต้องไป set interrupt routine ต่อ โดยไปแก้ vector table ให้ refer ถึง function ที่เขียนข้างบนเวลาพบ interrupt signal บน pin อะไรก็ว่าไป
อ้างอิง
photoreflector datasheet