SlideShare a Scribd company logo
1 of 118
• แนะนำให้รู้จักกับ Arduino
• แกะกล่อง ตรวจสอบอุปกรณ์ในชุด
• กำรติดตั้งซอฟต์แวร์
• สร้ำงหุ่นยนต์ POP-BOT XT
• ขั้นตอนกำรเขียนโปรแกรมเพื่อควบคุมหุ่นยนต์
• พัฒนำหุ่นยนต์ให้ทำตำมภำรกิจต่ำงๆ
• กำรเคลื่อนที่เบื้องต้น
• กำรใช้เซนเซอร์สวิตช์
• หุ่นยนต์เคลื่อนที่ตำมเส้น
ขั้นตอนกำรอบรม
อินพุต เอำต์พุตประมวลผล
หลักกำรของระบบควบคุม
ต้นกำเนิด Arduino
www.arduino.cc • คู่มืออ้ำงอิงกำรใช้งำน
• ตัวอย่ำงฮำร์ดแวร์
• จุดกำเนิด IDEA
• ที่ดำวน์โหลดโปรแกรม
• ที่ซักถำมปัญหำ
ข้อมูลอ้ำงอิงสำหรับเขียนโปรแกรม
• ชุดคำสั่ง
• ไลบรำรี่
• ตัวแปร
• คำสงวน
ต้นกำเนิด POP-XT
โครงกำร Opensource จำก Arduino
POP-XT ของ inex
HARDWARE
POP-XT
Edit + Compile + Download
C/C++
คอมไพเลอร์ Opensource SOFTWARE
คุณสมบัติของ POP-XT
• ใช้ไมโครคอนโทรลเลอร์ ATMEGA32U4 ของ ATMEL
• ควำมละเอียดอ่ำนค่ำอะนำลอก 10 บิต (0-1023) 1024 ระดับ
• หน่วยควำมจำโปรแกรม 32 กิโลไบต์
• ทำงำนที่ควำมเร็ว 16 ล้ำนคำสั่งต่อวินำที
• เชื่อมต่อกับคอมพิวเตอร์ผ่ำนพอร์ต USB โดยตรงผ่ำนสำย Mini-B
• มีจอ LCD กรำฟิ กสีควำมละเอียด 128x160 พิกเซล
• ขับมอเตอร์ไฟตรงได้ 2 ตัว เซอร์โวมอเตอร์ได้ 3 ตัว
• ต่อเซนเซอร์อะนำลอกได้ 8 ช่อง
220mF
100mF
TB6612
ATMega32U4
100
ตำแหน่งกำรวำงอุปกรณ์ของ POP-XT
อุปกรณ์อินพุต
Switch (Digital)
Reflect (Analog)
Distance (Analog)
ปุ่ม OK (Digital)
knob (Analog)
อุปกรณ์เอำต์พุต
Servo Motor
DC Motor
ลำโพงเปียโซ
จอ GLCD
128x160 ZX-LED
ติดตั้งซอฟต์แวร์
ประกอบด้วย
• ซอฟต์แวร์ Arduino 1.0
• ตัวอย่ำง POP-BOT XT
• ไดรเวอร์ USB
• ไลบรำรี่ POP-BOT XT
Arduino1.0 POP-BOT XT Setup.exe
1 2
3 4
ติดตั้งซอฟต์แวร์POP-BOT ลงในเครื่องคอมพิวเตอร์พร้อมทั้งตัวติดตั้งไดรเวอร์USB
5
6
7
8
เปิ ดโปรแกรมจำก Start Menu
เริ่มต้นเชื่อมต่อกับคอมพิวเตอร์
1. ใส่ถ่านชาร์จหรือถ่านอัลคาไลน์ AA 4
ก้อน
2.เสียบสาย Mini USB
3.เปิดสวิตช์จ่ายไฟให้ POP-XT ก่อน
4.เสียบสาย USB เข้ากับคอมพิวเตอร์
027477001-4
กำรแก้ปัญหำในกรณีเกิดปัญหำกำรติดตั้ง windows 7
ให้เข้ำไปที่ Device Manager
กำรแก้ปัญหำในกรณีเกิดปัญหำกำรติดตั้ง windows 7
จะเจออุปกรณ์ที่มีเครื่องหมำย ! คลิกเมำส์ขวำเลือก Update Driver
กำรแก้ปัญหำในกรณีเกิดปัญหำกำรติดตั้ง windows 7
เลือกหัวข้อตำมรูป ชี้ไปตำแหน่งที่เก็บไดรเวอร์
เมื่อแจ้งเตือน เลือกตำมรูป กำรติดตั้งเสร็จสมบูรณ์
กำรติดตั้งไดรเวอร์กับ Windows XP
กำรติดตั้งไดรเวอร์กับ Windows XP
คอมพิวเตอร์พบฮำร์ดแวร์ใหม่
เลือกตำแหน่งที่เก็บไดรเวอร์
C:Arduinodrivers
กำรติดตั้งเสร็จสมบูรณ์
กำรติดตั้ง Arduino บนเครื่อง Mac OSX
แตกไฟล์ ZIP จะได้ ICON ดังรูป
ลำก ICON Arcuino รวมเข้ำไว้ที่
Aplication
เปิ ดโปรแกรม Arduino เลือกบอร์ดเป็น POP-XT
เมื่อเชื่อมต่อสำย USB เครื่อง Mac จะเห็นพอร์ตสื่อสำรชื่อ tty.usbmodem...
หน้ำตำของโปรแกรม Arduino
void setup()
{
}
void loop()
{
}
สำหรับกำหนดค่ำ เกิดขึ้นครั้งเดียว
โปรแกรมหลักทำงำนต่อเนื่อง
เลือกชื่อบอร์ดเป็น POP-XT
เลือกตำแหน่งพอร์ตอนุกรม
เปิ ดโปรแกรมตัวอย่ำง
เป็นโปรแกรมแสดงข้อควำมที่หน้ำจอ GLCD
คอมไพล์ (แปลโปรแกรมที่เขียนว่ำถูกไวยกรณ์หรือไม่)
กดปุ่มนี้ก็ได้
แถบสถำนะด้ำนล่ำงแสดงผลลัพธ์
ขนำดหน่วยควำมจำที่ใช้ ขนำดหน่วยควำมจำทั้งหมด
แจ้งว่ำคอมไพล์ผ่ำน
ต่อสำย USB กับคอมพิวเตอร์
upload โปรแกรมไปยังหุ่นยนต์
หรือกดปุ่มนี้ก็ได้
ผลลัพธ์
คำสั่ง glcd
แสดงข้อควำม
คุณสมบัติของจอภำพ
glcd แสดงข้อควำมที่จอ GLCD ได้ 21 ตัว 16 บรรทัด (size 1)
รูปแบบ
void glcd(unsigned char x, unsigned char y ,char *p,...)
พำรำมิเตอร์
x คือตำแหน่งบรรทัดมีค่ำตั้งแต่ 0-15
y คือตำแหน่งตัวอักษรมีค่ำตั้งแต่ 0-24
*p คือข้อควำมที่ต้องกำรนำมำแสดง
ค่ำพิเศษ
%d แสดงตัวเลขจำนวนเต็มในช่วง -32,768 ถึง 32,767
%l แสดงตัวเลขจำนวนเต็มในช่วง -2,147,483,648 ถึง 2,147,483,647
%f แสดงผลตัวเลขจำนวนจริง (แสดงทศนิยม 3 หลัก)
คุณสมบัติของจอภำพ
ไลบรำรี่ของ glcd
glcd
setTextColor
setTextBackgroundColor
glcdClear
glcdFillScreen
glcdMode
setTextSize
getTextColor
getTextBackgroundColor
glcdTextSize
glcdGetMode
glcdPixel
glcdRect
glcdFillRect
glcdLine
glcdCircle
glcdFillCircle
glcdArc
unsigned int color[]= {
GLCD_RED,
GLCD_GREEN,
GLCD_BLUE,
GLCD_YELLOW,
GLCD_BLACK,
GLCD_WHITE,
GLCD_SKY,
GLCD_MAGENTA
};
ตัวแปรที่ใช้สำหรับกำหนดสีพื้นฐำน
setTextColor(COLOR)
unsigned color[]={
GLCD_RED,
GLCD_GREEN,
GLCD_BLUE,
GLCD_YELLOW,
GLCD_BLACK,
GLCD_WHITE,
GLCD_SKY,
GLCD_MAGENTA
};
ตัวอย่ำง
#include <popxt.h>
void setup(){
setTextColor(GLCD_WHITE);
glcd(0,0,"Hello");
setTextColor(GLCD_GREEN);
glcd(1,0,"World");
}
void loop(){}
ค่ำสีตัวอักษร
setTextBackgroundColor(COLOR)
unsigned color[]={
GLCD_RED,
GLCD_GREEN,
GLCD_BLUE,
GLCD_YELLOW,
GLCD_BLACK,
GLCD_WHITE,
GLCD_SKY,
GLCD_MAGENTA
};
ตัวอย่ำง
#include <popxt.h>
void setup(){
setTextBackgroundColor(GLCD_RED);
setTextColor(GLCD_YELLOW);
glcd(0,0,"Hello World");
}
void loop(){}
ค่ำสีพื้นหลังตัวอักษร
glcdClear()
ตัวอย่ำง
#include <popxt.h>
void setup(){}
void loop(){
glcdClear();
sleep(500);
glcdFillScreen(color[0]);
sleep(500);
glcdFillScreen(color[1]);
sleep(500);
glcdFillScreen(color[2]);
sleep(500);
}
เคลียร์หน้ำจอ
glcdFillScreen(COLOR)
เทสีลงบนหน้ำจอทั้งหน้ำ
setTextSize ปรับขนำดตัวอักษร เป็นเท่ำตัว
ถ้ำไม่กำหนดขนำดเป็น 1 เท่ำ
ตัวอย่ำง
#include <popxt.h>
void setup(){}
void loop(){
setTextSize(1);
glcd(0,0,"1x");
setTextSize(2);
glcd(0,2,"2x");
setTextSize(3);
glcd(0,3,"3x");
setTextSize(4);
glcd(1,0,"4x");
setTextSize(5);
glcd(1,2,"5x");
}
หมุนจอ ขยำยขนำด
#include <popxt.h> // ผนวกไฟล์ไลบรารี่หลัก
int i,j;
void setup(){
glcdFillScreen(GLCD_WHITE); // กาหนดให้สีของพื้นหลังเป็นสีขาว
setTextColor(GLCD_BLACK); // กาหนดสีตัวอักษรเป็นสีดา
setTextBackgroundColor(GLCD_WHITE); // กาหนดสีพื้นหลังของตัวอักษรเป็นสี ขาว
for (i=0;i<16;i++){ // วนลู ป 16 รอบเพื่ อแสดงข้ อความ
glcd(i,i,"Row %d ",i); // แสดงข้ อความที่ จอแสดงผล
}
}
void loop(){}
ตัวอย่ำงกำรแสดงข้อควำมหลำยบรรทัด
MultipleTextline.ino
โจทย์
สร้างวงกลมสีแดงอยู่กึ่งกลางจอภาพ รัศมีเต็มจอพอดี
โจทย์
ลากเส้น 4 เส้นโดยมีจุดตัดอยู่กลางจอภาพพอดี
โจทย์
สร้างสี่เหลี่ยมซ้อนกันดังรูป
glcd แสดงข้อควำมที่จอ GLCD ได้ 21 ตัว 16 บรรทัด (size 1)
รูปแบบ
void glcd(x,y,*p,...)
พำรำมิเตอร์
x คือตำแหน่งบรรทัดมีค่ำตั้งแต่ 0-15
y คือตำแหน่งตัวอักษรมีค่ำตั้งแต่ 0-24
*p คือข้อควำมที่ต้องกำรนำมำแสดง
ค่ำพิเศษ
%d แสดงตัวเลขจำนวนเต็มในช่วง -32,768 ถึง 32,767
%l แสดงตัวเลขจำนวนเต็มในช่วง -2,147,483,648 ถึง 2,147,483,647
%f แสดงผลตัวเลขจำนวนจริง (แสดงทศนิยม 3 หลัก)
คำสั่ง GLCD
กำรแสดงผลตัวเลข
glcd(0,0,"%d",100);
ตัวแปรใน Arduino
byte
0-65535 (unsigned int)word
0-255 (unsigned char)
0-1boolean True False
-32768 ถึง 32767int
-128 ถึง 127char
-3.4 x 1038 ถึง 3.4 x 1038float
หาข้อมูลเพิ่มเติมจาก reference
เอาต์พุตดิจิตอลอย่างง่าย
เป็นฟังก์ชันส่งข้อมูลออกเอำต์พุต ตำแหน่งขำ num ด้วยสถำนะลอจิก
dat "0" หรือ "1"
ตัวอย่ำง
......
out(6,1) // ให้ LED ที่ต่อขำ 6 ติดสว่ำง
out(4,0) // ให้ LED ที่ต่อขา 6 ดับ
......
out(int num,int dat)
สร้ำงเสียงออกลำโพง
ลำโพงเปียโซ
beep()
sound(freq,time)
คำสั่งสร้ำงเสียง
ฟังก์ชั่นกำเนิดเสียงอย่ำงง่ำย beep : ทำหน้ำที่กำเนิดเสียงควำมถี่
500 Hz นำน 100 มิลลิวินำที
void beep(void);
ฟังก์ชั่นกำเนิดเสียงควำมถี่ใดๆ sound : ทำหน้ำที่กำเนิดเสียง
ควำมถี่ ตำมช่วงเวลำที่กำหนด
void sound(int freq,int time);
พารามิเตอร์ freq ใช้กำหนดค่ำควำมถี่ค่ำสัญญำณเสียง
time ใช้กำหนดช่วงเวลำในกำรกำเนิดสัญญำณเสียงใน
หน่วยมิลลิวินำที
#include <popxt.h>
void setup(){
}
void loop(){
beep();
sleep(1000);
}
#include <popxt.h>
void setup(){
}
void loop(){
sound(1200,500);
sleep(1000);
}
knob เป็นฟังก์ชั่นอ่ำนค่ำ knob บน POP-XT เหมือนคำสั่ง analog(8) ค่ำอยู่ในช่วง
80-1023
รูปแบบ
unsigned int knob()
กำรคืนค่ำ
ค่ำที่อ่ำนได้จำก knob มีค่ำระหว่ำง 80-1023
ตัวอย่ำง
int val=0; // กำหนดค่ำตัวแปรสำหรับเก็บค่ำอะนำลอก
val=knob(); // อ่ำนค่ำจำก knob เก็บค่ำในตัวแปร val
glcd("%d",val); // นำค่ำแสดงที่ GLCD
knob()
sw_ok() เป็นฟังก์ชั่นตรวจสอบสวิตช์ OK บน POP-XT ให้สถำนะจริงเมื่อกดสวิตช์
และเป็นเท็จเมื่อไม่กดสวิตช์
รูปแบบ
unsigned char sw_ok()
กำรคืนค่ำ
1 (เป็นจริง) เมื่อกดสวิตช์
0 (เป็นเท็จ) เมื่อไม่กดสวิตช์
หมำยเหตุ กำรกดสวิตช์ทำให้ค่ำที่อ่ำนได้จำก Knob มีค่ำเป็น 0
ตัวอย่ำง
if(sw_ok())
{
beep();
}
sw_ok()
เป็นฟังก์ชั่นวนตรวจสอบกำรกดสวิตช์ OK บนบอร์ด POP-XT ต้องรอ
จนกระทั่ง SW1 ถูกปล่อยหลังจำกมีกำรกดสวิตช์ จึงจะผ่ำนฟังก์ชั่นนี้ไปทำงำน
คำสั่งอื่นๆ
ตัวอย่ำง
......
sw_ok_press(); // รอจนกระทั่งกดสวิตช์ OK
......
sw_ok_press()
กำรขับเคลื่อน POP-BOT XT
ชุดเฟืองขับมอเตอร์อัตรำทด 48:1
ภำยในชุดเฟืองขับมอเตอร์
BATTERY
+-
M
BATTERY
-+
M
กำรกำหนดทิศทำงของมอเตอร์
ฟังก์ชั่น motor สำหรับขับมอเตอร์ไฟตรง
รูปแบบ
void motor(char ch,int pow)
พำรำมิเตอร์ ch ใช้กำหนดช่องขับตั้งแต่ 1 ถึง 2
pow ใช้กำหนดขนำดกำลังขับ -100 ถึง 100
•กรณีขับด้วยกำลัง 1 ถึง 100 ไฟสถำนะประจำช่องติดเป็นสีเขียว
•กรณีขับด้วยกำลัง -1 ถึง -100 ไฟสถำนะประจำช่องติดเป็นสีแดง(ทิศกำรหมุน
ตรงข้ำมกับขับด้วยกำลังเป็นบวก)
motor(1,100); มอเตอร์ 1 เดินหน้าความเร็ว 100 เปอร์เซ็นต์
motor(2,-50); มอเตอร์ 2 ถอยหลัง ความเร็ว 50 เปอร์เซ็นต์
ฟังก์ชั่น motor_stop สำหรับหยุดขับมอเตอร์ไฟตรงตำม
ช่องที่กำหนด
รูปแบบ
void motor_stop(char ch)
พำรำมิเตอร์ ch ใช้กำหนดช่องขับตั้งแต่ 1 ถึง 2 ในกรณีที่ต้อง
กำรหยุดขับทุกช่องพร้อมกันสำมำรถกำหนดเป็น ALL
กรณีหยุดมอเตอร์ 2 ตัวพร้อมกัน สำมำรถใช้คำสั่ง ao() แทนได้
motor_stop(1); มอเตอร์ 1 หยุด
motor_stop(2); มอเตอร์ 2 หยุด
ao(); มอเตอร์ 2 ตัวหยุดพร้อมกัน
void fd(int8_t speed) { motor(ALL,speed); }
void bk(int8_t speed) { motor(ALL,-speed);}
void sl(int8_t speed){
motor(1,-speed);
motor(2,speed);
}
void sr(int8_t speed){
motor(1,speed);
motor(2,-speed);
}
มอเตอร์ 2 ตัวพร้อมกัน
fd(Speed); เดินหน้า
bk(Speed); ถอยหลัง
sl(Speed); เลี้ยวซ้าย
sr(Speed); เลี้ยวขวา
Speed คือความเร็วหุ่นยนต์ 0-100
ao() ;หยุด
#include <popxt.h>
void setup(){
fd(100);
}
void loop() {
}
กำรปรับแต่งเพื่อให้หุ่นยนต์เคลื่อนที่ตรง
ทำกำรปรับขั้วมอเตอร์ช่อง 1 และ 2 ที่ทำให้ล้อทั้งสองด้ำนหมุนไปข้ำงหน้ำตำมรูป
ให้ได้
ทดสอบขับเคลื่อนหุ่นยนต์เดินหน้ำและถอยหลังพื้นฐำน
#include <popxt.h>
void setup(){}
void loop(){
fd(80);
sleep(1000);
bk(80);
sleep(1000);
}
ForwardBackward.ino
หุ่นยนต์เดินวนเป็นรูปสี่เหลี่ยม
#include <popxt.h>
void setup(){
sw_ok_press();
}
void loop(){
fd(80);
sleep(900);
tr(80);
sleep(400);
}
Rectangle_running.ino
fd2(Speed1,speed2); เดินหน้า
bk2(Speed1,speed2); ถอยหลัง
Speed1 คือมอเตอร์ด้ำนซ้ำย
Speed2 คือมอเตอร์ด้ำนขวำ
หุ่นยนต์เคลื่อนที่เป็นวงกลม
CircleMove.ino
#include <popxt.h>
void setup()
{
fd2(30,90); // Robot moves circle shape
sw_ok_press(); // Wait for OK switch
pressing
ao(); // Robot stop
}
void loop(){}
ตัวอย่ำงโค้ด หุ่นยนต์เคลื่อนที่เป็นวงกลม
CircleMove.ino
กำรเคลื่อนที่หลำยทิศทำง
MultipleDirectionMove.ino
แผงวงจรสวิตช์: ZX-SWITCH (Digital)
คุณสมบัติทำงเทคนิค
•ถ้ำสวิตช์ถูกกดจะอ่ำนค่ำข้อมูลได้เป็นลอจิก “0” พร้อมกับไฟแสดงสถำนะติดสว่ำง
•ถ้ำสวิตช์ไม่ถูกกดจะอ่ำนค่ำข้อมูลได้เป็นลอจิก “1”
ฟังก์ชั่น in
สำหรับอ่ำนค่ำสัญญำณแบบดิจิตอลจำกขำพอร์ตใดๆของ
บอร์ดควบคุมหลัก
รูปแบบ
char in(char _bit);
พำรำมิเตอร์ _bit ใช้กำหนดตำแหน่งหมำยเลขพอร์ตที่
ต้องกำรติดต่อ
กำรคืนค่ำ ฟังก์ชั่นจะทำกำรคืนค่ำสัญญำณดิจิตอลของ
ตำแหน่งขำพอร์ตที่อ่ำนซึ่งอำจมีค่ำเป็น 0 หรือ 1 เท่ำนั้น
ต่อ ZX-SWITCH เข้ำกับพอร์ต 22 และ 23
กดสวิตช์มีเสียงออกลำโพง
#include <popxt.h>
void setup(){}
void loop(){
if(in(22)==0){
sound(1000,300);
glcdFillScreen(GLCD_RED);
}
if(in(23)==0){
sound(2000,300);
glcdFillScreen(GLCD_YELLOW);
}
}
ตัวอย่ำงโค้ด กดสวิตช์มีเสียงออกลำโพง
TouchSwitchTest.ino
หุ่นยนต์รถบังคับ
#include <popxt.h>
void setup(){
setTextSize(2);
glcd(1,1,"Press OK");
glcd(2,1,"to Start");
sw_ok_press();
glcdClear();
glcd(1,1,"Let's go!");
}
void loop(){
if(in(22)==0&&in(23)==0){ fd(60); }
else if(in(22)==0){ sl(60); }
else if(in(23)==0){ sr(60); }
else {ao();}
}
RemoteSwitch.ino
เมื่อมีกำรติดตั้งเซนเซอร์ตรวจจับกำรชน
ต่อ ZX-SWITCH เข้ำกับพอร์ต 22 และ 23
#include <popxt.h>
void setup(){
setTextSize(2);
glcd(1,1,"Press OK"); glcd(2,1,"to Start");
sw_ok_press();
glcdClear();
glcd(1,1,"Let's go!");
}
void loop(){
fd(70);
if(in(22)==0){
bk(80); sleep(300);
sr(80); sleep(200);
}
if(in(23)==0) {
bk(80); sleep(400);
sl(80); sleep(400);
}
}
ObjectAvoider.ino
โมดูลวัดระยะทำงแบบอินฟรำเรด: GP2D120
คุณสมบัติหลัก
•ทำงำนที่ไฟเลี้ยง 5 โวลต์
•วัดระยะทำงใช่วงตั้งแต่ 4 ถึง 32 เซนติเมตร
หลักกำรทำงำนของ GP2D120
ไลบรำรีและชุดคำสั่งที่แนะนำ
ไลบรำรี gp2d120_lib.h
เป็นไลบรำรีที่บรรจุชุดคำสั่งเรียกอ่ำนค่ำระยะทำงจำก
โมดูล GP2D120 ก่อนเรียกใช้งำนฟังก์ชั่นที่บรรจุอยู่ภำยใน
ผู้พัฒนำจะต้องทำกำรผนวกไฟล์ไลบรำรีไว้ที่ตอนต้นของ
โปรแกรมภำษำ C ด้วยคำสั่ง
#include <gp2d120_lib.h>
ฟังก์ชั่น
getdist : อ่ำนค่ำระยะทำงในหน่วยเซนติเมตรจำกโมดูล
GP2D120 ซึ่งค่ำที่มีควำมเชื่อถือได้จะมีค่ำตั้งแต่ 4 ถึง 32
เซนติเมตร
รูปแบบ
unsigned int getdist(char adc_ch)
พำรำมิเตอร์ adc_ch ใช้กำหนดขำพอร์ตที่ต้องกำรในช่วง
1 ถึง 7 จำกพอร์ต A1 ถึง A7 ตำมลำดับ
กำรคืนค่ำ ฟังก์ชั่นจะทำกำรคืนค่ำข้อมูลระยะทำงในหน่วย
เซนติเมตร
ต่อ GP2D120 เข้ำกับพอร์ต 20/A2
#include <popxt.h>
int raw,dist;
void setup(){
setTextSize(2);
glcdMode(1);
glcd(1,1,"Press OK");
sw_ok_press();
glcdClear();
}
void loop(){
raw=analog(2);
dist=getdist(2);
glcd(2,1,"RAW = %d ",raw);
glcd(3,1,"Dist = %d cm",dist);
sleep(100);
}
GP2D120_Reading.ino
แผงวงจรตรวจจับแสงสะท้อน: ZX-03
#include <popxt.h>
void setup(){
setTextSize(3);
glcdMode(3);
glcd(1,1,"Press OK");
sw_ok_press();
}
void loop(){
glcd(1,1,"L=%d ",analog(0));
glcd(3,1,"R=%d ",analog(1));
sleep(100);
}
SurfaceRead.ino
โปรแกรมอ่ำนค่ำจำก ZX-03 แสดงที่ GLCD
อ่ำนค่ำพื้นผิวสีดำ
อ่ำนค่ำพื้นผิวสีขำว
อ่ำนค่ำผลลัพธ์จำกกำรสะท้อนแสง
ยกหุ่นยนต์ขึ้นจำกพื้นแล้วมีเสียงเตือน
#include <popxt.h>
void setup(){}
void loop(){
if(analog(0)<20){
sound(2500,500);
glcdFillScreen(GLCD_RED);
}
else{
glcdClear();
}
}
AlarmBOT.ino
หุ่นยนต์เดินมำหยุดที่เส้นสีดำ (แบบที่ 1)
BlackLineDetect.ino
#include <popxt.h>
void setup(){
setTextSize(2);
glcd(1,1,"Press OK");
sw_ok_press();
glcdClear();
glcd(1,1,"Moving...");
fd(60);
while(analog(0)>500);
ao();
}
void loop(){}
หุ่นยนต์เดินมำหยุดที่เส้นสีดำด้วยกำรเบรก
BlackLineDetect02.ino
#include <popxt.h>
void setup(){
setTextSize(2);
glcd(1,1,"Press OK");
sw_ok_press();
glcdClear();
glcd(1,1,"Moving...");
fd(60);
while(analog(0)>500);
bk(100);
sleep(100);
ao();
}
void loop(){}
สั่งให้หุ่นยนต์เดินหน้ำตรงต่อไป
1
if(L>500&&R>500){
fd(60);
}
สั่งให้หุ่นยนต์เลี้ยวซ้ำยเพื่อกลับไปคร่อมเส้น2
if(L<500&&R>500){
sl(60);sleep(20);
}
สั่งให้หุ่นยนต์เลี้ยวขวำเพื่อกลับไปคร่อมเส้น
3
if(L>500&&R<500){
sr(60);sleep(20);
}
กำหนดกำรทำงำนตำมอิสระ
4
if(L<500&&R<500){
fd(60);sleep(200);
}
เขียนโปรแกรมทดสอบกับสนำมขั้นพื้นฐำน
โปรแกรมเดินตำมเส้นสนำมแบบพื้นฐำน
....ino
#include <popxt.h>
int L,R
void setup(){
setTextSize(2); glcd(1,1,"Press OK");
sw_ok_press();glcd(1,1,"Moving...");
}
void loop(){
L=analog(0);
R=analog(1);
if(L>500&&R>500){ fd(60); }
else if(L<500&&R>500){sl(60);sleep(20); }
else if(L>500&&R<500){sr(60);sleep(20); }
}
เมื่อเจอเส้นตัดส่งเสียงบี๊ป
โปรแกรมเดินตำมเส้นเมื่อเจอเส้นตัดส่งเสียงบี๊ป
SimpleLineTracking.ino
#include <popxt.h>
int L,R
void setup(){
setTextSize(2); glcd(1,1,"Press OK");
sw_ok_press();glcd(1,1,"Moving...");
}
void loop(){
L=analog(0);
R=analog(1);
if(L<500&&R<500){fd(60);sound(2000,200);}
else if(L>500&&R>500){ fd(60); }
else if(L<500&&R>500){sl(60);sleep(20); }
else if(L>500&&R<500){sr(60);sleep(20); }
}
เมื่อเจอเส้นตัดเลี้ยวขวำ
โปรแกรมเดินตำมเส้นเมื่อเจอเส้นตัดเลี้ยวขวำ
xxxxxx.ino
#include <popxt.h>
int L,R
void setup(){
setTextSize(2); glcd(1,1,"Press OK");
sw_ok_press();glcd(1,1,"Moving...");
}
void loop(){
L=analog(0);
R=analog(1);
if(L<500&&R<500){
fd(60);sound(2000,200);
sr(60);sleep(400);
}
else if(L>500&&R>500){ fd(60); }
else if(L<500&&R>500){sl(60);sleep(20); }
else if(L>500&&R<500){sr(60);sleep(20); }
}
กำรเลี้ยว 90 องศำพอดีเมื่อเจอเส้นตัด
โปรแกรมเดินตำมเส้นเมื่อเจอเส้นตัดเลี้ยวขวำ/ซ้ำย
xxxxxx.ino
void R90(){
fd(60);
sound(1500,100);
while(analog(1)>500){sr(60);}
while(analog(1)<500){sr(60);}
}
void L90(){
fd(60);
sound(1500,100);
while(analog(0)>500){sl(60);}
while(analog(0)<500){sl(60);}
}
เมื่อเจอเส้นตัดเลี้ยวขวำ (แบบใหม่)
SimpleMaze.ino
#include <popxt.h>
int L,R;
void R90(){
fd(60); sound(1500,100);
while(analog(1)>500) { sr(60); }
while(analog(1)<500) { sr(60); }
}
void setup(){
setTextSize(2); glcd(1,1,"Press OK");
sw_ok_press(); glcd(1,1,"Moving...");
}
void loop(){
L=analog(0); R=analog(1);
if (L<500&&R<500){R90();}
else if(L>500&&R>500){fd(60);}
else if(L<500&&R>500){sl(60); sleep(20);}
else if(L>500&&R<500){sr(60); sleep(20);}
}
เดินตำมเส้นทำงแยกที่ซับซ้อน
MultipleCrossingLineTrack.ino
#include <popxt.h>
int L,R,x=0;
void setup(){
setTextSize(2);glcd(1,1,"Press OK");
sw_ok_press(); glcd(1,1,"Moving...");
}
void loop(){
L=analog(0);R=analog(1);
if (L<500&&R<500){
if(x==6){x=0;}
x++;
else if (x==3){R90();}
else{L90();}
}
else if(L>500&&R>500){fd(60);}
else if(L<500&&R>500){sl(60);sleep(20);}
else if(L>500&&R<500){sr(60);sleep(20);}
}
กำรใช้งำนเซอร์โวมอเตอร์
ฟังก์ชั่น
servo : กำหนดตำแหน่งเซอร์โวมอเตอร์ โดยเมื่อใช้งำนกับรุ่น
มำตรฐำนจะทำให้หมุนไปยังตำแหน่ง 0 ถึง 180 องศำได้และถ้ำใช้งำน
กับรุ่นปรับแต่งจะทำให้หมุนในทิศทำงใดทิศทำงหนึ่งและมีผลต่อ
อัตรำเร็วในกำรหมุน หรืออำจหยุดนิ่ง
รูปแบบ
void servo(unsigned char _ch
,unsigned int _pos);
พำรำมิเตอร์ _ch ใช้กำหนดช่องขับที่ต่อใช้งำนมีค่ำตั้งแต่ 7 ถึง 8
_pos ใช้กำหนดตำแหน่งกำรขับของเซอร์โวมอเตอร์
มีค่ำ 0 ถึง 180 ถ้ำเป็นค่ำ -1 จะเป็นกำรยกเลิกกำรใช้งำน (ฟรี)
ปรับค่ำตัวต้ำนทำนเพื่อปรับตำแหน่งของเซอร์โวมอเตอร์
กฤษดำ ใจเย็น KRITSADA JAIYEN
บริษัท อินโนเวตีฟ เอ็กเพอริเมนต์ จำกัด
108 ซอยสุขุมวิท 101/2 ถ.สุขุมวิท
แขวงบำงนำ เขตบำงนำ กรุงเทพฯ 10260
โทรศัพท์ 02-7477001-4 โทรสาร 02-7477005
Email : kritsada@inex.co.th
kritsadaj@msn.com
www.inex.co.th

More Related Content

What's hot

การใช้งานหุ่นยนต์ i-BIT หุ่นยนต์ micro:bit ด้วย Microsoft Make Code
การใช้งานหุ่นยนต์ i-BIT หุ่นยนต์ micro:bit ด้วย Microsoft Make Codeการใช้งานหุ่นยนต์ i-BIT หุ่นยนต์ micro:bit ด้วย Microsoft Make Code
การใช้งานหุ่นยนต์ i-BIT หุ่นยนต์ micro:bit ด้วย Microsoft Make CodeInnovative Experiment Co.,Ltd.
 
Withiikaaraichngaanaelahlakkaarchudhunynt sphth radabklaang_suung
Withiikaaraichngaanaelahlakkaarchudhunynt sphth radabklaang_suungWithiikaaraichngaanaelahlakkaarchudhunynt sphth radabklaang_suung
Withiikaaraichngaanaelahlakkaarchudhunynt sphth radabklaang_suungSomsuda Janthajiang
 
แผนการจัดการเรียนรู้ที่ 1 ความรู้เกี่ยวกับหนังสืออิเล็กทรอนิกส์
แผนการจัดการเรียนรู้ที่ 1 ความรู้เกี่ยวกับหนังสืออิเล็กทรอนิกส์แผนการจัดการเรียนรู้ที่ 1 ความรู้เกี่ยวกับหนังสืออิเล็กทรอนิกส์
แผนการจัดการเรียนรู้ที่ 1 ความรู้เกี่ยวกับหนังสืออิเล็กทรอนิกส์yuyjanpen
 
อินทิเกรต
อินทิเกรตอินทิเกรต
อินทิเกรตkrurutsamee
 
ศัพท์ภาษาอังกฤษ อนุบาล 1
ศัพท์ภาษาอังกฤษ อนุบาล 1ศัพท์ภาษาอังกฤษ อนุบาล 1
ศัพท์ภาษาอังกฤษ อนุบาล 1Noppanat Pongwan
 
เทคโนโลยีวิทยาการคำนวณ Coding Kidbright
เทคโนโลยีวิทยาการคำนวณ Coding Kidbrightเทคโนโลยีวิทยาการคำนวณ Coding Kidbright
เทคโนโลยีวิทยาการคำนวณ Coding Kidbrightณัฐพล บัวพันธ์
 
ข้อสอบกลางภาค คณิต ม.1 เทอม 1 ชุดที่ 2 หน่วยที่ 2
ข้อสอบกลางภาค คณิต ม.1 เทอม 1 ชุดที่ 2 หน่วยที่ 2ข้อสอบกลางภาค คณิต ม.1 เทอม 1 ชุดที่ 2 หน่วยที่ 2
ข้อสอบกลางภาค คณิต ม.1 เทอม 1 ชุดที่ 2 หน่วยที่ 2คุณครูพี่อั๋น
 
ปริมาตรของปริซึมและทรงกระบอก
ปริมาตรของปริซึมและทรงกระบอกปริมาตรของปริซึมและทรงกระบอก
ปริมาตรของปริซึมและทรงกระบอกNat Basri
 
5.7อนุกรมเลขคณิตแก้ไข
5.7อนุกรมเลขคณิตแก้ไข5.7อนุกรมเลขคณิตแก้ไข
5.7อนุกรมเลขคณิตแก้ไขKrudodo Banjetjet
 
บทที่ 6 การตกแต่งเอกสารด้วยรูปภาพ
บทที่ 6 การตกแต่งเอกสารด้วยรูปภาพบทที่ 6 การตกแต่งเอกสารด้วยรูปภาพ
บทที่ 6 การตกแต่งเอกสารด้วยรูปภาพVeerapong Takonok
 
คำอุปสรรคที่ใช้แทนตัวพหุคูณ
คำอุปสรรคที่ใช้แทนตัวพหุคูณคำอุปสรรคที่ใช้แทนตัวพหุคูณ
คำอุปสรรคที่ใช้แทนตัวพหุคูณRock Rockie
 
คณิตศาสตร์ ม.1 เรื่องสมบัติของจำนวนนับ
คณิตศาสตร์ ม.1 เรื่องสมบัติของจำนวนนับคณิตศาสตร์ ม.1 เรื่องสมบัติของจำนวนนับ
คณิตศาสตร์ ม.1 เรื่องสมบัติของจำนวนนับTutor Ferry
 
4 клас урок 25 алгоритми з розгалуженням. логічне слідування якщо – то – інакше
4 клас урок 25 алгоритми з розгалуженням. логічне слідування  якщо – то – інакше4 клас урок 25 алгоритми з розгалуженням. логічне слідування  якщо – то – інакше
4 клас урок 25 алгоритми з розгалуженням. логічне слідування якщо – то – інакшеСокальська ЗШ І-ІІІ ступенів №2
 
ลำดับและอนุกรม
ลำดับและอนุกรมลำดับและอนุกรม
ลำดับและอนุกรมrdschool
 

What's hot (20)

Robot Arena Maze Runner Senior @ TMC 2019
Robot Arena Maze Runner Senior @ TMC 2019 Robot Arena Maze Runner Senior @ TMC 2019
Robot Arena Maze Runner Senior @ TMC 2019
 
NodeMCU with Ax-wifi Beginner 2018
NodeMCU with Ax-wifi Beginner 2018NodeMCU with Ax-wifi Beginner 2018
NodeMCU with Ax-wifi Beginner 2018
 
การใช้งานหุ่นยนต์ i-BIT หุ่นยนต์ micro:bit ด้วย Microsoft Make Code
การใช้งานหุ่นยนต์ i-BIT หุ่นยนต์ micro:bit ด้วย Microsoft Make Codeการใช้งานหุ่นยนต์ i-BIT หุ่นยนต์ micro:bit ด้วย Microsoft Make Code
การใช้งานหุ่นยนต์ i-BIT หุ่นยนต์ micro:bit ด้วย Microsoft Make Code
 
I-Beam Robot From inex.co.th
I-Beam Robot From inex.co.thI-Beam Robot From inex.co.th
I-Beam Robot From inex.co.th
 
Withiikaaraichngaanaelahlakkaarchudhunynt sphth radabklaang_suung
Withiikaaraichngaanaelahlakkaarchudhunynt sphth radabklaang_suungWithiikaaraichngaanaelahlakkaarchudhunynt sphth radabklaang_suung
Withiikaaraichngaanaelahlakkaarchudhunynt sphth radabklaang_suung
 
แผนการจัดการเรียนรู้ที่ 1 ความรู้เกี่ยวกับหนังสืออิเล็กทรอนิกส์
แผนการจัดการเรียนรู้ที่ 1 ความรู้เกี่ยวกับหนังสืออิเล็กทรอนิกส์แผนการจัดการเรียนรู้ที่ 1 ความรู้เกี่ยวกับหนังสืออิเล็กทรอนิกส์
แผนการจัดการเรียนรู้ที่ 1 ความรู้เกี่ยวกับหนังสืออิเล็กทรอนิกส์
 
อินทิเกรต
อินทิเกรตอินทิเกรต
อินทิเกรต
 
ศัพท์ภาษาอังกฤษ อนุบาล 1
ศัพท์ภาษาอังกฤษ อนุบาล 1ศัพท์ภาษาอังกฤษ อนุบาล 1
ศัพท์ภาษาอังกฤษ อนุบาล 1
 
เทคโนโลยีวิทยาการคำนวณ Coding Kidbright
เทคโนโลยีวิทยาการคำนวณ Coding Kidbrightเทคโนโลยีวิทยาการคำนวณ Coding Kidbright
เทคโนโลยีวิทยาการคำนวณ Coding Kidbright
 
ข้อสอบกลางภาค คณิต ม.1 เทอม 1 ชุดที่ 2 หน่วยที่ 2
ข้อสอบกลางภาค คณิต ม.1 เทอม 1 ชุดที่ 2 หน่วยที่ 2ข้อสอบกลางภาค คณิต ม.1 เทอม 1 ชุดที่ 2 หน่วยที่ 2
ข้อสอบกลางภาค คณิต ม.1 เทอม 1 ชุดที่ 2 หน่วยที่ 2
 
ปริมาตรของปริซึมและทรงกระบอก
ปริมาตรของปริซึมและทรงกระบอกปริมาตรของปริซึมและทรงกระบอก
ปริมาตรของปริซึมและทรงกระบอก
 
57 submath
57 submath57 submath
57 submath
 
5.7อนุกรมเลขคณิตแก้ไข
5.7อนุกรมเลขคณิตแก้ไข5.7อนุกรมเลขคณิตแก้ไข
5.7อนุกรมเลขคณิตแก้ไข
 
สูตรคณิต
สูตรคณิตสูตรคณิต
สูตรคณิต
 
บทที่ 6 การตกแต่งเอกสารด้วยรูปภาพ
บทที่ 6 การตกแต่งเอกสารด้วยรูปภาพบทที่ 6 การตกแต่งเอกสารด้วยรูปภาพ
บทที่ 6 การตกแต่งเอกสารด้วยรูปภาพ
 
คำอุปสรรคที่ใช้แทนตัวพหุคูณ
คำอุปสรรคที่ใช้แทนตัวพหุคูณคำอุปสรรคที่ใช้แทนตัวพหุคูณ
คำอุปสรรคที่ใช้แทนตัวพหุคูณ
 
คณิตศาสตร์ ม.1 เรื่องสมบัติของจำนวนนับ
คณิตศาสตร์ ม.1 เรื่องสมบัติของจำนวนนับคณิตศาสตร์ ม.1 เรื่องสมบัติของจำนวนนับ
คณิตศาสตร์ ม.1 เรื่องสมบัติของจำนวนนับ
 
4 клас урок 25 алгоритми з розгалуженням. логічне слідування якщо – то – інакше
4 клас урок 25 алгоритми з розгалуженням. логічне слідування  якщо – то – інакше4 клас урок 25 алгоритми з розгалуженням. логічне слідування  якщо – то – інакше
4 клас урок 25 алгоритми з розгалуженням. логічне слідування якщо – то – інакше
 
คำอธิบายรายวิชา ศ22102
คำอธิบายรายวิชา ศ22102คำอธิบายรายวิชา ศ22102
คำอธิบายรายวิชา ศ22102
 
ลำดับและอนุกรม
ลำดับและอนุกรมลำดับและอนุกรม
ลำดับและอนุกรม
 

Similar to เริ่มต้นการเขียนโปรแกรมหุ่นยนต์

การเขียนฟังก์ชั่นในภาษา C
การเขียนฟังก์ชั่นในภาษา Cการเขียนฟังก์ชั่นในภาษา C
การเขียนฟังก์ชั่นในภาษา CWarawut
 
Algorithm Flowchart
Algorithm FlowchartAlgorithm Flowchart
Algorithm FlowchartWarawut
 
การใช้งาน NodeMCU เบื้องต้น
การใช้งาน NodeMCU เบื้องต้นการใช้งาน NodeMCU เบื้องต้น
การใช้งาน NodeMCU เบื้องต้นInnovative Experiment Co.,Ltd.
 
สไลด์ประกอบกิจกรรม One (language) for All (platforms)
สไลด์ประกอบกิจกรรม One (language) for All (platforms)สไลด์ประกอบกิจกรรม One (language) for All (platforms)
สไลด์ประกอบกิจกรรม One (language) for All (platforms)Supachai Vorapojpisut
 
Robot Arm opencm และมอเตอร์ dynamixel จาก robotis
Robot Arm opencm และมอเตอร์ dynamixel จาก robotisRobot Arm opencm และมอเตอร์ dynamixel จาก robotis
Robot Arm opencm และมอเตอร์ dynamixel จาก robotisInnovative Experiment Co.,Ltd.
 
ใบความรู้ที่ 1 ความรู้พื้นฐานโปรแกรมภาษาซี
ใบความรู้ที่ 1 ความรู้พื้นฐานโปรแกรมภาษาซีใบความรู้ที่ 1 ความรู้พื้นฐานโปรแกรมภาษาซี
ใบความรู้ที่ 1 ความรู้พื้นฐานโปรแกรมภาษาซีNattapon
 
เทคโนโลยีคอมพิวเตอร์
เทคโนโลยีคอมพิวเตอร์เทคโนโลยีคอมพิวเตอร์
เทคโนโลยีคอมพิวเตอร์prakaipet
 
Chapter2 Input & Output Devices
Chapter2 Input & Output DevicesChapter2 Input & Output Devices
Chapter2 Input & Output DevicesAdul Yimngam
 
2D Graphics and Animations in Java World
2D Graphics and Animations in Java World2D Graphics and Animations in Java World
2D Graphics and Animations in Java Worldkunemata
 
Dc102 Understanding Digital Media-System Computer
Dc102 Understanding Digital Media-System ComputerDc102 Understanding Digital Media-System Computer
Dc102 Understanding Digital Media-System Computerajpeerawich
 

Similar to เริ่มต้นการเขียนโปรแกรมหุ่นยนต์ (20)

การเขียนฟังก์ชั่นในภาษา C
การเขียนฟังก์ชั่นในภาษา Cการเขียนฟังก์ชั่นในภาษา C
การเขียนฟังก์ชั่นในภาษา C
 
Algorithm Flowchart
Algorithm FlowchartAlgorithm Flowchart
Algorithm Flowchart
 
C lang
C langC lang
C lang
 
การใช้งาน NodeMCU เบื้องต้น
การใช้งาน NodeMCU เบื้องต้นการใช้งาน NodeMCU เบื้องต้น
การใช้งาน NodeMCU เบื้องต้น
 
สไลด์ประกอบกิจกรรม One (language) for All (platforms)
สไลด์ประกอบกิจกรรม One (language) for All (platforms)สไลด์ประกอบกิจกรรม One (language) for All (platforms)
สไลด์ประกอบกิจกรรม One (language) for All (platforms)
 
Robot Arm opencm และมอเตอร์ dynamixel จาก robotis
Robot Arm opencm และมอเตอร์ dynamixel จาก robotisRobot Arm opencm และมอเตอร์ dynamixel จาก robotis
Robot Arm opencm และมอเตอร์ dynamixel จาก robotis
 
02 lab microbox1
02 lab microbox102 lab microbox1
02 lab microbox1
 
ใบความรู้ที่ 1 ความรู้พื้นฐานโปรแกรมภาษาซี
ใบความรู้ที่ 1 ความรู้พื้นฐานโปรแกรมภาษาซีใบความรู้ที่ 1 ความรู้พื้นฐานโปรแกรมภาษาซี
ใบความรู้ที่ 1 ความรู้พื้นฐานโปรแกรมภาษาซี
 
เทคโนโลยีคอมพิวเตอร์
เทคโนโลยีคอมพิวเตอร์เทคโนโลยีคอมพิวเตอร์
เทคโนโลยีคอมพิวเตอร์
 
Chapter2 Input & Output Devices
Chapter2 Input & Output DevicesChapter2 Input & Output Devices
Chapter2 Input & Output Devices
 
2D Graphics and Animations in Java World
2D Graphics and Animations in Java World2D Graphics and Animations in Java World
2D Graphics and Animations in Java World
 
Introduction toc
Introduction tocIntroduction toc
Introduction toc
 
I bot new
I bot newI bot new
I bot new
 
Lesson2
Lesson2Lesson2
Lesson2
 
Pop bot
Pop botPop bot
Pop bot
 
Dc102 Understanding Digital Media-System Computer
Dc102 Understanding Digital Media-System ComputerDc102 Understanding Digital Media-System Computer
Dc102 Understanding Digital Media-System Computer
 
C language
C languageC language
C language
 
C language
C languageC language
C language
 
207
207207
207
 
58210401202 งาน 1 ss
58210401202 งาน 1 ss58210401202 งาน 1 ss
58210401202 งาน 1 ss
 

เริ่มต้นการเขียนโปรแกรมหุ่นยนต์