เนื่องจากชิว LooKBas Nano มีชุดขับมอเตอร์ TB6612FNG
ใช้สายในการเชื่อมต่อ 6 เส้น เชื่อมกับบอร์ด Nano เพื่อขับ มอเตอร์ 2 ตัวโดยใช้ Pin ดังนี้
PWML ต่อกับ Pin 3 กำหนดความเร็วในรูปแบบ PWM
IN1L ต่อกับ Pin 4 กำหนดทิศทางของมอเตอร์
IN2L ต่อกับ Pin 6 กำหนดทิศทางของมอเตอร์
PWMR ต่อกับ Pin 5 กำหนดความเร็วในรูปแบบ PWM
IN1R ต่อกับ Pin 15 กำหนดทิศทางของมอเตอร์
IN2R ต่อกับ Pin14 กำหนดทิศทางของมอเตอร์
Pin PWM สามารถส่งค่าออกได้ ตั้งแต่ 0 - 255
ตรวจสอบการเชื่อมต่อมอเตอร์ให้ถูกต้อง โดยมีวิธีเช็คดังนี้
1. เสียบสายไปที่ช่องต่อมอเตอร์ ให้ มอเตอร์ซ้ายอยู่ที่ Motor1
2. ตรวจสอบทิศทางเบื้องต้นโดยการหมุนล้อไปข้างหน้า ถ้าไฟสถานะมอเตอร์ขึ้นเป็นสีเขียนแสดงว่าถูกต้อง หากขึ้นสีแดงให้สลับขั้วมอเตอร์แล้วทดสอบอีกครั้ง
#define PWML 3 // motor L#define IN1L 4 // #define IN2L 6 //#define PWMR 5 // motor R#define IN1R 15 // #define IN2R 14 //#define buttonPin 2void setup() {pinMode(buttonPin,INPUT);}void loop(){int sw = digitalRead(buttonPin); //กำหนดตัวแปร sw ให้มีค่าเท่ากับ ค่าที่อ่านได้จาก digital Pin 2 หรือ ปุ่ม OK บนบอร์ดif (sw==1){ Motor(100,100);delay(500); //มอเตอร์ ซ้ายและขวาหมุนไปข้างหน้า ความเร็ว 100 หน่วงเวลา 500 มิลลิวินาที Motor(100,-100);delay(500); //มอเตอร์ ซ้ายเดินหน้า มอเตอร์ขวา ถอยหลัง ความเร็ว 100 หน่วงเวลา 500 มิลลิวินาที Motor(100,100);delay(500); //มอเตอร์ ซ้ายและขวาหมุนไปข้างหน้า ความเร็ว 100 หน่วงเวลา 500 มิลลิวินาที Motor(100,-100);delay(500); //มอเตอร์ ซ้ายเดินหน้า มอเตอร์ขวา ถอยหลัง ความเร็ว 100 หน่วงเวลา 500 มิลลิวินาที Motor(100,100);delay(500); //มอเตอร์ ซ้ายและขวาหมุนไปข้างหน้า ความเร็ว 100 หน่วงเวลา 500 มิลลิวินาที Motor(100,-100);delay(500); //มอเตอร์ ซ้ายเดินหน้า มอเตอร์ขวา ถอยหลัง ความเร็ว 100 หน่วงเวลา 500 มิลลิวินาที Motor(100,100);delay(500); //มอเตอร์ ซ้ายและขวาหมุนไปข้างหน้า ความเร็ว 100 หน่วงเวลา 500 มิลลิวินาที Motor(100,-100);delay(500); //มอเตอร์ ซ้ายเดินหน้า มอเตอร์ขวา ถอยหลัง ความเร็ว 100 หน่วงเวลา 500 มิลลิวินาที Motor(0,0);} // มอเตอร์ซ้ายและขวาหยุด}void Motor(int sl,int sr){ //สร้างฟังก์ชั่นเพื่อใช้งานมอเตอร์ โดยรับพารามิเตอร์2 ชุด คือความเร็วมอเตอร์ซ้ายและขวา 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,LOW); digitalWrite(IN2R,LOW); } }ให้ผู้เรียนเขียนโปรแกรมให้หุ่นยนต์เดินเป็นสีเหลี่ยมโดยใช้คำสั่ง Motor และ delay
หุ่นยนต์แต่ละตัวประกอบขึ้นจากมือ อาจมีความผิดพลาดของโครงสร้างทำให้มีปัญหาในการเดินไม่ตรง
ดังนั้นก่อนที่ผู้เรียนจะเขียนโปรแกรมควรทำการจูนหุ่นหยนต์เสียก่อน ด้วยการใช้ เพิ่มกำลังไฟให้มอเตอร์ที่วิ่งช้ากว่า เพื่อให้หุ่นยนต์เดินได้ตรงที่สุด