Upload
innovative-experiment-coltd
View
282
Download
66
Embed Size (px)
DESCRIPTION
Power Point Presentation in Thai For Robo-Creator From INEX
Citation preview
Robo-Creator ฉบบ AT-BOT
รายละเอยดการอบรม
9.00-10.00 แนะน าใหรจกหนยนต Robo-Creator แนะน าซอฟตแวร Wiring การตดตงซอฟตแวรขนตอนการดาวนโหลดโปรแกรมไปยงหนยนต
10.00-11.00 การแสดงผลขอมลทหนาจอ LCDการสรางเสยงออกล าโพง
11.00-12.00 การใชงานสวตชกดและตวตานทานปรบคาได12.00-13.00 พกกลางวน13.00-14.00 การขบเคลอนหนยนตเบองตน
เดนหนา ถอยหลง เลยวซาย เลยวขวาเขยนโปรแกรมใหหนยนตเดนวนเปนรปสเหลยม
14.00-15.00 การใชงานเซนเซอรสวตชการควบคมหนยนตดวยเซนเซอรสวตช
15.00-16.30 การใชงานเซนเซอรตรวจจบการสะทอนการเคลอนทตามเสนอยางงายการเคลอนทตามเสนแบบตรวจสอบทางแยก
Robot-Mindmap
แผงวงจรหลกแผงวงจรหลก บอรดบอรด ATXATX
1) ขบเคลอนดวยมอเตอรไฟตรงทมชดเฟองทดอตรา 48:1 ทง 4 ลอ
2) ตอมอเตอรไฟตรง 6 ตว
1
2
3
4
5
6
3) ขบเซอรโวมอเตอรไดสงสด 6 ตว
4) ลอขบเคลอนเปนแบบลอยางมป ม
4) จดตอเซนเซอรอะนาลอกและดจตอล I2C สอสารอนกรม
5) ก าเนดเสยงผานล าโพงเปยโซ
ล าโพงเปยโซ
สรป
การน าบอรดประยกตใชงานการน าบอรดประยกตใชงาน
ตดตง ตดตง Gripper Gripper ดานหนาดานหนา
ตดตงเซนเซอรเพอเคลอนทตามเสนตดตงเซนเซอรเพอเคลอนทตามเสน
ตดตงเซนเซอรเพอตรวจจบการชนตดตงเซนเซอรเพอตรวจจบการชน
ตดตงเซนเซอรวดระยะทางเพอคนหาเสนทางตดตงเซนเซอรวดระยะทางเพอคนหาเสนทาง
ปรบเปลยนโครงสรางเปนลอสายพานปรบเปลยนโครงสรางเปนลอสายพาน
เปลยนลอขบเคลอนเปนเซอรโวมอเตอรแบบหมนไดรอบตวเปลยนลอขบเคลอนเปนเซอรโวมอเตอรแบบหมนไดรอบตว
เปลยนลอขบเคลอนเปนลอแบบ เปลยนลอขบเคลอนเปนลอแบบ Omni Omni เคลอนทไดหลายทศทางเคลอนทไดหลายทศทาง
เปลยนการขบเคลอนเปนแบบขา โดยใชเซอรโวมอเตอร เปลยนการขบเคลอนเปนแบบขา โดยใชเซอรโวมอเตอร 3 3 ตวตว
รปทรงมาตรฐานทใชในการอบรมรปทรงมาตรฐานทใชในการอบรม
รายละเอยดบนตวบอรด ATX
ซอฟตแวรส าหรบเขยนโปรแกรมซอฟตแวรส าหรบเขยนโปรแกรม
ท าอะไรไดบาง http://wiring.org.co
ตดตงซอฟตแวร
ดบเบลคลกเพอตดตง
ขนตอนการตดตง
ตดตง Wiring และไดรเวอรของ USB
ชดพฒนาโปรแกรมภาษา C/C++ ส าหรบไมโครคอนโทรลเลอร AVR แบบ Open Source ชอ Wiring สามารถน ามาใชงานไดโดยไมมคาใชจาย
ทดสอบเปดโปรแกรม Wiringทดสอบเปดโปรแกรม Wiring
ใสถานขนาด AA 5 กอน
ถานชารจหรออลคาไลน
เชอมตอสาย USB กบคอมพวเตอรและ AT-BOTเชอมตอสาย USB กบคอมพวเตอรและ AT-BOT
ตรวจสอบพอรตอนกรมของคอมพวเตอรตรวจสอบพอรตอนกรมของคอมพวเตอร
แสดงขอความพบฮารดแวรใหมและพรอมใชแสดงขอความพบฮารดแวรใหมและพรอมใช
คลกเมาสขวา เลอก Propertiesคลกเมาสขวา เลอก Properties
Device ManagerDevice Manager
ตรวจสอบพอรตอนกรมของคอมพวเตอรตรวจสอบพอรตอนกรมของคอมพวเตอร
ก าหนดคาทโปรแกรม Wirring ใหตรงกนก าหนดคาทโปรแกรม Wirring ใหตรงกน
ก าหนดชอของบอรดเปน Robo-Creator R1ก าหนดชอของบอรดเปน Robo-Creator R1
ทดลองเขยนโปรแกรมตามตวอยางทดลองเขยนโปรแกรมตามตวอยาง
คอมไพลโปรแกรมทเขยนคอมไพลโปรแกรมทเขยน
โปรแกรมแจงวาไมม ERROR
ป มคอมไพล
คยลด Ctrl+R
เตรยมหนยนตเขาสโหมดอพโหลดเตรยมหนยนตเขาสโหมดอพโหลด
กดป มเพออพโหลด
อพโหลดโปรแกรมอพโหลดโปรแกรม
คยลด Ctrl+U
ผลลพธ หนาจอแสดงขอความผลลพธ หนาจอแสดงขอความ
ไลบรารส าหรบหนยนต AT-BOTไลบรารส าหรบหนยนต AT-BOT
#include <motor.h>
#include <sleep.h>
#include <in_out.h>
#include <lcd.h>
#include <analog.h>
#include <servoMotor.h>
#include <sound.h>
#include <serial.h>
ขบมอเตอรหนวงเวลาอนพตเอาตพตดจตอลตดตอจอ LCDอานคาจากเซนเซอรใชงานเซอรโวมอเตอรก าเนดเสยงสอสารอนกรม
เมอเรยก atx.h จะเรยกไลบรารเหลาน
#include
void setup()
{
}
void loop()
{
}
#include <atx.h>
void setup()
{
}
void loop()
{
}
รปแบบการเขยนโปรแกรม
atx.h คอไลบรารหลกในการพฒนาหนยนต AT-BOT
setup คอฟงกชนทจะท างานเพยงครงเดยวหลงจากโปรแกรมเรมท างาน loop คอฟงกชนทจะท างานวนซ าตอเนอง โดยจะเรมท างานหลงจากท างานในฟงกชน setup เสรจ
รปแบบการแสดงผลทหนาจอ LCD
แสดงผลตว 16 ตวอกษร 2 บรรทด
ไลบรารควบคมการแสดงผลทโมดล LCD
void lcd(char *p,…);
รปแบบฟงกชน
พารามเตอร
p ใชก าหนดรปแบบการแสดงผลทโมดล LCD โดยสามารถก าหนดรปแบบการแทรกสญลกษณพเศษเพอรวมแสดงผลคาขอมลตวเลขชนดตางๆได
#include <atx.h>
void setup()
{
lcd("Hello AT-BOT");
}
void loop()
{
}
ตวอยางท 1
#include <atx.h>
void setup()
{
lcd("abcdefghijklmnopqrstuvwxyz");
}
void loop()
{
}
ตวอยางท 2
เมอตวอกขระตดกนเกน 16 ตวอกษร จะตดขนบรรทดใหมให
รหสบงคบ การท างาน
%%d d หรอ หรอ %D%D แสดงผลตวเลขชวง แสดงผลตวเลขชวง --3232,,768 768 ถง ถง ++3232,,767767
%%f f หรอ หรอ %F%F แสดงผลตวเลขจ านวนจรงทศนยม แสดงผลตวเลขจ านวนจรงทศนยม 3 3 หลกหลก
#c#c เคลยรหนาจอเคลยรหนาจอ
#n#n น าขอความแสดงทบรรทดท น าขอความแสดงทบรรทดท 22
ค าสงพเศษ
#include <atx.h>int x=158;void setup(){
lcd("Value: %d ",x);}void loop(){
}
ตวอยางท 3
การน าคาตวเลขมาแสดง โดยเรมตนอยในรปแบบของตวแปร
ก าหนดคาตวแปร
#include <atx.h>
int i=0;
void setup()
{
}
void loop()
{
lcd("Count: %d ",i);
sleep(1000);
i++;
}
ตวอยางท 4
โปรแกรมนบคาเพมขนทละ 1ทกๆ 1 วนาท
ตวแปร
เพมคาตวแปรขนทละ 1
#include <atx.h>
void setup()
{
}
void loop()
{
lcd("Sawaddee#nThailand");
}
ตวอยางท 5
แสดงตวอกษร “Thailand” ในบรรทดท 2
อกขระพเศษ
สรางเสยงออกล าโพงเปยโซ
ล าโพงเปยโซ
ฟงกชน beep()beep() ก าเนดเสยง ก าเนดเสยง 5500 00 Hz Hz นาน นาน 00..1 1 วนาทวนาท
void beep(void);void beep(void);
ฟงกชน ฟงกชน soundsound () () ก าเนดเสยงตามความถและเวลาทก าหนดก าเนดเสยงตามความถและเวลาทก าหนด
void sound(int freq,int time);void sound(int freq,int time);
โดย โดย freqfreq คอคาความถเสยงคอคาความถเสยง
timetime ชวงเวลาหนวยชวงเวลาหนวยมลลวนาทมลลวนาท
ไลบราร Sound ส าหรบก าเนดเสยง
#include <atx.h>
void setup()
{
}
void loop()
{
beep();
sleep(1000);
}
ตวอยางท 6
สรางเสยงบปทกๆ 1 วนาท
สงเสยง
#include <atx.h>
void setup()
{
}
void loop()
{
sound(1200,500);
sleep(1000);}
ตวอยางท 7
สรางสญญาณเสยงความถ 1200 Hz ดงนาน 0.5 วนาท โดยเวนหวงทกๆ 1 วนาท
เสยงความถ 1200 Hzดงนาน 0.5 วนาท
ทดสอบใชสวตชบนตวบอรด ATX
SW1SW2
swsw11 ตรวจสอบการตรวจสอบการกดสวตช กดสวตช SWSW11
swsw22 ตรวจสอบการตรวจสอบการกดสวตช กดสวตช SWSW22
รปแบบรปแบบ
char char swsw11(void);(void);
char char swsw22(void);(void);
การคนคา เมอสวตชถกกดจะคนคาเปน 0 แตถาไมถกกดจะคนคาเปน 1
ไลบราร in_out กบฟงกชนตรวจสอบสถานะการกดสวตช
swsw11_press_press :: รอจนกระทงมการกดสวตช รอจนกระทงมการกดสวตช SWSW11
swsw22_press_press :: รอจนกระทงมการกดสวตช รอจนกระทงมการกดสวตช SWSW22
รปแบบรปแบบ
void void swsw11_press(void);_press(void);
void void swsw22_press(void_press(void););
จะเปนการรอทบรรทดนไปจนกวาจะมการกดสวตชจงกระโดดไปท าจะเปนการรอทบรรทดนไปจนกวาจะมการกดสวตชจงกระโดดไปท าบรรทดถดไปบรรทดถดไป
ไลบราร in_out กบฟงกชนรอจนกวากดสวตช
#include <atx.h>
int i=0;
void setup(){
sw1_press();
}
void loop(){
lcd("Count: %d ",i);
sleep(1000);
i++;
}
ตวอยางท 8
ตองกดสวตช SW1 จอ LCD จงคอยเรมนบ
#include <atx.h>
int i=10;
void setup(){}
void loop(){
lcd("Count: %d ",i);
if(sw1()==0){
i++;
sleep(200);
}
if(sw2()==0){
i--;
sleep(200);
}
}
ตวอยางท 9
เพมคาเมอกด SW1 ลดคาเมอกด SW2
ทดสอบใช KNOB (ตวตานทานปรบคาได)
KNOB
รปแบบรปแบบ
unsigned int knob();unsigned int knob();
การคนคา คนคาขอมลจากการหมน 0-1023
ซายสด = 0
ขวาสด = 1023
ไลบราร analog กบฟงกชน knob เพออานคา 0-1023
#include <atx.h>
void setup()
{
}
void loop()
{
lcd("KNOB: %d ",knob());
sleep(100);
}
ตวอยางท 10
น าคาทปรบแสดงผลทหนาจอ LCD
ตวอยางท 11 หมน Knob ดานซายนบลง , ขวานบขน#include <atx.h>
int i=100; // คาเรมตน int k;
void setup(){}
void loop(){
lcd("Count: %d ",i);
k = knob();
if(k>512){
i++;
lcd("#nCount Up ");
}else{
i--;
lcd("#nCount Down ");
}sleep(1000);
}
00--100 100 คา คา i i นบขนนบขน
101101--300300 คา คา i i นบขนเรวสองเทานบขนเรวสองเทา
301301--500500 คา คา i i หยดอยกบทหยดอยกบท
501501--700700 คา คา i i นบลงนบลง
701701--10231023 คา คา i i นบลงนบลงเรวสองเทาเรวสองเทา
#include <atx.h>
int i=100; // คาเรมตน int k;
void setup(){}
void loop(){
k = knob();
lcd("Count: %d #nKnob=%d",i,k);
if(k<100){
i++;
sleep(500);
}
else if(k>100 && k<300){
i++;
sleep(250);
}
else if(k>300 && k<500){
sleep(200);
}
else if (k>500&& k<700){
i--;
sleep(500);
}
else{
i--;
sleep(250);
}
}
ขบมอเตอรไฟตรง
1
2
3
4
5
0
ชองของมอเตอร
ฟงกชน motor
รปแบบ
void motor(char ch,int pow)void motor(char ch,int pow)
โดย
ch ch บอกต าแหนงของมอเตอร ตงแต บอกต าแหนงของมอเตอร ตงแต 00--55
pow pow ใชก าหนดก าลงขบมคา ใชก าหนดก าลงขบมคา --100100 ถง ถง 100100
คาบวกทศทางเดนหนาคาบวกทศทางเดนหนา
คาลบทศทางถอยหลงคาลบทศทางถอยหลง
ไลบราร motor ส าหรบฟงกชนควบคมมอเตอร
รปแบบ
void motor_stop(char ch)
โดย
ch ch บอกต าแหนงของมอเตอร ตงแต บอกต าแหนงของมอเตอร ตงแต 00--5 5 หรอหรอ ALLALL
ใชใช ALL ALL ถาตองการหยดมอเตอรทกตวถาตองการหยดมอเตอรทกตวพรอมกนพรอมกน
ใช ใช ao() ao() เปนตวยอแทน เปนตวยอแทน motor_stop(ALL)motor_stop(ALL) ไดได
ฟงกชน motor_stop() หยดมอเตอร
Motor0
Motor1
Motor3
Motor2
เสยบสายมอเตอร โดยอางองทศทางดงน
หมนลอไปหนา ไฟตดสเขยว หมนลอถอยหนา ไฟตดสแดง
ตวอยางท 12 ทดสอบขบมอเตอรอยางงาย#include <atx.h>void setup() {lcd(“SW1 Press!”);sw1_press();
}void loop() {motor(0,70);motor(1,70);motor(2,70);motor(3,70);sleep(3000);motor_stop(ALL);sleep(2000);
}
หนยนตไปขางหนา 3 วนาทและหยดนง 2 วนาทสลบกน
ตวอยางท 13 เคลอนทไปและกลบ#include <atx.h>void setup(){}void loop() {motor(0,70);motor(1,70);motor(2,70);motor(3,70);sleep(3000);
motor(0,-70);motor(1,-70);motor(2,-70);motor(3,-70);sleep(3000);
}
การเคลอนทไปและกลบ
หลกการขบเคลอนหนยนตเบองตน
และ
การสรางฟงกชนขบเคลอนหนยนต
ฟงกชน forward เคลอนทไปหนา
void FD(unsigned int speed)
{
motor(0,speed);
motor(1,speed);
motor(2,speed);
motor(3,speed);
}
void BK(unsigned int speed)
{
motor(0,-speed);
motor(1,-speed);
motor(2,-speed);
motor(3,-speed);
}
ฟงกชน backward เคลอนทถอยหลง
void SR(unsigned int speed)
{
motor(0,speed);
motor(1,speed);
motor(2,-speed);
motor(3,-speed);
}
ฟงกชน spin_right เลยวขวา
void SL(unsigned int speed)
{
motor(0,-speed);
motor(1,-speed);
motor(2,speed);
motor(3,speed);
}
ฟงกชน spin_left เลยวซาย
ฟงกชนหยดขบเคลอนใหใช ao()
ao();
มอเตอรทง 4 ตวหยดท างานพรอมกน
Motor_stop(ALL);
ทดสอบใหหนยนตเดนวนเปนรปสเหลยม
ทดสอบหนยนตเดนเปนวงกลม
ฟงกชน forward เคลอนทไปหนา แบบ 2 Speed
void FD2(unsigned int speed1,unsigned int speed2)
{
motor(0,speed1);
motor(1,speed1);
motor(2,speed2);
motor(3,speed2);
}
void BK2(unsigned int speed1,unsigned int speed2)
{
motor(0,-speed1);
motor(1,-speed1);
motor(2,-speed2);
motor(3,-speed2);
}
ฟงกชน backward เคลอนทถอยหลง แบบ 2 Speed
ZX-SWITCH สวตชกด
เมอกดอานคาไดเปน “0”เมอไมกดอานคาไดเปน “1”
รปแบบรปแบบ char in(char _bit);char in(char _bit);
โดย _bit_bit ใชใชก าหนดชองทก าหนดชองทตองการตดตอตองการตดตอการคนคา ฟงกชนจะท าการคนฟงกชนจะท าการคนคาสถานะของชอง มคาเปน คาสถานะของชอง มคาเปน 0 0 หรอ หรอ 1 1 เทานนเทานน
ฟงกชน in ส าหรบการอานคาสวตช (ดจตอล)
ตวอยางท 14 กดสวตชควบคมมอเตอร
ตอสวตชเขาชอง 40
ตวอยางท 14 กดสวตชควบคมมอเตอร
#include <atx.h>
void setup(){}
void loop(){
if (in(40)==0){
SL(60);
}
else{
ao();
}
}
ตอสวตชเขากบชอง 40 และ 41
ตวอยางท 15 รถบงคบจากสวตช 2 ตว#include <atx.h>
void setup(){}
void loop(){
if(in(40)==0&&in(41)==0){
FD(60);
}
else if (in(40)==0){
SL(60);
}
else if(in(41)==0){SR(60);
}
else {
ao();
}
}
หมายเหต ตองแทรกฟงกชนขบมอเตอรไวกอนหนาน
หลบหลกสงกดขวางจากการชนสวตช
ตอสวตชเขาทดานหนาของหนยนตในต าแหนงดงรป
โมดล GP2D120
ท างานทไฟเลยง 5 โวลตวดระยะทางใชวงตงแต 4 ถง 32 เซนตเมตร
โมดล GP2D120
ไลบราร gp2d120_lib
ฟงกชน getdist : อานคาระยะทางจาก GP2D120 ซง 4 ถง 32 เซนตเมตร
รปแบบ unsigned int getdist(char adc_ch)
โดย adc_ch ใชก าหนดขาพอรต 0 ถง 6 จาก ADC0 ถง ADC6 ตามล าดบ การคนคา คนคาขอมลระยะทางในหนวยเซนตเมตร
ตอ GP2D120 เขาชอง ADC3
ตวอยางท 16 อานคาจาก GP2D120 โชวทหนาจอ LCD
#include <atx.h>
#include <gp2d120_lib.h>
unsigned int dist;
void setup(){}
void loop(){
dist = getdist(3);
if(dist>=4 && dist<=32){
lcd("Distance: %d cm ",dist);
}
else{
lcd("Out of Range!");
}
sleep(100);
}
หนยนตหลบหลกสงกดขวางดวย GP2D120
ตดตงเซนเซอรดานหนาหนยนต
ตวอยางท 17 หนยนตหลบหลกสงกดขวางดวย GP2D120
#include <atx.h>
#include <gp2d120_lib.h>
unsigned int dist;
void setup(){
lcd("SW1 Press!");sw1_press();
}
void loop(){
dist = getdist(3);
if(dist>=4 && dist<15){
BK(80);sleep(500);
SL(80);sleep(500);
}
else {
FD(80);
}
}
แผงวงจรตรวจจบการสะทอน ZX-03R
ผลการสะทอนแสง
ไลบราร analog
ฟงกชน analog ส าหรบอานคาจากเซนเซอรอะนาลอก
รปแบบ unsigned char analog(unsigned char channel);
โดย channel ใชก าหนดขาพอรต 0 ถง 6 จาก ADC0 ถง ADC6 การคนคา คนคาขอมลทตงแต 0 ถง 1023 (คาความละเอยด 10 บต)
ตดตงเซนเซอรดานลางตวหนยนต ดงรป
ประมาณ 800-1000 ประมาณ 100-200
ทดสอบอานคาพนผวสขาวและด า
สด าอานไดประมาณ 200 สขาวอานไดประมาณ 800 ดงนนคาเฉลยในการเปรยบเทยบ(200+800)/2 = 500
น าคาทไดมาหาคากงกลาง
1 if(L ขาว&& R ขาว){FD();
}
L R
เซนเซอรสองตวครอมอยบนเสน
2 if(L ด า&& R ขาว){SL();
}
L
R
เซนเซอรซายพบเสน
3 if(L ขาว&& R ด า){SR();
}
เซนเซอรขวาพบเสน
4 if(L ด า&& R ด า){FD();
}
L R
เซนเซอรสองตวเจอสด า
สนามรปแบบท 1
ตวอยางท 18 เคลอนทตามเสนอยางงายทสด
#include <atx.h>
int L,R;
void setup(){
lcd("Press Start"); sw1_press();
}
void loop()
{
L=analog(4);R=analog(6);
if(L>500&&R>500){
FD(60);
}
else if(L<500){
SL(60);
}
else if(R<500){
SR(60);
}
}
สนามรปแบบท 2 เพมเสนตด (ใหเดนตรง)
ตวอยางท 19 เจอเสนตดสงเสยงออกล าโพง#include <atx.h>
int L,R;
void setup(){
lcd("Press Start"); sw1_press();
}
void loop()
{
L=analog(4);R=analog(6);
if (L<500&&R<500){
FD(60);
sound(1200,500);
}
else if(L>500&&R>500){FD(60);
}
else if(L<500){
SL(60);
}
else if(R<500){
SR(60);
}
}
สนามรปแบบท 3 เจอเสนตดเลยวขวา
สรางฟงกชน L90() เพอการเลยวทแมนย า
ตรวจพบทางแยก เดนเลยไปกอน หมนตวจนเซนเซอรซายเจอเสน
สรางฟงกชน L90() เพอการเลยวทแมนย า
หมนตอจนหลดเสนด า
หลดเสนด า เดนตรงตอไป
ตวอยางท 20 ฟงกชนเลยวซาย 90 องศา
void L90(){
FD(60);
sound(1500,100);
while(analog(4)>500){
SL(60);
}
while(analog(4)<500){
SL(60);
}
}
ตวอยางท 21 ฟงกชนเลยวขวา 90 องศา
void R90(){
FD(60);
sound(1500,100);
while(analog(6)>500){
SR(60);
}
while(analog(6)<500){
SR(60);
}
}
สนามรปแบบท 4 แยกท 3 เลยวขวา
1
23
45
6
int L,R,x=0;
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); }}void setup(){lcd("Press Start");sw1_press();
}void loop(){L=analog(0); R=analog(1);
if (L<500&&R<500){if(x==6) { x=0; }x++;
if (x==3) { R90(); }else { L90(); }
}else if(L>500&&R>500) { FD(60); }else if(L<500) { SL(60); sleep(20); }else if(R<500) { SR(60); sleep(20); }
ตวอยางท 22 แยกท 3 เลยวขวา