เนื่องจากชิว KruRo Nano มีชุดขับมอเตอร์ TB6612FNG
ใช้สายในการเชื่อมต่อ 6 เส้น เชื่อมกับบอร์ด Nano เพื่อขับ มอเตอร์ 2 ตัวโดยใช้ Pin ดังนี้
PWML ต่อกับ Pin 5 กำหนดความเร็วในรูปแบบ PWM
IN1L ต่อกับ Pin 4 กำหนดทิศทางของมอเตอร์
IN2L ต่อกับ Pin 7 กำหนดทิศทางของมอเตอร์
PWMR ต่อกับ Pin 6 กำหนดความเร็วในรูปแบบ PWM
IN1R ต่อกับ Pin 14 กำหนดทิศทางของมอเตอร์
IN2R ต่อกับ Pin 15 กำหนดทิศทางของมอเตอร์
Pin PWM สามารถส่งค่าออกได้ ตั้งแต่ 0 - 255
บอร์ด TKL NANO V2.1
มอเตอร์ หรือ เซตหุ่นยนต์เพื่อการศึกษา
ตรวจสอบการเชื่อมต่อมอเตอร์ให้ถูกต้อง โดยมีวิธีเช็คดังนี้
1. เสียบสายไปที่ช่องต่อมอเตอร์ ให้ มอเตอร์ซ้ายอยู่ที่ Motor1 มอเตอร์ขวาอยู่ที่ Motor2
2. ตรวจสอบทิศทางเบื้องต้นโดยการหมุนล้อไปข้างหน้า ถ้าไฟสถานะมอเตอร์ขึ้นเป็นสีเขียวแสดงว่าถูกต้อง หากขึ้นสีแดงให้สลับขั้วมอเตอร์แล้วทดสอบอีกครั้ง
#define PWML 5 // motor L
#define IN1L 4 //
#define IN2L 7 //
#define PWMR 6 // motor R
#define IN1R 15 //
#define IN2R 14 //
const int button = 8;
boolean sw=0;
void setup() {
// put your setup code here, to run once:
pinMode(PWML,OUTPUT);
pinMode(IN1L,OUTPUT);
pinMode(IN2L,OUTPUT);
pinMode(PWMR,OUTPUT);
pinMode(IN1R,OUTPUT);
pinMode(IN2R,OUTPUT);
pinMode(button, INPUT);
}
void loop() {
sw=digitalRead(button);
// put your main code here, to run repeatedly:
if (sw==1){
run(100,100);delay(1000);run(0,0);delay(100);
run(100,-100);delay(1000);run(0,0);delay(100);
run(100,100);delay(1000);run(0,0);delay(100);
run(100,-100);delay(1000);run(0,0);delay(100);
run(100,100);delay(1000);run(0,0);delay(100);
run(100,-100);delay(1000);run(0,0);delay(100);
run(100,100);delay(1000);run(0,0);delay(100);
run(100,-100);delay(1000);run(0,0);delay(100);
}
}
void run(int sl,int sr){
if(sr>255)
sr = 255;
else if(sr<-255)
sr = -255;
if(sl>255)
sl = 255;
else if(sl<-255)
sl = -255;
if(sl>0){
digitalWrite(IN1L,HIGH);
digitalWrite(IN2L,LOW);
analogWrite(PWML,sl);
}else if(sl<0){
digitalWrite(IN1L,LOW);
digitalWrite(IN2L,HIGH);
analogWrite(PWML,-sl);
}else{
digitalWrite(IN1L,HIGH);
digitalWrite(IN2L,HIGH);
}
if(sr>0){
digitalWrite(IN1R,HIGH);
digitalWrite(IN2R,LOW);
analogWrite(PWMR,sr);
}else if(sr<0){
digitalWrite(IN1R,LOW);
digitalWrite(IN2R,HIGH);
analogWrite(PWMR,-sr);
}else{
digitalWrite(IN1R,HIGH);
digitalWrite(IN2R,HIGH);
}
}
ให้ผู้เรียนเขียนโปรแกรมให้หุ่นยนต์เดินเป็นสีเหลี่ยมโดยใช้คำสั่ง Motor และ delay
หุ่นยนต์แต่ละตัวประกอบขึ้นจากมือ อาจมีความผิดพลาดของโครงสร้างทำให้มีปัญหาในการเดินไม่ตรง
ดังนั้นก่อนที่ผู้เรียนจะเขียนโปรแกรมควรทำการจูนหุ่นหยนต์เสียก่อน ด้วยการใช้ เพิ่มกำลังไฟให้มอเตอร์ที่วิ่งช้ากว่า เพื่อให้หุ่นยนต์เดินได้ตรงที่สุด