จุดประสงค์การเรียนรู้
- สามารถใช้โปรแกรมArduino IDE สั่งงานเซอร์โวมอเตอร์ในบอร์ด Lotus Nano Botได้
อุปกรณ์ที่ใช้
1. บอร์ด Lotus Nano Bot
2. เซอร์โวมอเตอร์
ขั้นตอนการดำเนินงาน
- ต่อวงจรดังภาพ แล้วอัพโหลดโปรแกรมตัวอย่างจากArduino IDEไปสู่บอร์ดLotus Nano Bot
ตัวอย่าง4.1Aการเขียน Code ควบคุม Servo Motor ดังกรอบข้างล่าง
Arduino IDE Code
#include <Servo.h> // ผนวกไลบรารี่
int s1 = 10; // เปิดใช้งาน s1 ที่พอร์ต 10
Servo sv1; // ประกาศการใช้งาน sv1
void setup() {
sv1.attach(s1); // เรียกใช้งานเตรียมตอบสนอง sv1
}
void loop(){
sv1.write(0); // sv1 ทำงานที่ 0 องศา
delay(1000); //หน่วงเวลา 1 วินาที
sv1.write(30); // sv1 ทำงานที่ 30 องศา
delay(1000); //หน่วงเวลา 1 วินาที
sv1.write(60); // sv1 ทำงานที่ 60 องศา
delay(1000); //หน่วงเวลา 1 วินาที
}
กลุ่มคำสั่งการสั่งงานเซอร์โวมอเตอร์โดยการใช้ Library Lotus Nano Bot
1 sv1(องศาเซอร์โวมอเตอร์); // ใช้กับเซอร์โวมอเตอร์ตัวที่ 1
2 sv2(องศาเซอร์โวมอเตอร์); // ใช้กับเซอร์โวมอเตอร์ตัวที่ 2
3 sv3(องศาเซอร์โวมอเตอร์); // ใช้กับเซอร์โวมอเตอร์ตัวที่ 3
4 servo(หมายเลขพอร์ตเซอร์โว,องศาเซอร์โวมอเตอร์); // ใช้กับเซอร์โวมอเตอร์ตัวที่ 1-3
ตัวอย่างที่ 4.2B การใช้งานจอ OLED โดยการใช้ Library Lotus Nano Bot
Code Arduino IDE สำหรับLibrary LotusNanoBot
#include <LotusNanoBot.h>
void setup() {
}
void loop(){
sv1(0); // sv1 ทำงานที่ 0 องศา
delay(1000); //หน่วงเวลา 1 วินาที
sv1(30); // sv1 ทำงานที่ 30 องศา
delay(1000); //หน่วงเวลา 1 วินาที
sv1(60); // sv1 ทำงานที่ 60 องศา
delay(1000); //หน่วงเวลา 1 วินาที
}
วีดีโอตัวอย่างการทำงาน
Lab 4.2 Servo K-nob
- สำหรับการใช้งานเพื่อทำการตั้งค่าเซอร์โวชนิด 180 องศา ให้ใช้กับตัวต้านทานปรับค่าได้ (VR) สามารถเขียน Code ได้ตามตัวอย่างข้างล่างครับ
Code Arduino IDE
///// ผนวกไลบรารี่//////
#include <Servo.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 OLED(-1);
int s1 = 10; // เปิดใช้งาน s1 ที่พอร์ต 10
Servo sv1; // ประกาศการใช้งาน sv1
void setup() {
Serial.begin(9600); // เปิดการใช้งาน Serial monitor ที่ 9600
sv1.attach(s1); // เรียกใช้งานเตรียมตอบสนองเซอร์โว sv1
OLED.begin(SSD1306_SWITCHCAPVCC, 0x3C); // กำหนดแอดเดรสของพอร์ตจอเป็น 0x3C (for the 128x64)
}
void loop() {
int vr = analogRead(A7); // กำหนดตัวแปรจำนวนเต็มอ่านค่าอนาล็อกที่พอร์ต 7
int nob = map(vr, 0, 1023, 0, 180); // ทำการ map อัตราส่วนจากสัญญาณ analog 0-1023 เป็น 0-180
OLED.clearDisplay(); // เคลียร์หน้าจอ oled
OLED.setTextColor(WHITE, BLACK); //สีอักษรเป็นสีขาว ,พื้นหลังดำ
OLED.setCursor(0, 0); // เซตตำแหน่ง 0,0
OLED.setTextSize(2); // เซตขนาดอักษรมีขนาดเป็น 2
OLED.print("SV1 = "); // พิมพ์คำว่า SV1 =
OLED.println(nob); // นำค่า nob มาแสดงใน oled
OLED.display(); // เปิดฟังก์ชันแสดงผล
sv1.write(nob); // สั่งเซอร์โวมอเตอร์ให้หมุนไปตามค่าองศาที่ทำการ nob ไว้
delay(50); // หน่วงเวลา 0.05 วินาที
}
วอย่าง VDO การทำงาน