จุดประสงค์การเรียนรู้
- สามารถใช้โปรแกรมArduino IDEสั่งงานมอเตอร์กระแสตรงผ่านบอร์ด Lutus Nano Bot ได้
อุปกรณ์ในการใช้งานเบื้องต้น
1. บอร์ด Lotus Nano Bot
2. มอเตอร์กระแสตรง จำนวน 2 ตัว
ต่อมอเตอร์เข้าไปที่ Lotus Nano Bot ทั้ง 2 ตัวดังภาพ
*** การเช็คทิศทางของมอเตอร์
- เมื่อหมุนมอเตอร์ไปข้างหน้าไฟสีเขียวจะติด
- เมื่อหมุนมอเตอร์ถอยหลังไฟสีแดงจะติด
หลักการทำงานของโค้ดมอเตอร์กระแสตรงใน 1 ช่องสัญญาณ
กรณีสถานการณ์การทำงาน :
- กดปุ่ม D2(ok) ให้มอเตอร์เดินหน้าด้วยกำลัง 100 เป็นเวลา 1 วินาที แล้วส่งเสียง
- มอเตอร์เลี้ยวขวาด้วยกำลัง 100 เป็นเวลา 1 วินาที หยุด แล้วส่งเสียง
- มอเตอร์ถอยหลังด้วยกำลัง 100 เป็นเวลา 1 วินาที หยุด แล้วส่งเสียง
- มอเตอร์เลี้ยวซ้ายด้วยกำลัง 100 เป็นเวลา 1 วินาที หยุด แล้วส่งเสียง
ตัวอย่างคำสั่งการควบคุมมอเตอร์กระแสตรง
Arduino IDE Code
///////////ตั้งค่าปุ่มกด///////////////////
int button = 2; /// กำหนดปุ่มกดสวิตซ์ขา 2
////////////ตั้งค่าพอร์ตมอเตอร์////////////////////
#define DR1 7 /// กำหนดสัญญาณดิจิตอลขวาที่ 1 พอร์ต 7
#define DR2 8 /// กำหนดสัญญาณดิจิตอลขวาที่ 2 พอร์ต 8
#define PWMR 6 /// กำหนดสัญญาณ PWM ขวาพอร์ต 6
/////////////////////////////////
#define DL1 9 // กำหนดสัญญาณดิจิตอลซ้ายที่ 1 พอร์ต 9
#define DL2 4 // กำหนดสัญญาณดิจิตอลซ้ายที่ 2 พอร์ต 4
#define PWML 5 /// กำหนดสัญญาณ PWM ซ้ายพอร์ต 5
void setup() {
Serial.begin(9600);
//////////////////////////////////////////////////
pinMode(2, INPUT); // ตั้งค่าขา 2 เป็น INPUT
////////กำหนดสัญญาณทุกขาเป็น OUTPUT ///////////////
pinMode(DL1, OUTPUT);
pinMode(DL2, OUTPUT);
pinMode(PWML, OUTPUT);
pinMode(DR1, OUTPUT);
pinMode(DR2, OUTPUT);
pinMode(PWMR, OUTPUT);
////////////////////////////
}
void loop() {
int sw = digitalRead(button);
if (sw == 0) {
tone(3, 1000, 500);
///////////////// เขียน Code ทดสอบที่นี่ /////////////
run(100, 100); delay(1000); run(0, 0);tone(3,1200,100);
run(100, 0); delay(1000); run(0, 0);tone(3,1200,100);
run(-100, -100); delay(1000); run(0, 0);tone(3,1200,100);
run(0, 100); delay(1000); run(0, 0);tone(3,1200,100);
}
///////////////////////////////////////////////
else {
run(0, 0);
}
Serial.println(sw);
}
////////////////////////////////////////
void run(int spl, int spr) // ประกาศฟังก์ชัน run(กำลังมอเตอร์ซ้าาย,กำลังมอเตอร์ขวา);
{
if (spl > 0)
{
digitalWrite(DL1, LOW);
digitalWrite(DL2, HIGH);
analogWrite(PWML, spl);
}
else if (spl < 0)
{
digitalWrite(DL1, HIGH);
digitalWrite(DL2, LOW);
analogWrite(PWML, -spl);
}
else
{
digitalWrite(DL1, LOW);
digitalWrite(DL2, LOW);
analogWrite(PWML, -255);
}
//////////////////////////////////////
if (spr > 0)
{
digitalWrite(DR1, LOW);
digitalWrite(DR2, HIGH);
analogWrite(PWMR, spr);
}
else if (spr < 0)
{
digitalWrite(DR1, HIGH);
digitalWrite(DR2, LOW);
analogWrite(PWMR, -spr);
}
else
{
digitalWrite(DR1, LOW);
digitalWrite(DR2, LOW);
analogWrite(PWMR, -255);
}
}
ตัวอย่างวีดีโอสอนการใช้งาน
กลุ่มคำสั่งการทำงานมอเตอร์ โดยใช้ Library LotusNanoBot.h
1 run(ความเร็วมอเตอร์ซ้าย,ความเร็วมอเตอร์ขวา); // ความเร็วสามารถใช้ได้สูงสุด 255 ต่ำสุด -255 (เครื่องหมาย - จะกลับทาง)
2 fd(ความเร็วของมอเตอร์ทั้งสองข้าง); //เดินหน้าความเร็วเท่ากัน 2 ล้อ ความเร็วตั้งแต่ 0-255
3 fd2(ความเร็วมอเตอร์ซ้าย,ความเร็วมอเตอร์ขวา); // ความเร็วตั้งแต่ 0-255 สามารถใช้ได้สูงสุด 255 ต่ำสุด -255 (เครื่องหมาย - จะกลับทาง)
4 bk(ความเร็วของมอเตอร์ทั้งสองข้าง); //ถอยหลังความเร็วเท่ากัน 2 ล้อ ความเร็วตั้งแต่ 0-255
5 ao(); //หยุดมอเตอร์ทั้ง 2 ล้อ
6 tl(ความเร็วมอเตอร์ฝั่งขวา); //เลี้ยวซ้ายล้อเดียว ความเร็วตั้งแต่ 0-255
7 tr(ความเร็วมอเตอร์ฝั่งซ้าย); //เลี้ยวขวาล้อเดียว ความเร็วตั้งแต่ 0-255
8 sl(ความเร็วมอเตอร์ฝั่งซ้ายและฝั่งขวา); //เลี้ยวขวา 2 ล้อ ล้อขวาเดินหน้า ล้อซ้ายถอยหลัง ความเร็วตั้งแต่ 0-255
9 sr(ความเร็วมอเตอร์ฝั่งซ้ายและฝั่งขวา);//เลี้ยวขวา 2 ล้อ ล้อซ้ายเดินหน้า ล้อขวาถอยหลัง ความเร็วตั้งแต่ 0-255
ตัวอย่างที่การใช้งานควบคุมมอเตอร์กระแสตรง ผ่านการใช้ Library LotusNanoBot.h
Arduno IDE Library LotusNanoBot.h
#include <LotusNanoBot.h>
void setup() {
}
void loop() {
ok();
run(100,100);delay(1000);run(0,0);snd(1200,100);
run(100,0);delay(1000);run(0,0);snd(1200,100);
run(-100,-100);delay(1000);run(0,0);snd(1200,100);
run(0,100);delay(1000);run(0,0);snd(1200,100);
}