การใช้งาน 1 กล่องสมองกล · 2018-04-25 ·...
TRANSCRIPT
1
กลองสมองกลการใชงาน 1
2หลกการของระบบควบคม
อนพต เอาตพตประมวลผล
3
ตรวจสอบการเปด
จากรโมตหรอสวตช
ระบบควบคมของเครองปรบอากาศ
สงใหคอมเพรสเซอรท างาน
ตรวจสอบอณหภมจาก
เซนเซอร กบคาทตงไว
สงใหคอมเพรสเซอรหยดท างาน
มากกวา
คาทตงไว
นอยกวา
คาทตงไว
ตวอยางระบบควบคมอยางงายๆ
เครองปรบอากาศ
4ชดอปกรณในชด IPST-SE มาตรฐาน 2
5แบตเตอร อแดปเตอร
เปด/ปด
เซอรโว
USB (Download)Analog/DigitalI2C
PORT DIGITAL
6
PORT DIGITAL RESET Serial1
จอส128x160 จด
มอเตอรไฟตรง
ป มปรบ knob
สวตช OK
สวตช SW1
ไฟแบตออน
7โปรแกรมทใชงาน
โปรแกรม wiring
โปรแกรม Arduino
8ตดตงซอฟตแวร
Arduino1.0.7_Setup150326ประกอบดวย
• ซอฟตแวร Arduino 1.0.7
• ตวอยาง IPST-SE
• ไดรเวอร USB
• ไลบราร IPST-SE
9
1 2 3
4 5
หลงจากนจะมหนาตางตดตงไดรเวอร หาม Cancel
ตดตงซอฟตแวร
10ขนตอนตดตงไดรเวอร
เพอใหคอมพวเตอรรจกกบบอรด IPST-SE
11
เลอกบอรด IPST-SE
โปรแกรม Arduino ถกเปด
เปดโปรแกรมครงแรก
12ตรวจสอบวาเลอกบอรด IPST-SE แลว
13เชอมตอกบคอมพวเตอร
14
เลอก Serial Port ใหตรง
เลอกพอรตอนกรม
15รปแบบการท างานโปรแกรม Arduinovoid setup() {
}
void loop() {
}
ส าหรบก าหนดคา เกดขนครงเดยว
โปรแกรมหลกท างานตอเนอง
16
ท างานใน Setup
ท างานใน Loop
START
โฟลวชารตแสดงการท างานโปรแกรม Arduino
17
#include <ipst.h>
void setup()
{glcd(0,0,"Hello World");
}
void loop()
{}
โปรแกรม ท 1
18
1. คอมไพล
3. อพโหลดไปยง IPST-SE
2. แจงวาคอมไพลผาน
ตรวจสอบไวยกรณและอพโหลด
Ctrl+RCtrl+U
19ผลลพธทจอภาพ IPST-SE
20คณสมบตของจอภาพ GLCD
21
glcd แสดงขอความทจอ GLCD ได 21 ตว 16 บรรทด (size 1) รปแบบ
glcd(x,y,*p,...)
พารามเตอรx คอต าแหนงบรรทดมคาตงแต 0-15y คอต าแหนงตวอกษรมคาตงแต 0-24*p คอขอความทตองการน ามาแสดง
คาพเศษ%d แสดงตวเลขจ านวนเตมในชวง -32,768 ถง 32,767%h แสดงตวเลขฐานสบหก%b แสดงตวเลขฐานสอง%l แสดงตวเลขจ านวนเตมในชวง -2,147,483,648 ถง 2,147,483,647%f แสดงผลตวเลขจ านวนจรง (แสดงทศนยม 3 หลก)
ค าสง GLCD
22
glcd
setTextColor
setTextBackgroundColor
glcdClear
glcdFillScreen
glcdMode
setTextSize
glcdPixel
glcdRect
glcdFillRect
glcdLine
glcdCircle
glcdFillCircleglcdArc
ค าสงอนๆ ของ GLCD
23
setTextColor(COLOR)
GLCD_RED,
GLCD_GREEN,
GLCD_BLUE,
GLCD_YELLOW,
GLCD_BLACK,
GLCD_WHITE,
GLCD_CYAN,
GLCD_MAGENTA
GLCD_ORANGE
GLCD_LIME
GLCD_VIOLET
GLCD_PINK
GLCD_DOLLAR
GLCD_SKY
GLCD_BROWN
GLCD_DARKGREEN
GLCD_NAVY
GLCD_GRAY
GLCD_DARKGRAY
ตวอยาง#include <ipst.h>
void setup(){
setTextColor(GLCD_WHITE);
glcd(0,0,"Hello");
setTextColor(GLCD_GREEN);
glcd(1,0,"World");
}void loop(){}
INEX
คาสตวอกษร
24
setTextSize()
ตวอยาง : setTextSize(4);
ขนาดตวอกษรเปน 4 เทาขนาดปกต
ปรบขนาดตวอกษร
25
ปกตเปน Mode 0
ตวอยาง : glcdMode(1);
ค าสงของ glcdMode (หมนหนาจอ)
26คาสพนหลงตวอกษร
ตวอยาง#include <ipst.h>
void setup(){
setTextBackgroundColor(GLCD_RED);
setTextColor(GLCD_YELLOW);
glcd(0,0,"Hello World");
}void loop(){}
setTextBackgroundColor(COLOR)
27glcdClear()
ตวอยาง#include <ipst.h>
void setup(){}
void loop(){
glcdClear();
delay(500);
glcdFillScreen(color[0]);
delay(500);
glcdFillScreen(color[1]);
delay(500);
glcdFillScreen(color[2]);
delay(500);
}
เคลยรหนาจอglcdFillScreen(COLOR)
เทสลงบนหนาจอทงหนา
28แสดงรปทรงเรขาคณต
glcdRect(x,y,width,height,color)
glcdFillRect(x,y,width,height,color)
glcdCircle(x,y,radius,color)
glcdFillCircle(x,y,radius,color)
glcdLine(x1,y1,x2,y2,color)
x ต าแหนงแนวนอนy ต าแหนงแนวตง
width ความกวางheight ความสงredius รศมcolor ส
29แบบทดสอบ 1
สรางวงกลมสแดงอยกงกลางจอภาพ รศมเตมจอพอด
30แบบทดสอบ 2
ลากเสน 4 เสนโดยมจดตดอยกลางจอภาพพอด
31แบบทดสอบ 3
สรางสเหลยมซอนกนดงรป
32การแสดงผลคาตวเลข
glcd(0,0,"%d",100);
33ตวแปร (ทใชงานบอยๆ)
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 1038 float
หาขอมลเพมเตมจาก reference
34หลอด LED เอาตพตดจตอลอยางงาย
35ค าสงสงคาออกเอาตพตดจตอล
out(ch,state);
สงคาสถานะ(state) 0 หรอ 1
ออกไปยงต าแหนงขา (ch)ทระบ
เชน out(17,1);
36ตวอยาง : ไฟกะพรบ
#include <ipst.h>
void setup(){ }
void loop(){
out(17,1);
delay(100);
out(17,0);
delay(100);
}
37ก าหนดเสยง : ล าโพงเปยโซ
C110/16V
SP1Piezospeaker
S+
K1SOUND
• ใชล าโพงเปยโซ มอมพแดนซ 32W
• มคาความถยาน 300Hz ถง 3000 Hz
ZX-SPEAKER
38การตอล าโพงเปยโซ
ตอชอง 16
ZX-SPEAKER
39ค าสงสรางเสยง
beep : ก าเนดเสยงความถ 500 Hz นาน 100 มลลวนาท
beep(ch);
sound : ก าเนดเสยงตามความถและชวงเวลาทก าหนดsound(ch,freq,time);
freq ก ำหนดคำควำมถเสยง
time ก ำหนดชวงเวลำก ำเนดเสยง มลลวนำท
40ตวอยาง : สรางเสยง 1
#include <ipst.h>
void setup(){
}void loop(){
beep(19);
delay(1000);
}
สรางสญญาณเสยงตดทกๆ 1 วนาท(ความถเสยง 500 Hz ดงนาน 0.1 วนาท)
41ตวอยาง : สรางเสยง 2#include <ipst.h>
void setup(){
}void loop(){
sound(19,1200,500);
delay(1000);
}
สรางสญญาณเสยงความถ 1200 Hz ดงนาน 0.5 วนาท เวนทกๆ 1 วนาท
42สวตช OK
กดเปน True
ไมกดเปน False
43ค าสง sw_OK()
sw_OK() ตรวจสอบสวตช OK บน IPST-SE 1 (True) เมอกดสวตช0 (False) เมอไมกดสวตช
หมายเหต การกดสวตชท าใหคาทอานไดจาก Knob มคาเปน 0ตวอยาง
if(sw_OK())
{
beep(19);
}
ผลลพธ เมอกดสวตชมเสยงออกล ำโพง
44ค าสง sw_OK_press()
วนรอกดสวตช OK เมอปลอยสวตช จะกระโดดไปท าค าสงบรรทดถดไป
ตวอยาง
sw_OK_press();
beep(19);
ผลลพธ : รอกดสวตช เมอกดสงเสยงออกล ำโพง
45ฟงกชน OK()
1. แสดงขอความทหนาจอ2. รอจนกระทงกดสวตช OK3. ท างานค าสงถดไป
#include <ipst.h>
void setup(){
OK();
}
void loop(){
}
ตวอยาง
46สวตช SW1
47ค าสง sw1()
sw1() ตรวจสอบสวตช SW1 บน IPST-SE 1 (True) เมอกดสวตช0 (False) เมอไมกดสวตช
ตวอยางif(sw1())
{
out(17,1);
}
48ค าสง sw1_press()
วนรอกดสวตช SW1 เมอปลอยสวตช จะกระโดดไปท าค าสงบรรทดถดไป
ตวอยาง
sw1_press();
beep(19);
ผลลพธ : รอกดสวตช SW1 เมอกดสงเสยงออกล ำโพง
49แบบทดสอบ 4
สวตชOK และ SW1
เขยนโปรแกรม ใชสวตช OK เปด ใชสวตช SW1 ปด
50แผงวงจรสวตช : ZX-SWITCH01
กดสวตช = ลอจก “0”ไมกด = ลอจก “1”
51ฟงกชน : in()อานคาขาดจตอลจากพอรตใดๆ ของบอรด IPST-SE
in(ch);
ch คอขาพอรตทตองการอานคาอนพตการคนคา คนคาสญญาณดจตอลของต าแหนงขาพอรตทอาน มคาเปน 0 หรอ 1 เทานน
52ทดสอบเขยนโปรแกรมกบ ZX-Switch01
53โมดล LED8
54วงจรของโมดล LED8
55การเชอมตอโมดล LED8 กบ IPST-SE
56ฟงกชน LED8()
สงขอมล 1 ไบตไปยงบอรด LED8
LED8(pin,dat);
pin ขาพอรตทตองการตดตอdat ขอมล 1 ไบตทจะสง
คำ 0 LED ดบหมด คำ 255 LED ตดทงหมด
128 64 32 16 8 4 2 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 12550
57
#include <ipst.h>
byte x=1;
void setup(){}
void loop(){
x=1;
while(x<128){
LED8(20,x); x=x*2;
delay(200);
}while(x>1){
LED8(20,x); x=x/2;
delay(200);
} }
ตวอยาง ไฟวงดวยโมดล LED8
58ป มปรบคาอะนาลอก knob()
หมนเพอปรบคา80-1023
59
glcd แสดงขอความทจอ GLCD ได 21 ตว 16 บรรทด (size 1) รปแบบ
glcd(x,y,*p,...)
พารามเตอรx คอต าแหนงบรรทดมคาตงแต 0-15y คอต าแหนงตวอกษรมคาตงแต 0-24*p คอขอความทตองการน ามาแสดง
คาพเศษ%d แสดงตวเลขจ านวนเตมในชวง -32,768 ถง 32,767%h แสดงตวเลขฐานสบหก%b แสดงตวเลขฐานสอง%l แสดงตวเลขจ านวนเตมในชวง -2,147,483,648 ถง 2,147,483,647%f แสดงผลตวเลขจ านวนจรง (แสดงทศนยม 3 หลก)
ค าสง GLCD
60การแสดงผลคาตวเลขดวย glcd
glcd(0,0,"%d",100);
คาพเศษ%d แสดงตวเลขจ านวนเตมในชวง -32,768 ถง 32,767%h แสดงตวเลขฐานสบหก%b แสดงตวเลขฐานสอง%l แสดงตวเลขจ านวนเตมในชวง -2,147,483,648 ถง 2,147,483,647%f แสดงผลตวเลขจ านวนจรง (แสดงทศนยม 3 หลก)
61ค าสง knob()knob ใชอานคาตวตานทานปรบคาไดบน IPST-SE ท างานเหมอน ค าสง analog(7) คาอยในชวง 80-1023
ตวอยาง
int val=0;
val=knob();
glcd("%d",val);
62ค าสง knob(x)
รปแบบknob(x); โดย x คอคา Scale
การคนคาคาทอานไดจาก knob มคาระหวาง 0 ไปจนถงคา x
ตวอยาง
int val=0;
val=knob(180);
glcd("%d ",val);
หนาจอ glcd แสดงคาตวเลข 0-180
63ค าสง knob(x,y)
รปแบบknob(x,y);
x คอคา Scale ชวงเรมตนy คอคา Scale ชวงทาย
ตวอยางglcd(1,1,"%d ",knob(10,90));
หนาจอจะแสดงคา 10-90 ตามการหมน knob()
64ตวอยาง bar graph เมอปรบ knob#include <ipst.h> // include file for IPST-SE
int x;
void setup(){
setTextSize(3);
}void loop(){
glcd(1,0,"%d ",knob(128));
glcdFillRect(0,80,knob(128),10,GLCD_RED);
glcdFillRect(knob(128),80,128-knob(128),10,GLCD_BLACK);
}
65แผงวงจร ตวตานทานปรบคาได
ตวตานทานปรบคาไดแบบตวนอน
ตวตานทานปรบคาไดแบบเลอน สญลกษณ
66แผงวงจร ตวตานทานปรบคาได
67ฟงกชน analog()
อานคาอะนาลอกจากต าแหนงพอรตทระบ (A0-A6)
analog(ch);
ch คอขาพอรตอะนาลอก (A0-A6) : ระบเฉพาะตวเลข
ผลลพธ : คำ 0-1023 (10 บต) จำกต ำแหนงขำพอรตทตองกำร
68แผงวงจรตรวจจบแสง ZX-LDR
GND
+V
OUT
LDR
R24k7
ใชตรวจจบแสงสวาง เลอกเอาตพตได 2 แบบคอ
แรงดนเอาตพตเพม เมอแสงตกกระทบมากขน
แรงดนเอาตพตลดลง เมอแสงตกกระทบมากขน
69สวตชเปดไฟกลางคน
70ตวอยาง : ไฟฉายสงเปด/ปดไฟ#include <ipst.h>
int x,y=0;
void setup(){}
void loop(){
x=analog(6);
glcd(0,0,"LDR=%d ",x);
if(x<200){
while(analog(6)<200);delay(300);
if(y==0){
out(16,1); y=1;
}else{
out(16,0);y=0;
} } }
71ตวอยาง : โปรแกรมนบคนเขาหองสมด
#include <ipst.h>
int x,y=0;
void setup(){setTextSize(3);}
void loop(){
x=analog(6);
glcd(0,0,"LDR=%d ",x);
if(x<200){
while(analog(6)<200);delay(300);
y++;
glcd(2,0,"%d ",y);
} }
72ไอซวดอณหภม MCP9701
แรงดนเอาตพตเปลยนแปลง 19.5mV/องศาค านวณจากคาอะนาลอกทอานได จากสตรTemp = (val x 0.25) - 20.51
val คาอะนาลอกทอานไดจาก IPST-SE
73ค าสง sw_ok_press()
74ไอซวดอณหภม MCP9701
75การสอสารอนกรม UART
UART1
76ค าสงส าหรบสอสารอนกรม
uart_available() ถามขอมลถกปอนเขามาเงอนไขเปนจรง
uart_getkey() รบคาขอมล 1 ไบต
uart สงขอมลหลายๆ ไบตออกไป
uart_putc สงขอมลออกไปตวเดยว
uart1_available() ถามขอมลถกปอนเขามาเงอนไขเปนจรง
uart1_getkey() รบคาขอมล 1 ไบต
uart1 สงขอมลหลายๆ ไบตออกไป
uart1_putc สงขอมลออกไปตวเดยว
77ตวอยาง : รบคาจากคอมพวเตอร LED
#include <ipst.h>
byte x;
void setup(){ setTextSize(4); }void loop(){
if(uart_available()){
x=uart_getkey();
glcd(1,1,"%h ",x);
if(x=='a'){out(17,1);}
else if(x=='b'){out(17,0);}
}}
78
บอดเรตตองเทากบ 9600
การเปดหนาตาง Serial monitor
79สอสารระหวางไมโครคอนโทรลเลอร 2 บอรด
80
#include <ipst.h>
int x;
void setup(){
}void loop(){
if(uart1_available()){
x=uart1_getkey();
glcd(1,1,"%d ",x);
}}
ตวอยางการรบ และ สงขอมล
ภาครบ#include <ipst.h>
int x=0;
void setup(){}
void loop(){
uart1_putc(x);
x++;
delay(300);
}
ภาคสง
81
82การใชงานหนยนต
83ค าสง motor() : ขบเคลอนมอเตอร
motor (CH,POW)
CH 1-2 คอมอเตอร 1 หรอ 2ALL คอทงมอเตอร 1 และ 2
POW ความเรว -100 ถง 100คาบวก เดนหนาคาลบ ถอยหลง
motor (1,80)
motor (2,-50)
84ค าสง motor_stop() : หยดมอเตอร
motor_stop หยดขบมอเตอรตามชองทก าหนด
รปแบบ
motor_stop(ch)
ch คอชอง 1 หรอ 2 และ ALL กรณหยดพรอมกน
กรณหยดมอเตอร 2 ตวพรอมกน ใชค ำสง ao() แทนได
motor_stop(1) ; มอเตอร 1 หยด
motor_stop(2) ; มอเตอร 2 หยด
ao() ; มอเตอร 2 ตวหยดพรอมกน
motor_stop(ALL) = ao()
85การขบเคลอนหนยนตเบองตน
ค าสงเดนหนาmotor(1,Speed);
motor(2,Speed);
ค าสงถอยหลงmotor(1,-Speed);
motor(2,-Speed);
86ค าสงขบเคลอนรปแบบฟงกชน
fd(Speed); เดนหนำbk(Speed); ถอยหลงsl(Speed); เลยวซำยsr(Speed); เลยวขวำ
Speed คอควำมเรวหนยนต 0-100
ao() ;หยด
tl(Speed); เลยวซำยลอเดยวtr(Speed); เลยวขวำลอเดยว
87ฟงกชนขบเคลอนหนยนต
เดนหนา
fd(speed);
ถอยหลง
bk(speed);
เลยวซาย
sl(speed); sr(speed);
tl(speed);
เลยวดานเดยว
tr(speed);
ao();speed = 0-100
motor1 motor2
motor1 motor2
motor1 motor2motor1 motor2
เลยวขวา
88การปรบหนยนตใหเคลอนทตรง
fd2(Speed1,speed2); เดนหนำ
bk2(Speed1,speed2); ถอยหลง
Speed1 คอมอเตอร 1 และ 2Speed2 คอมอเตอร 3 และ 4
89ใชสวตชควบคมการเคลอนท iBOT
in(17) = ซายin(16) = ขวา
90หนยนต บงคบดวยสวตช
#include <ipst.h>
void setup(){OK();}
void loop(){
if(!in(16)&&!in(17)){
fd(40);
}else if(!in(16)&& in(17)){
sl(40);
}else if(in(16)&&!in(17)){
sr(40);
}else {
ao();
}}
91แผงวงจรตรวจจบแสงสะทอน ZX-03
92รปแบบการตดตง ZX-03 เขาทดานหนาหนยนต
A1 = ซาย A2 = ขวา
93การตดตง ZX-03 ดานใตของหนยนต
ไมเกน 1 CM
94
#include <ipst.h>
void setup(){
OK();
} void loop(){
glcd(1,1,"L=%d ",analog(0));
glcd(3,1,"R=%d ",analog(1));
}
การอานคาสะทอนแสงของพนผว
95ผลลพธการอานคาการสะทอน
อานคาพนผวสขาวอานคาพนผวสด า
คาทอานไดเปลยนแปลงตามความสงเซนเซอรจากพน
96หนยนตเคลอนทหยดทเสนด า
#include <ipst.h>
void setup(){
OK();
fd(100);
while(analog(0)>250);
ao();
glcd(1,1,"Stop... ");
} void loop(){}
มาจากคากลางระหวางขาวกบด า
(450+50)/2
97รปแบบหนยนตเคลอนทตามเสน
1if(L>250&&R>250){
fd(60);
}
เมอซายและขวาเจอขาวเดนตรงไป
98รปแบบหนยนตเคลอนทตามเสน
2if(L<250&&R>250){
sl(60);
delay(20);
}
เมอซายเจอด าและขวาเจอขาวเลยวซาย
99รปแบบหนยนตเคลอนทตามเสน
3if(L>250&&R<250){
sr(60);
delay(20);
}
เมอซายเจอขาวและขวาเจอด าเลยวขวา
100รปแบบหนยนตเคลอนทตามเสน
4if(L<250&&R<250){
fd(60);
delay(200);
}
เมอซายเจอด าและขวาเจอด าเดนตรงขามทางแยก
101ทดสอบสนามเคลอนทตามเสนอยางงาย
102ตวอยางการท าสนามดวยเทปพนสายไฟ
103
#include <ipst.h>
int L,R;
void setup(){OK();}
void loop(){
L=analog(0);
R=analog(1);
if(L>250&&R>250){ fd(100); }
else if(L<250&&R>250){sl(100);delay(20); }
else if(L>250&&R<250){sr(100);delay(20); }
}
โปรแกรมทดสอบ
104เจอเสนตดสงเสยงตดออกล าโพง
105
#include <ipst.h>
int L,R;
void setup(){OK();}
void loop(){
L=analog(0);
R=analog(1);
if(L>250&&R>250){ fd(100);}
else if(L<250&&R<250){
fd(100);sound(16,500,200);
} else if(L<250&&R>250){sl(100);delay(20); }
else if(L>250&&R<250){sr(100);delay(20); }
}
โปรแกรมเจอเสนตดสงเสยงตดออกล าโพง
106เจอเสนตดแลวเลยวขวา
107
#include <ipst.h>
int L,R;
void setup(){OK();}
void loop(){
L=analog(0);
R=analog(1);
if(L>250&&R>250){ fd(100); }
else if(L<250&&R<250){
fd(100);sound(16,500,200);
sr(100);delay(400);
} else if(L<250&&R>250){sl(100);delay(20); }
else if(L>250&&R<250){sr(100);delay(20); }
}
โปรแกรมเจอเสนตดแลวเลยวขวา
108
108
การเลยว 90 องศาพอดเมอเจอเสนตด
109รปแบบการสรางฟงกชน
void R90(int x){
ชดค าสงy=x+2;
...}
ชอฟงกชน
ชดค าสงในฟงกชน
การใชงานฟงกชน R90(200);
ตวแปรทสงไปยงฟงกชน
110ฟงกชนเจอเสนตดเลยวขวา/ซาย
void R90(){
fd(60);
sound(16,1500,100);
while(analog(1)>250){sr(60);}
while(analog(1)<250){sr(60);}
}
111
#include <ipst.h>
int L,R;
void setup(){OK();}
void loop(){
L=analog(0); R=analog(1);
if(L>250&&R>250){ fd(100); }
else if(L<250&&R<250){R90(); }
else if(L<250&&R>250){sl(100);delay(20); }
else if(L>250&&R<250){sr(100);delay(20); }
}void R90(){
fd(60);
sound(16,1500,100);
while(analog(1)>250){sr(60);}
while(analog(1)<250){sr(60);}
}
ปรบแก เจอเสนตดแลวเลยวขวา
112
113แบตเตอรลเธยม โพลเมอร : Li-Po
แบตเตอร Li-Po
สายเชอมตอแบตเตอร
2 เซล 7.4V กระแส 1100mA จายกระแส 30 เทา ชารจ 5 เทา
แดง บวกด า ลบ
114
2 เซล 7.4Vกระแส 1100mAhจายกระแส 30 เทา
ชารจ 5 เทา
1 เซล 3.7V อนกรมกน 2 เซล = 7.4V
จายกระแสชวขณะได 1100 x 30 = 33000mA O_o!ชารจได 5 เทา 1100x5 = 5500mA ใชเวลาประมาณ 20 นาท
คณสมบตของแบตเตอร Li-Po
จายไฟ 1100 mA ตอเนองไดประมาณ 1 ชวโมง
115ขอดของแบตเตอร Li-Po
ขอดของแบตเตอรแบบ Li-Po เมอน ามาใชกบหนยนต1. มน าหนกเบาในเมอเทยบกบความจ (mAh) 2. จายกระแสไดมากกวาความจ ท าใหหนยนตมความเรวเพมขนชดเจน 3. แรงดนคงท หนยนตท างานนงตลอด จนหมดความจ 4. มหลายรปแบบขนาด ท าใหยดตดตงไดงาย 5. คายประจดวยตวเอง(Self Discharge) นอย6. ชารจเตมเรวมาก
116ขอเสยของแบตเตอร Li-Po
ขอเสยของแบตเตอรแบบ Li-Po เมอน ามาใชกบหนยนต1. มราคาแพงเมอเทยบกบแบตเตอรชนดอนๆ 2. ตองใชเครองชารจทมความเฉพาะ ซงบางแบบกมราคาแพง 3. ตองดแลเปนพเศษ ถาเกดการลดวงจรจะเกดความเสยหายใหญหลวง 4. ตองคอยดแลเรองความจ ถาใกลหมด จะเกดการสญเสยแรงดนและแบตเตอรเกดความเสยหาย ตองมการตรวจวดความจของแบตเตอรอยเสมอเมอใชงาน5. เมอไมใชงานนานๆ ตองไมใหแบต มความจดเตมคางไว ไมง นแบตจะบวม
117วดแบต Li-Po และเตอนปองกนแบตเสอม
วด Volt อยางเดยว
แสดงไฟและเตอน
วดโวลตและเตอน
118เครองชารจแบตอเนกประสงคกระแสสง
ชารจถาน Ni-MHชารจแบต Li-Poชารจแบตรถยนต
119การเชอมตอกบบอรด IPST-SE
ไฟเตอนแบตถาไฟเตอนตดตองรบชารต
120แขนจบ SM-GRIPPER
SERVO1 : SV0
SERVO2: SV1
121ขนตอนการตดตงกบ IPST-SE1. ถอดโครงหนยนต IPST-SE ออก
122ขนตอนการตดตงกบ IPST-SE
2. ตดตงเสารอง 32 มม.
123ขนตอนการตดตงกบ IPST-SE3. ยดบอรด IPST-SE เขากบ SM-GRIPPER
124ขนตอนการตดตงกบ IPST-SE4. วาง SM-GRIPPER เขากบฐานหนยนต ใชสกรขนยด
125ขนตอนการตดตงกบ IPST-SE5. น าแบตเตอร Li-Po ตดตงเขากบ SM-GRIPPER
126
SV0
SV1
ขนตอนการตดตงกบ IPST-SE6. เสยบสาย SERVO เขาทชอง SV0 และ SV1
127การใชงานเซอรโวมอเตอร
แกนหมน 180 องศา
ไฟเลยง (+) GND (-)
สญญาณ (S)
GND (-)
สญญาณ (S)
128ฟงกชนขบเซอรโวมอเตอร
servo(CH,POS);
CH ชองทใชขบ = 1 ถง 4
POS ต าแหนงองศาเซอรโว = 0-180 ,-1คา -1 หมายถงหยดจายสญญาณใหเซอรโวเซอรโวจะไมลอกแกน
129โปรแกรมทดสอบเซอรโว 1
129
#include <ipst.h>
int x;
void setup(){
OK();glcdClear();
}void loop(){
x=knob(180);
servo(1,x);
glcd(1,1,"%d ",x);
}
กางออกสด
129
หนบเขาสดหมน knob ทดสอบ
130โปรแกรมทดสอบเซอรโว 2
130
#include <ipst.h>
int x;
void setup(){
OK();glcdClear();
}void loop(){
x=knob(180);
servo(2,x);
glcd(1,1,"%d ",x);
}
ขนานกบพน
ตงฉากกบพนหมน knob ทดสอบ
131ฟงกชนใหเซอรโวอยในต าแหนง home
#include <ipst.h>
int x;
void setup(){
OK();
sHome();
}void loop(){}
void sHome(){
servo(0,43);servo(1,51);
delay(1000);
servo(0,-1);servo(1,-1);
}
132ชด Wireless Joy Stick Kit
133ตดตง Joy PSX เขากบหนยนต IPST-SE
DAT ตอกบขา 30CMD ตอกบขา 29
SEL ตอกบขา 28CLK ตอกบขา 27
134เสยบตวรบเขากบ ZX-PSX2
DAT ตอกบขา 30CMD ตอกบขา 29SEL ตอกบขา 28CLK ตอกบขา 27
135รปแบบการก าหนดสวนหวโปรแกรม
#include <ipst.h>
#include <PS2X_lib.h>
#define PS2_DAT 30
#define PS2_CMD 29
#define PS2_SEL 28
#define PS2_CLK 27
PS2X ps2x ;
int error = ps2x.config_gamepad(PS2_CLK, PS2_CMD, PS2_SEL, PS2_DAT,0,0);
พยายามเชอมตอ เกบคาผลลพธ ทตวแปร error
ถา error = 0 แสดงวาเชอมตอได
136ค าสงเรยกชอป มตางๆPSB_SELECT 0x0001
PSB_L3 0x0002
PSB_R3 0x0004
PSB_START 0x0008
PSB_PAD_UP 0x0010
PSB_PAD_RIGHT 0x0020
PSB_PAD_DOWN 0x0040
PSB_PAD_LEFT 0x0080
PSB_L2 0x0100
PSB_R2 0x0200
PSB_L1 0x0400
PSB_R1 0x0800
PSB_TRIANGLE 0x1000
PSB_CIRCLE 0x2000
PSB_CROSS 0x4000
PSB_SQUARE 0x8000
137อานคาการกด PSX แสดงผลออก GLCD#include <ipst.h>
#include <PS2X_lib.h>
#define PS2_DAT 30
#define PS2_CMD 29
#define PS2_SEL 28
#define PS2_CLK 27
PS2X ps2x ;
void setup(){
delay(1000);
setTextSize(2); glcd(0,0,"Connecting");
while(true){
int error = ps2x.config_gamepad(PS2_CLK, PS2_CMD, PS2_SEL, PS2_DAT,0,0);
if(error==0){
glcd(0,0, "OK ");
delay(1000); glcdClear(); break;
} delay(500);
}}void loop(){
ps2x.read_gamepad(0,0);
if(ps2x.Button(PSB_CIRCLE)) {glcd(1, 1, "Circle "); }
else if(ps2x.Button(PSB_CROSS)) {glcd(1, 1, "Cross ");}
else if(ps2x.Button(PSB_SQUARE)) {glcd(1, 1, "Square ");}
else if(ps2x.Button(PSB_TRIANGLE)){glcd(1, 1, "Triangle");}
else {glcd(1, 1, " "); }
delay(50);
}
138อานคาจอยอะนาลอก แสดงผลออก GLCD#include <ipst.h>
int LX,LY,RX,RY;
#include <PS2X_lib.h>
#define PS2_DAT 30
#define PS2_CMD 29
#define PS2_SEL 28
#define PS2_CLK 27
PS2X ps2x ;
void setup(){
delay(1000);
setTextSize(2); glcd(0,0,"Connecting");
while(true){
int error = ps2x.config_gamepad(PS2_CLK, PS2_CMD, PS2_SEL, PS2_DAT,0,0);
if(error==0){
glcd(0, 0, "OK ");
delay(1000); glcdClear(); break;
}delay(500);
}}void loop(){
ps2x.read_gamepad(0,0);
LX=ps2x.Analog(PSS_LX); glcd(0,0,"LX=%d ",LX);
RX=ps2x.Analog(PSS_RX); glcd(1,0,"RX=%d ",RX);
LY=ps2x.Analog(PSS_LY); glcd(2,0,"LY=%d ",LY);
RY=ps2x.Analog(PSS_RY); glcd(3,0,"RY=%d ",RY);
}
139ควบคมหนยนตดวยป ม Analog แบบงายๆ
#include <ipst.h>
int LX,LY,RX,RY;
#include <PS2X_lib.h>
#define PS2_DAT 30
#define PS2_CMD 29
#define PS2_SEL 28
#define PS2_CLK 27
PS2X ps2x ;
void setup(){
delay(1000);
setTextSize(2); glcd(0,0,"Connecting");
while(true){
int error = ps2x.config_gamepad(PS2_CLK, PS2_CMD, PS2_SEL, PS2_DAT,0,0);
if(error==0){
glcd(0, 0, "OK ");
delay(1000); glcdClear(); break;
}delay(500);
}}void loop(){
ps2x.read_gamepad(0,0);
motor(1,map(ps2x.Analog(PSS_LY),0,255,100,-100));
motor(2,map(ps2x.Analog(PSS_RY),0,255,100,-100));
delay(100);
}
140ตดตงบอรด IPST-SE บนโครง SUMO
141ตดตง ZX-03 ตรวจจบการออกนอกสนามซโม
142การพวงสายมอเตอร ดวยขวตอ IDC 2 ขา
143การพวงมอเตอร ซายและขวา
A
B
C
D
A+B C+Dmotor1 motor2
ซาย ขวา
144ซโมอยางงาย
#include <ipst.h>
int CL=500,CR=500;
void setup(){OK();}
void loop(){
fd(60);
if(analog(0)>CL){
bk(60);delay(300);
sr(60);delay(800);
}
if(analog(1)>CR){
bk(60);delay(500);
sl(60);delay(900);
}
}
145ควบคมดวยจอย PSX
146โปรแกรม APP INVENTOR
สรางโปรแกรมควบคม IPST-SE แบบไรสายผาน Android ดวยโมดล BlueStick และซอฟตแวร App Inventor 2
147เปดใชงาน App Inventor 2 (Online)
เขำไปท http://appinventor.mit.edu/ จำกนนกด Create
148ลงชอเขาใชงานดวยบญช Google
ลงชอเขาใช แนะน าการตงคา Android
กด Continue ไปตอ
149สราง Project ใหม
ตงชอ Project
150หนาตาง DesignerDesigner เปนทส าหรบวางป มหรอขอความส าหรบตดตอผใช
151หนาจอส าหรบการเขยนโคดทเรยกวา Blocks
152เชอมตอ App Inventor กบแอนดรอยด 3 แบบแบบท 1 เชอมตอดวย WIFI (เราจะเลอกใชวธน) แบบท 2 เชอมตอผานซอฟตแวรอมเลเตอร แบบท 3 เชอมตอตรงผานสาย USB
1531.ขนตอนการเชอมตอผาน WIFI1. ดาวนโหลดและตดตงโปรแกรม MIT AI2 Companion จาก Play Store บนแอนดรอยด2. ใหคอมพวเตอรและแอนดรอยดใช WIFI ชดเดยวกน
154App Inventor 2 ใหเลอกเชอมตอแบบ AI Companion
155จะมหนาตางแสดง QRCODE และเลขรหสดงรป
ทแอนดรอยดใหเปดแอพ MIT AI2 Companion เลอกแสกน QRCODE หรอปอนรหสทปรากฏกได
156
เมอกด Connect หนาจอแอนดรอยดจะเหมอนกบหนาจอออกแบบของ App Inventor
การเปลยนแปลงหนาจอสมพนธกบโปรแกรม
157การเขยนโปรแกรมเพอตดตอกบโมดลบลทธ
ขนตอนออกแบบ
158ในสวน Properties หวขอ Text เปลยนชอเปน Connect
159ลากป ม Button มาวางอกสองป ม เปลยนชอเปน ON และ OFF
160 ไปทหวขอ Connectivity เลอก BluetoothClient1 มาวาง
161ขนตอนการเขยนโคด
เลอกเปลยนหนาตางไปทหนา Blocks
เลอกเปลยนหนาตางไปทหนา Blocks
ลากบลอกชดแรกส าหรบเรยกรายการของอปกรณบลทธมาแสดง
162ขนตอนการเขยนโคดลากบลอกชดท 2 หลงจากเลอกรายการจาก List แลว ให Connect บลทธจากแอดเดรสทเลอก
ชดบลอกชดท 3 เมอกดป ม ON ใหสงคาเลข 1 ออกไปยงบลทธ
163ขนตอนการเขยนโคดชดบลอกชดท 4 เมอกดป ม OFF ใหสงคาเลข 0 ออกไปยงบลทธ
164ขนตอนการเขยนโคด
รวมโคดทงหมดกจะเปนดงน
165การตอโมดล BlueStick เขากบบอรด IPST-SE
166การเขยนโปรแกรมรบคาจาก BlueStick
บอรด มฟงกชนสอสารอนกรม ใชชอวา UART uart1()
ส าหรบสงขอความออกไป
uart1_available() ส าหรบดผลวามขอมลถกสงเขามาหรอไม
uart1_getkey() ส าหรบอานคาขอมลทถกสงมา
167 ตวอยางโปรแกรม รบคาและแสดงผลท GLCD
#include <ipst.h>
byte x;
void setup(){
setTextSize(2);
glcd(0,0,"You Press:");
setTextSize(3);
} void loop(){
if(uart1_available()){
x=uart1_getkey();
if(x==1){glcd(1,0,"ON "); } else if(x==0){ glcd(1,0,"OFF"); }
} }
168ทดสอบผลการท างานของ App ทเขยนขน
ไปท ตงคา > บลทธ ของแอนดรอยดกอน จากนนกดคนหา เพอหาโมดล BlueStick ซงอาจจะตงชอเปน Linvor หรอชออนๆ
169จบคบลทธ
ใหคลกเลอก ใส PIN ซงในทนเลอกใช 1234 เปนคามาตรฐาน
170หลงจากจบคแลว
171กด Connect และเลอกชอทสราง
172หลง Connect ไฟท BlueStick จะตดคาง
เมอกดสวตช ON ทหนาจอ ขอความท GLCD จะแสดงขอความ “ON” สวนเมอกดสวตช OFF ทหนาจอ ขอความท GLCD จะแสดงขอความ “OFF”
173การตดตง App ไปทแอนดรอยด
เมอทดสอบโคดเปนทพอใจแลว ตองการตดตง App ไปยงแอนดรอยดใหไปทเมน Build เลอกท าได 2 ทาง
174การตดตง App ไปทแอนดรอยด (วธแรก)
วธท 1 App (provide QR code for .apk) จะมหนาตางแสดง QR code ลงกดาวนโหลดไฟล .apk ส าหรบตดตง ใชได 2 ชวโมง
175การตดตง App ไปทแอนดรอยด (วธท 2)
วธท 2 บนทกไฟลลงคอมพวเตอร แลวคอยคดลอกใสเครองไปตดตง ซงอาจจะไปตดตงเครองอนๆกได