More Related Content Similar to เริ่มต้นใช้งานชุดกล่องสมองกล IPST-SE (15) More from Innovative Experiment Co.,Ltd. (19) เริ่มต้นใช้งานชุดกล่องสมองกล IPST-SE5. 5ชุดอุปกรณ์เพิ่มเติมใน มาตรฐาน 3
Infrared Remote Control
ZX-IRM
แผงโมดูลรับแสงอินฟราเรด GP2Y0A41
โมดูลวัดระยะทางด้วยแสงอินฟราเรด
แผงวงจรขับรีเลย์ Relay4i
พร้อม Adaptor
ZX-irLED
แผงวงจรกาเนิดแสงอินฟราเรด
ZX-Photo
แผงวงจรจรวจจับแสงอินฟราเรด
ZX-DSP4
แผงวงจรแสดงตัวเลข 7 ส่วน 4 หลัก
7. 7
PORT DIGITAL RESET Serial1
จอสี
128x160 จุด
มอเตอร์ไฟตรง
ปุ่มปรับ knob
สวิตช์ OK
สวิตช์ SW1
ไฟแบตอ่อน
10. 10
1 2 3
4 5
หลังจากนี้จะมี
หน้าต่างติดตั้ง
ไดรเวอร์
ห้าม Cancel
ติดตั้งซอฟต์แวร์
23. 23
glcdแสดงข้อความที่จอ GLCD ได้ 21 ตัว 16 บรรทัด (size 1)
รูปแบบ
glcd(x,y,*p,...)
พารามิเตอร์
x คือตาแหน่งบรรทัดมีค่าตั้งแต่ 0-15
y คือตาแหน่งตัวอักษรมีค่าตั้งแต่ 0-24
*p คือข้อความที่ต้องการนามาแสดง
ค่าพิเศษ
%d แสดงตัวเลขจานวนเต็มในช่วง -32,768 ถึง 32,767
%h แสดงตัวเลขฐานสิบหก
%b แสดงตัวเลขฐานสอง
%l แสดงตัวเลขจานวนเต็มในช่วง -2,147,483,648 ถึง 2,147,483,647
%f แสดงผลตัวเลขจานวนจริง (แสดงทศนิยม 3 หลัก)
คาสั่ง GLCD
25. 25
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_RED);
glcd(0,0,"Hello");
setTextColor(GLCD_GREEN);
glcd(1,0,"World");
}
void loop(){}
INEX
ค่าสีตัวอักษร
colorRGB(R5,G6,B5)
colorRGB(31,63,31)
31. 31แสดงรูปทรงเรขาคณิต : วงกลม
x ตำแหน่งจุดศูนย์กลำงวงกลมแนวนอน
y ตำแหน่งจุดศูนย์กลำงวงกลมแนวตั้ง
radius รัศมีของวงกลม
color สี
x,y
radius
Fill
glcdCircle(x,y,radius,color)
glcdFillCircle(x,y,radius,color)
32. 32แสดงรูปทรงเรขาคณิต : เส้นตรง
x1 จุดเริ่มต้นแนวนอน
y1 จุดเริ่มต้นแนวตั้ง
x2 จุดสิ้นสุดแนวตั้ง
y2 จุดสิ้นสุดแนวนอน
color สี
x1,y1
glcdLine(x1,y1,x2,y2,color)
x2,y2
33. 33แสดงรูปทรงเรขาคณิต : เส้นโค้ง
x จุดเริ่มต้นแนวนอน
y จุดเริ่มต้นแนวตั้ง
r รัศมีเส้นโค้ง
startAngle มุมเริ่ม
endAngle มุมสิ้นสุด
color สี
x,y
glcdArc(x,y,r,startAngle,wndAngle,color)
startAngle(0)
r
endAngle(90)
glcdArc(64,80,64,0,90,GLCD_RED);
46. 46คาสั่งสร้างเสียง
beep : กาเนิดเสียงความถี่ 500 Hz นาน 100 มิลลิวินาที
beep(ch);
sound : กาเนิดเสียงตามความถี่และช่วงเวลาที่กาหนด
sound(ch,freq,time);
freq กำหนดค่ำควำมถี่เสียง
time กำหนดช่วงเวลำกำเนิดเสียง มิลลิวินำที
47. 47ตัวอย่าง : สร้างเสียง 1
#include <ipst.h>
void setup(){
}
void loop(){
beep(19);
delay(1000);
}
สร้างสัญญาณเสียงติ๊ดทุกๆ 1 วินาที
(ความถี่เสียง 500 Hz ดังนาน 0.1 วินาที)
48. 48ตัวอย่าง : สร้างเสียง 2
#include <ipst.h>
void setup(){
}
void loop(){
sound(19,1200,500);
delay(1000);
}
สร้างสัญญาณเสียงความถี่ 1200 Hz ดังนาน 0.5 วินาที
เว้นทุกๆ 1 วินาที
https://pastebin.com/CgGdEiNX
IPST-SE MARIO SOUND EXAMPLE
50. 50คาสั่ง sw_OK()
sw_OK() ตรวจสอบสวิตช์ OK บน IPST-SE
1 (True) เมื่อกดสวิตช์
0 (False) เมื่อไม่กดสวิตช์
หมายเหตุ การกดสวิตช์ทาให้ค่าที่อ่านได้จาก Knob มีค่าเป็น 0
ตัวอย่าง
if(sw_OK())
{
beep(19);
}
ผลลัพธ์ เมื่อกดสวิตช์มีเสียงออกลำโพง
63. 63ฟังก์ชั่น 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 1255
0
64. 64
#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
66. 66
glcdแสดงข้อความที่จอ GLCD ได้ 21 ตัว 16 บรรทัด (size 1)
รูปแบบ
glcd(x,y,*p,...)
พารามิเตอร์
x คือตาแหน่งบรรทัดมีค่าตั้งแต่ 0-15
y คือตาแหน่งตัวอักษรมีค่าตั้งแต่ 0-24
*p คือข้อความที่ต้องการนามาแสดง
ค่าพิเศษ
%d แสดงตัวเลขจานวนเต็มในช่วง -32,768 ถึง 32,767
%h แสดงตัวเลขฐานสิบหก
%b แสดงตัวเลขฐานสอง
%l แสดงตัวเลขจานวนเต็มในช่วง -2,147,483,648 ถึง 2,147,483,647
%f แสดงผลตัวเลขจานวนจริง (แสดงทศนิยม 3 หลัก)
คาสั่ง GLCD
67. 67การแสดงผลค่าตัวเลขด้วย glcd
glcd(0,0,"%d",100);
ค่าพิเศษ
%d แสดงตัวเลขจานวนเต็มในช่วง -32,768 ถึง 32,767
%h แสดงตัวเลขฐานสิบหก
%b แสดงตัวเลขฐานสอง
%l แสดงตัวเลขจานวนเต็มในช่วง -2,147,483,648 ถึง 2,147,483,647
%f แสดงผลตัวเลขจานวนจริง (แสดงทศนิยม 3 หลัก)
69. 69คาสั่ง knob(x)
รูปแบบ
knob(x); โดย x คือค่า Scale
การคืนค่า
ค่าที่อ่านได้จาก knob มีค่าระหว่าง 0 ไปจนถึงค่า x
ตัวอย่าง
int val=0;
val=knob(180);
glcd("%d ",val);
หน้าจอ glcd แสดงค่าตัวเลข 0-180
71. 71ตัวอย่าง 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);
}
74. 74
8 บิต หมายถึงข้อมูลไบนารี่ 8 บิต
เกิดค่าที่เปลี่ยนแปลงได้จาก 0 ถึง 255 28
10 บิต หมายถึงข้อมูลไบนารี่ 10 บิต
เกิดค่าที่เปลี่ยนแปลงได้จาก 0 ถึง 1023 210
ความละเอียดเพิ่มขึ้น 2 บิต
ความละเอียดเพิ่มขึ้น 4 เท่า
Vdigital = Data x V
Full Data
Vdigital = 512 x 5
1023
Vdigital = 2.5 V
80. 80ตัวอย่าง : ไฟฉายสั่งเปิ ด/ปิ ดไฟ
#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;
} } }
88. 88ชุดคาสั่งเพื่ออ่านค่า โมดูล GP2Y0A41
ฟังก์ชั่น getdist เพื่ออ่านค่าระยะทางในหน่วยเซนติเมตร
ตัวอย่าง
dis = getdist(0);
เป็นการอ่านค่าระยะทางจาก GP2D120 ที่ต่ออยู่กับขา PA0
ขอบเขตกำรทำงำนจะอยู่ในช่วง 4 ถึง 32 เซนติเมตรตำมคุณสมบัติของผู้ผลิต
ดังนั้นค่ำที่อ่ำนได้ที่อยู่นอกขอบเขตจะถือว่ำไม่สำมำรถนำมำประเมินได้
94. 94ตัวอย่าง : รับค่าจากคอมพิวเตอร์ 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);}
}
}
97. 97
#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);
}
ภาคส่ง
100. 100การส่งข้อมูล Serial กับคอมพิวเตอร์
Serial.print(78, BIN) ให้ค่าเป็น "1001110"
Serial.print(78, OCT) ให้ค่าเป็น "116"
Serial.print(78, DEC) ให้ค่าเป็น "78"
Serial.print(78, HEX) ให้ค่าเป็น "4E"
Serial.println(1.23456, 0) ให้ค่าเป็น "1"
Serial.println(1.23456, 2) ให้ค่าเป็น "1.23"
Serial.println(1.23456, 4) ให้ค่าเป็น "1.2346");
Serial.begin(BAUD) เริ่มต้นใช้งานการสื่อสาร
BAUD ความเร็วในการสื่อสารข้อมูล บิตติอวินาที
Serial.write(1Byte) ส่งข้อมูล 1 ไบต์,หรือข้อความง่ายๆ
Serial.print() ส่งข้อความพร้อมพารามิเตอร์ต่างๆ
Serial.println() ส่งข้อความพร้อมพารามิเตอร์ต่างๆ และขึ้นบรรทัดใหม่
Serial
101. 101การรับข้อมูล Serial กับคอมพิวเตอร์
Serial.read() ส่งข้อความพร้อมพารามิเตอร์ต่างๆ และขึ้นบรรทัดใหม่
Serial.available() คืนค่าจานวนไบต์ของข้อมูลที่ได้รับ ไม่มีข้อมูลเป็น 0
#include <ipst.h>
int x = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
x = Serial.read();
Serial.print("I received: ");
Serial.println(x, DEC);
}
}
104. 104
#include <ipst.h>
byte x;
void setup(){
setTextSize(3);
Serial.begin(9600);
}
void loop(){
if(Serial.available()){
x=Serial.read();
glcd(0,0,"%h ",x);
if(x==0x31){fd(50); }
if(x==0x32){bk(50); }
}
}
ตัวอย่างทดสอบรับข้อมูล
ENTER
เพื่อส่ง
109. 109ตัวอย่าง การส่งข้อมูลเมื่อ Click เมาส์
import processing.serial.*;
Serial myPort;
byte x;
void setup(){
String COM = Serial.list()[0];
myPort = new Serial(this, COM, 9600);
}
void draw(){
if(mousePressed){
myPort.write(x);
x++;
delay(100);
}
}
#include <ipst.h>
byte x;
void setup(){
setTextSize(3);
Serial.begin(9600);
}
void loop(){
if(Serial.available()){
x=Serial.read();
glcd(0,0,"%h ",x);
}
}
110. 110ตัวอย่าง การกดปุ่มที่คีย์บอร์ด
import processing.serial.*;
Serial myPort;
byte x;
void setup(){
String COM = Serial.list()[0];
myPort = new Serial(this, COM, 9600);
}
void draw(){}
void keyPressed(){
if(key==CODED){
if (keyCode==UP){myPort.write(1);}
else if(keyCode==DOWN){myPort.write(2);}
else if(keyCode==LEFT){myPort.write(3);}
else if(keyCode==RIGHT){myPort.write(4);}
}
}
111. 111ตัวอย่าง การรับข้อมูล
import processing.serial.*;
Serial myPort;
int x;
void setup(){
String COM = Serial.list()[0];
myPort=new Serial(this,COM,9600);
size(200,200);
textSize(30);
fill(255,255,255);
}
void draw(){
if(myPort.available()>0){
x=myPort.read();
background(0,0,0);
text(x,50,50);
}
}
#include <ipst.h>
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.write(knob(100));
delay(500);
}
นาค่าที่อ่านจาก Knob แสดงที่หน้าจอคอมพิวเตอร์
123. 123
DSP4S: Serial 4 Digits 7-Segment display
รูปแบบฟังก์ชั่นในไลบารี่ dsp4s.h
เริ่มต้นเรียกใช้ไลบารี่ดังนี้
#include <dsp4s.h>
pinSegment(int pinPort);
ใช้ระบุขำที่เชื่อมต่อกับ DSP4S ก่อนส่งฟังก์ชั่นอื่นๆ
ตัวอย่าง
pinSegment(6); // กำหนดพอร์ตเชื่อมต่อที่ขำ 6
124. 124
Segment(signed int Value);
กลุ่มฟังก์ชันแสดงผล
ตัวอย่าง
Segment(1234); // แสดงเลข 1 2 3 4 เรียงกัน 4 หลัก
SegmentShow ( );
เปิดให้ส่วนแสดงผลทุกหลัก ส่งออกมำแสดงผลได้
SegmentShow ( digit);
1 เปิดแสดงหลักที่ 1
2 เปิดแสดงหลักที่ 2
3 เปิดแสดงหลักที่ 3
4 เปิดแสดงหลักที่ 4
COLON เปิดแสดงสัญลักษณ์ :
DEGREE เปิดแสดงสัญลักษณ์ ’
ALL เปิดแสดงทั้งหมด
SegmentHide ( );
ซ่อนกำรแสดงผล
SegmentHide (digit );
1 เปิดแสดงหลักที่ 1
2 เปิดแสดงหลักที่ 2
3 เปิดแสดงหลักที่ 3
4 เปิดแสดงหลักที่ 4
COLON เปิดแสดงสัญลักษณ์ :
DEGREE เปิดแสดงสัญลักษณ์ ’
ALL เปิดแสดงทั้งหมด
128. 128
ตัวอย่างคาสั่งรับรีโมตคอนโทรล
#include <ipst.h> // IPST-SE Board
#include <IRremote.h> // Include IR remote control library
IRrecv irrecv(24);
decode_results results;
void setup(){
setTextSize(2); // Set text size of GLCD-XT
glcdClear(); // Clear screen of GLCD-XT
irrecv.enableIRIn(); // Enable the IR module operation
}
void loop(){
if (irrecv.decode(&results)){
if (results.decode_type == SONY){
if(results.value == 16){ glcd(0,0,"Button 1"); }
else if(results.value == 2064){ glcd(0,0,"Button 2"); }
else if(results.value == 1040){glcd(0,0,"Button 3"); }
else if(results.value == 3088){ glcd(0,0,"Button 4"); }
}
irrecv.resume();
}
}
130. 130เปิ ดใช้งาน App Inventor 2 (Online)
เข้ำไปที่ http://appinventor.mit.edu/ จำกนั้นกด Create
135. 135เชื่อมต่อ App Inventor กับแอนดรอยด์ 3 แบบ
แบบที่ 1 เชื่อมต่อด้วย WIFI (เราจะเลือกใช้วิธีนี้)
แบบที่ 2 เชื่อมต่อผ่านซอฟต์แวร์อีมูเลเตอร์
แบบที่ 3 เชื่อมต่อตรงผ่านสาย USB
150. 150ตัวอย่างโปรแกรม รับค่าและแสดงผลที่ 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"); }
}
}
155. 155หลัง Connect ไฟที่ BlueStick จะติดค้าง
เมื่อกดสวิตช์ ON ที่หน้าจอ ข้อความที่ GLCD จะแสดงข้อความ “ON”
ส่วนเมื่อกดสวิตช์ OFF ที่หน้าจอ ข้อความที่ GLCD จะแสดงข้อความ
“OFF”
157. 157การติดตั้ง App ไปที่แอนดรอยด์ (วิธีแรก)
วิธีที่ 1 App (provide QR code
for .apk) จะมีหน้าต่างแสดง QR
code ลิงก์ดาวน์โหลดไฟล์ .apk
สาหรับติดตั้ง ใช้ได้ 2 ชั่วโมง
159. 159
กฤษดา ใจเย็น KRITSADA JAIYEN
บริษัท อินโนเวตีฟ เอ็กเพอริเมนต์ จากัด
108 ซอยสุขุมวิท 101/2 ถ.สุขุมวิท
แขวงบางนา เขตบางนา กรุงเทพฯ 10260
โทรศัพท์ 02-7477001-4 โทรสำร 02-7477005
Email : kritsada@inex.co.th
www.inex.co.th
doc.inex.co.th