สวัสดีครับพี่น้อง
วันนี้ผมได้รับมอบหมายงานเร่งด่วนมา ก็เลยต้องลุกขึ้นมาทำทันที(แต่ก็ยังมีเวลามาเขียนบทความ 55)
เนื่องจากในเนื้องานมีความจำเป็นต้องใช้ serial ที่มีความเร็วไม่ปกติ (non-standard baud-rate)
มีหน่วยเป็น bit per second (bps) จึงได้ค้นหาข้อมูลในอากู๋เหมือนเดิม
ก็ได้เห็นตัวอย่างในการเขียนดังนี้
ปกติ arduino จะมีขา 0 และ 1 สำหรับ serial มาให้อยู่แล้ว แต่ในกรณีที่เราอาจจะจำเป็นต้องใช้ serial เพิ่มเติม(ช่องที่2) ก็จะมีขา 10 และ 11 ไว้ให้ใช้เป็น serial ได้เหมือนกัน
โดยมี source code ดังนี้
/*
Software serial multple serial test
Receives from the hardware serial, sends to software serial.
Receives from software serial, sends to hardware serial.
The circuit:
* RX is digital pin 10 (connect to TX of other device)
* TX is digital pin 11 (connect to RX of other device)
Note:
Not all pins on the Mega and Mega 2560 support change interrupts,
so only the following can be used for RX:
10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69
Not all pins on the Leonardo support change interrupts,
so only the following can be used for RX:
8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).
created back in the mists of time
modified 25 May 2012
by Tom Igoe
based on Mikal Hart's example
This example code is in the public domain.
*/
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(57600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.println("Goodnight moon!");
// set the data rate for the SoftwareSerial port
mySerial.begin(4800);
mySerial.println("Hello, world?");
}
void loop() // run over and over
{
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
}
จากตัวอย่าง source code ด้านบน
softwareserial myserial(10,11); ตั้งให้ขา 10 และ 11 ให้เป็น rx, tx โดยใช้ชื่อว่า myserial
serial.begin(57600); เป็นการตั้งค่า serial port ที่ต่อกับ usb
myserial.begin(4800); ตั้งค่า serial อีกช่องหนึ่ง
โดยใน loop มีการเขียนโปรแกรมวนไม่สิ้นสุด
ถ้า myserial มีค่าที่รับได้ ก็จะส่งออกที่ serial
ถ้า serial มีค่าที่รับได้ ก็จะส่งออกที่ myserial พูดง่ายๆคือ รับได้ช่องนึง ส่งออกอีกช่องนึง
แล้วก็ step เดิม ไปที่ menu
sketch - verify/compile
file - upload
tools - serial monitor
เราก็จะเห็นคำว่า "Goodnight moon!"
ที่เราทำอยู่ในขณะนี้คือข้อมูลที่ออกมาจากตัวแปลที่ชื่อ Serial ที่เราต่อผ่าน usb port
ส่วนอีก port นึง ขา 10, 11 สัญญาณที่ออกมาจากขาทั้ง 2 ยังเป็นระดับ TTL อยู่ คือระดับ 0-5 Volt
เราจำเป็นต้องต่อเข้าไอซี max232 เสียก่อน จึงจะสามารถส่งข้อมูลเข้า comport ได้
บอร์ดที่เห็นในภาพ เป็นบอร์ดที่ผมทำเอง ซึ่งก็เป็นแค่วงจร 232 ตามปกติ
ทีนี้เราก็สามารถต่อ myserial เข้ากับ comport ของเราได้แล้ว
ต่อไปเราก็ต้องหาโปรแกรมที่จะรับข้อมูล comport มาแสดงผล
ในที่นี้ผมขอไม่อธิบายการใช้งานโปรแกรมแสดงผล comport นะครับ แต่จะอธิบายแค่การแสดงผลเพียงอย่างเดียว
ให้เราเปิดโปรแกรม serial monitor พร้อมกับโปรแกรมแสดงผล serial ขึ้นมาพร้อมกัน
จากนั้นลองใส่ค่าอะไรก็ได้ลงไปในช่องที่อยู่ด้านบนของ serial monitor
แล้วกด send เราก็จะเห็นว่าข้อมูลถูกส่งออกไปอีก port นึง แล้วไปแสดงให้เห็นในโปรแกรมแสดงผล comport อีกด้านนึง
ในรูปจะเห็นได้ว่าข้อมูลถูกส่งมาไม่ครบ อาจจะเป็นเพราะว่าผู้เขียนไม่ได้ใช้ interrupt ในการรับค่า จึงทำให้ค่าบางค่าหายไป
และเมื่อเราลองส่งข้อมูลจากโปรแกรมแสดงผล comport ไปยัง serial monitor ก็สามารถทำได้ ไม่มีปัญหา
และเพื่อให้ได้ตรงตามเป้าหมายที่เราตั้งไว้ ก็คือ สามารถสื่อสารโดยใช้ non-standard baudrate ได้
ผู้เขียนจึงได้ปรับ baudrate ที่โปรแกรมแสดงผล serial และปรับเปลี่ยน code ให้เป็น baudrate เดียวกัน
แต่ว่าทดลองหลายรอบแล้ว ไม่สำเร็จ ก็เลยปรับเปลี่ยนยุทธวิธีใหม่ คือ
ลองใช้ขา 0 และ 1 เป็น non-standard baudrate แทน และใช้ขา 10, 11 เป็น standard baudrate
ได้ผลว่าสามารถใช้งานได้ตามเป้าประสงค์ 100%
และจากการทดสอบหลายๆครั้ง พบว่า ขา 0,1 จะสามารถรับข้อมูลได้ครบถ้วนกว่าขา 10, 11
ตัวอย่าง source code ครัช
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(5760);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.println("Goodnight moon!");
// set the data rate for the SoftwareSerial port
mySerial.begin(9600);
mySerial.println("Hello, world?");
}
void loop() // run over and over
{
if (mySerial.available())
mySerial.write(mySerial.read());
if (Serial.available())
Serial.write(Serial.read());
}
ที่มา
http://arduino.cc/en/Tutorial/SoftwareSerialExample
http://arduino.cc/en/Serial/begin
kong arduino
ติดต่อผู้เขียน
บทความนี้ กล่าวถึง arduino uno เป็นส่วนใหญ่ โดยพัฒนาผ่าน windows
หรือ https://www.facebook.com/kongimi
วันศุกร์ที่ 19 กันยายน พ.ศ. 2557
วันเสาร์ที่ 13 กันยายน พ.ศ. 2557
ทดลอง a2d
สวัสดีครัชพี่น้อง
วันนี้ก็วันอาทิตย์ ที่ดูเหมือนจะเป็นวันว่างงาน แต่ก็ยังมีภาระมากมายรออยู่เต็มไปหมด เลยอยู่นิ่งๆไม่ได้ ต้องมาเขียนบทความสักหน่อย :)
คราวที่แล้วลอง GPIO ไปแล้ว วันนี้เลยมาลอง a2d ดีกว่า
ก่อนอื่นก็ต้องเปิด arduino.exe ขึ้นมาก่อน
จากนั้นไปที่ menu file - examples - 01basic - AnalogReadSerial
เราก็จะได้ code ตามภาพที่2
จากนั้นก็สเต็ปเดิมครับ menu sketch - verify/compile
menu tools - board - arduino uno (เลือกตามบอร์ดที่เราเล่นนะครัช)
menu tools - serial - com3 (เลือกตาม comport ที่เราต่อไว้นะครัช)
menu file - upload
ตอนนี้บอร์ดของเราก็ทำงานโดยการอ่านค่า analogA0 แล้วส่งค่ามายัง serial port
แต่ด้วยความที่ผมไม่ได้เล่นมาสักพักนึง อ่าว แล้วเราจะดูค่าได้ยังไงนะ ต่อขาไหนนะ งงอยู่พักนึง
ก็ได้คำตอบจากบล็อกตัวเองนี่แหละ
ก็ต้องดูก่อนว่าขา A0 อยู่ตรงไหน
แล้วต่อขา A0 เข้ากับ ground
จากนั้นไปที่ tools - serial monitor หรือกด ctrl+shift+m
เราจะเห็นเลขศูนย์วิ่งอยู่ตลอด เพราะว่าเราต่อ A0 กับกราวด์ ซึ่งมี 0 โวลต์อยู่
ก็เลยอยากลองเอา A0 ต่อกับ 5V ดูบ้าง แต่ถ้าต่อตรงๆกลัวว่าบอร์ดจะพัง ก็เลยเอา r มาอนุกรมไว้ก่อน ค่าประมาณ 240โอห์ม
ค่าที่อ่านได้จะอยู่ที่ประมาณ 1022-1023
ที่อ่านได้ 1023 เนื่องจากเป็น a2d 10bit (2ยกกำลัง10) ค่าที่อ่านได้มีค่าตั้งแต่ 0 - 1023 (1024ค่า)
วันนี้ก็ทดลองกันเบาๆนะครับ วันหน้าเดี๋ยวลองอย่างอื่นต่อ
วันนี้ก็วันอาทิตย์ ที่ดูเหมือนจะเป็นวันว่างงาน แต่ก็ยังมีภาระมากมายรออยู่เต็มไปหมด เลยอยู่นิ่งๆไม่ได้ ต้องมาเขียนบทความสักหน่อย :)
คราวที่แล้วลอง GPIO ไปแล้ว วันนี้เลยมาลอง a2d ดีกว่า
ก่อนอื่นก็ต้องเปิด arduino.exe ขึ้นมาก่อน
จากนั้นไปที่ menu file - examples - 01basic - AnalogReadSerial
เราก็จะได้ code ตามภาพที่2
จากนั้นก็สเต็ปเดิมครับ menu sketch - verify/compile
menu tools - board - arduino uno (เลือกตามบอร์ดที่เราเล่นนะครัช)
menu tools - serial - com3 (เลือกตาม comport ที่เราต่อไว้นะครัช)
menu file - upload
ตอนนี้บอร์ดของเราก็ทำงานโดยการอ่านค่า analogA0 แล้วส่งค่ามายัง serial port
แต่ด้วยความที่ผมไม่ได้เล่นมาสักพักนึง อ่าว แล้วเราจะดูค่าได้ยังไงนะ ต่อขาไหนนะ งงอยู่พักนึง
ก็ได้คำตอบจากบล็อกตัวเองนี่แหละ
ก็ต้องดูก่อนว่าขา A0 อยู่ตรงไหน
แล้วต่อขา A0 เข้ากับ ground
จากนั้นไปที่ tools - serial monitor หรือกด ctrl+shift+m
เราจะเห็นเลขศูนย์วิ่งอยู่ตลอด เพราะว่าเราต่อ A0 กับกราวด์ ซึ่งมี 0 โวลต์อยู่
ก็เลยอยากลองเอา A0 ต่อกับ 5V ดูบ้าง แต่ถ้าต่อตรงๆกลัวว่าบอร์ดจะพัง ก็เลยเอา r มาอนุกรมไว้ก่อน ค่าประมาณ 240โอห์ม
ค่าที่อ่านได้จะอยู่ที่ประมาณ 1022-1023
ที่อ่านได้ 1023 เนื่องจากเป็น a2d 10bit (2ยกกำลัง10) ค่าที่อ่านได้มีค่าตั้งแต่ 0 - 1023 (1024ค่า)
วันนี้ก็ทดลองกันเบาๆนะครับ วันหน้าเดี๋ยวลองอย่างอื่นต่อ
วันพุธที่ 6 สิงหาคม พ.ศ. 2557
ทดลอง I/O port
สวัสดีครัชพี่น้อง
วันนี้ได้ทดลองเล่น arduino uno โดยควบคุม I/O port ตามปกติ ง่ายๆทั่วไป
โดยเอามาต่อกับ Isolate Relay สำเร็จรูป ดังรูป
โดยบอร์ด Relay ที่ซื้อมานี้ จะแสดงผล LED ให้สว่างเมื่อมีการสั่ง on Relay และไม่สว่างเมื่อ off ทำให้สังเกตได้ง่ายว่า Relay ทำงานอยู่หรือไม่
และได้เขียน code ต่อไปนี้
int Relay1 = 12;
int Relay2 = 13;
// the setup routine runs once when you press reset:
void setup()
{
// initialize the digital pin as an output.
pinMode(Relay1, OUTPUT);
pinMode(Relay2, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop()
{
digitalWrite(Relay1, HIGH); // turn the RELAY on(HIGH is the voltage level)
digitalWrite(Relay2, HIGH);
delay(1000); // wait for a second
digitalWrite(Relay1, LOW); // turn the RELAY off by making the voltage LOW
digitalWrite(Relay2, LOW);
delay(1000); // wait for a second
}
ก็สามารถสั่งงานได้ปกติ เมื่อต่อ vcc 5V
ด้วยความนึกสนุก ลองใช้ vcc 3.3V แทน ก็สั่งงานได้เหมือนกัน แต่รู้สึกเหมือนว่าจะสั่งงานได้ช้ากว่า 5V นิดหน่อย เพราะว่าเสียงของ Relay ที่เปิด/ปิด ฟังได้ชัดเจนว่า เปิด/ปิด ไม่พร้อมกัน ไม่เหมือน 5V เปิด/ปิด พร้อมกันเป๊ะ
และเหลือบไปเห็น port A0-A5 ซึ่งเป็น port Analog to Digital (แปลงสัญญาณจาก Analog เป็น Digital)
ก็คิดว่าเราสามารถนำมาใช้เป็น I/O port ตามปกติได้หรือไม่
ทดลองครั้งแรก ปรากฎว่าใช้งานไม่ได้ :(
ก็เลยไป search หาข้อมูลจากอากู๋ ดู (http://forum.arduino.cc/index.php/topic,158910.0.html) ได้ผลว่าจริงๆแล้วเราต้องสั่งงานที่ขา 18, 19 ไม่ใช่ 27, 28 ซึ่งก็ยังไม่เข้าใจอยู่ดีว่าทำไมถึงเป็น pin 18,19 ท่านใดรู้ช่วยตอบหน่อยนะคร้าบบบ
int Relay2 = 19;
// the setup routine runs once when you press reset:
void setup()
{
// initialize the digital pin as an output.
pinMode(Relay1, OUTPUT);
pinMode(Relay2, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop()
{
digitalWrite(Relay1, HIGH); // turn the RELAY on(HIGH is the voltage level)
digitalWrite(Relay2, HIGH);
delay(1000); // wait for a second
digitalWrite(Relay1, LOW); // turn the RELAY off by making the voltage LOW
digitalWrite(Relay2, LOW);
delay(1000); // wait for a second
}
วันนี้ได้ทดลองเล่น arduino uno โดยควบคุม I/O port ตามปกติ ง่ายๆทั่วไป
โดยเอามาต่อกับ Isolate Relay สำเร็จรูป ดังรูป
รูปที่ 1 ต่อ Isolate Relay กับ Arduino
โดยบอร์ด Relay ที่ซื้อมานี้ จะแสดงผล LED ให้สว่างเมื่อมีการสั่ง on Relay และไม่สว่างเมื่อ off ทำให้สังเกตได้ง่ายว่า Relay ทำงานอยู่หรือไม่
และได้เขียน code ต่อไปนี้
int Relay1 = 12;
int Relay2 = 13;
// the setup routine runs once when you press reset:
void setup()
{
// initialize the digital pin as an output.
pinMode(Relay1, OUTPUT);
pinMode(Relay2, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop()
{
digitalWrite(Relay1, HIGH); // turn the RELAY on(HIGH is the voltage level)
digitalWrite(Relay2, HIGH);
delay(1000); // wait for a second
digitalWrite(Relay1, LOW); // turn the RELAY off by making the voltage LOW
digitalWrite(Relay2, LOW);
delay(1000); // wait for a second
}
รูปที่ 2 Relay ทำงานปกติ
ก็สามารถสั่งงานได้ปกติ เมื่อต่อ vcc 5V
ด้วยความนึกสนุก ลองใช้ vcc 3.3V แทน ก็สั่งงานได้เหมือนกัน แต่รู้สึกเหมือนว่าจะสั่งงานได้ช้ากว่า 5V นิดหน่อย เพราะว่าเสียงของ Relay ที่เปิด/ปิด ฟังได้ชัดเจนว่า เปิด/ปิด ไม่พร้อมกัน ไม่เหมือน 5V เปิด/ปิด พร้อมกันเป๊ะ
และเหลือบไปเห็น port A0-A5 ซึ่งเป็น port Analog to Digital (แปลงสัญญาณจาก Analog เป็น Digital)
ก็คิดว่าเราสามารถนำมาใช้เป็น I/O port ตามปกติได้หรือไม่
ทดลองครั้งแรก ปรากฎว่าใช้งานไม่ได้ :(
ก็เลยไป search หาข้อมูลจากอากู๋ ดู (http://forum.arduino.cc/index.php/topic,158910.0.html) ได้ผลว่าจริงๆแล้วเราต้องสั่งงานที่ขา 18, 19 ไม่ใช่ 27, 28 ซึ่งก็ยังไม่เข้าใจอยู่ดีว่าทำไมถึงเป็น pin 18,19 ท่านใดรู้ช่วยตอบหน่อยนะคร้าบบบ
รูปที่ 3 ต่อ Relay กับขา 18,19
int Relay1 = 18;int Relay2 = 19;
// the setup routine runs once when you press reset:
void setup()
{
// initialize the digital pin as an output.
pinMode(Relay1, OUTPUT);
pinMode(Relay2, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop()
{
digitalWrite(Relay1, HIGH); // turn the RELAY on(HIGH is the voltage level)
digitalWrite(Relay2, HIGH);
delay(1000); // wait for a second
digitalWrite(Relay1, LOW); // turn the RELAY off by making the voltage LOW
digitalWrite(Relay2, LOW);
delay(1000); // wait for a second
}
วันอังคารที่ 5 สิงหาคม พ.ศ. 2557
เริ่มต้น arduino
สวัสดีครับ ทุกท่าน
หลังจากที่เราได้เรียนรู้ Linux Embedded Board กันไปแล้ว
ไม่ว่าจะเป็น Raspberry Pi หรือ Beagle bone black ทีนี้ก็ได้เวลาของบอร์ดเล็กบอร์ดน้อยที่สามารถนำมาใช้งานได้หลากหลาย
ตามความต้องการของผู้เล่น นั่นก็คือ ไมโครคอนโทรลเลอร์ Arduino
รูปที่ 01 Logo
รูปที่02 บอร์ด
Arduino
สำหรับผู้ที่ยังไม่ค่อยเข้าใจว่าไมโครคอนโทรลเลอร์คืออะไร
จะขออธิบายแบบย่อๆให้อ่านกันก่อน
ไมโครคอนโทรลเลอร์ ถ้าเปรียบเทียบกับคน จะมี MCU ที่เปรียบเสมือนสมอง
คือทำหน้าที่คิด ประมวลผล มีความจำ แต่ไม่สามารถลงมือทำเองได้ จึงต้องสั่งงานให้ส่วนอื่นๆทำงานแทน,
ส่วนวงจรเซนเซอร์ต่างๆที่มาต่อร่วมกัน จะทำงานเป็นหู เป็นตา เป็นมือ เป็นเท้า ให้กับ
MCU เรียกรวมๆทั้งหมดนี้ว่า ไมโครคอนโทรลเลอร์
Arduino
คือ บอร์ดไมโครคอนโทรลเลอร์ ตระกูล AVR
ที่มีการพัฒนาแบบ open source คือ เปิดเผยทั้ง software
และ hardware
ต้นกำเนิดของบอร์ด Arduino
เริ่มมาจาก ในปี 2005 ชาวอิตาเลียน
ที่อยากให้นักศึกษาที่มีเงินไม่มาก ได้เข้าถึง ได้เป็นเจ้าของไมโครคอนโทรลเลอร์ได้
(แนวคิดคล้ายๆผู้คิดค้น Raspberry Pi)
ซึ่งเมื่อเปรียบเทียบราคากับไมโครคอนโทรลเลอร์อื่นๆ ก็ถือว่าถูกกว่า
ไม่ใช่เพียงแค่ราคาที่ถูกอย่างเดียวเท่านั้น
พวกเขายังได้ตั้งใจทำให้ Arduino
สามารถพัฒนาได้ด้วยโปรแกรมที่ “แจกฟรี”
เนื่องจากไมโครคอนโทรลเลอร์อื่นๆ
บางครั้งต้องใช้โปรแกรมที่มีราคาแพง นำศึกษาไม่สามารถเป็นเจ้าของเองได้ (ก็เลยต้อง
hack!!!)
บอร์ด Arduino
มีหลายรุ่นหลายขนาด ยกตัวอย่าง เช่น UNO, Leonardo, micro,
pro mini, BT, Mega2560 เป็นต้น ซึ่งแต่ละรุ่น จะมี spec ที่ไม่เหมือนกัน ได้แก่ ขนาด, ความจุ, ความเร็ว, จำนวนขา I/O ผู้เล่นสามารถเลือกให้เหมาะสมกับงานของตัวเองได้
รุ่นที่เห็นว่าได้รับความนิยมในเมืองไทยมากๆ ก็คงจะเป็นรุ่น UNO
รูปที่03 Arduino UNO
รูปที่04 Arduino รุ่นต่างๆ
บอร์ด Arduino ถูกออกแบบมาให้ใช้งานง่าย
จึงเหมาะกับมือใหม่หัดเขียนโปรแกรมไมโครคอนโทรลเลอร์อย่างยิ่ง (สมัยผู้เขียนเรียน
ไม่ง่าย และสะดวกสบายอย่างนี้)
ความง่ายของการเล่นบอร์ด
Arduino มีอยู่หลายประการ ยกตัวอย่างเช่น สามารถต่อวงจร electronic
เล็กๆน้อยๆจากภายนอก เข้ากับบอร์ดได้ทันที และบางครั้งเพื่อความสะดวก
ยังมีพวกบอร์ดเสริมที่ทำไว้สำเร็จรูปแล้ว ที่เรียกกันว่า Arduino Shield มาต่อเข้ากับบอร์ด Arduino ได้อีกด้วย
แล้วสามารถเขียนโปรแกรมพัฒนาต่อได้เลย ทำให้ประหยัดเวลาไปได้มาก
รูปที่05 Arduino Shield
อีกความสามารถนึงของบอร์ด Arduino ที่ทำให้เป็นที่นิยมในวงกว้างก็คือ
สามารถเขียนโปรแกรมบน OS ได้หลากหลาย ไม่ว่าจะเป็น Windows,
Mac OS X และ Linux ซึ่งถือว่าเป็นจุดขายที่ดีอีกจุดนึง
จุดเด่นของบอร์ด Arduino
1.
รูปแบบคำสั่งพื้นฐานง่าย
เหมาะกับผู้เริ่มต้น
2.
มี community
มากมาย ศึกษาหาข้อมูลได้ง่าย
3.
Open hardware ทำให้ต่อยอดได้ง่าย
4.
พัฒนาโปรแกรมได้จากหลาย OS
5.
ราคาไม่แพง
ก่อนอื่นก็ต้องมาทำความรู้จักบอร์ดกันก่อน
ผู้เขียนได้รับความอนุเคราะห์จากอาจารย์ของมหาวิทยาลัยเทคโนโลยีพระจอมเกล้าพระนครเหนือ
มอบบอร์ด Arduino UNO มาให้ทดลองเล่น ขอขอบคุณ ณ ที่นี้ด้วยครับ
รูปที่06
Arduino UNO
เริ่มจากด้านซ้ายก่อน วนไปด้านบน (ตามเข็มนาฬิกา)
1.
USB plug ไว้ใช้สำหรับต่อสาย
USB จากเครื่องคอมพิวเตอร์ที่ใช้เขียน code ของเรา เพื่อ upload code ไปที่บอร์ด
2.
Pin header ด้านบน
ผู้เขียนขอเรียกรวมๆว่า Digital I/O pin นะครับ
3.
ถัดมาเป็น switch
reset เอาไว้ reset บอร์ด
4.
In Circuit Serial
Programming (ICSP) เป็น port ที่ใช้โปรแกรม Boot
loader
5.
ATmega328 คือ
chip ที่ทำการ run program หรือที่เรียกกันว่า
MCU
6.
Analog in pin คือ ช่องที่ใช้รับสัญญาณ Analog
7.
External power supply เอาไว้ต่อแหล่งจ่ายไฟจากภายนอก
มาเริ่มเล่นกันดีกว่า มี step ดังต่อไปนี้
1.
แน่นอนต้องมีบอร์ด Arduino
และสาย USB
2.
Download Arduino
Environment ได้ที่นี่ http://arduino.cc/en/Main/Software
(ผู้เขียนใช้ windows
นะครัช)
รูปที่07 download Arduino IDE
3.
พอเราเสียบสาย USB
เข้าเครื่องคอมฯ และ บอร์ด Arduino แล้ว
ก็ต้องทำการลง Driver ซึ่ง Driver ก็อยู่ใน
Folder ที่เรา download มาจาก step
2
4.
เปิดโปรแกรม arduino.exe
5.
ให้เลือกรุ่นของบอร์ด Arduino
ให้ตรง และให้เลือก comport ที่ต่อไว้
รูปที่08 เลือกรุ่น
รูปที่09 เลือก comport
6.
เปิด Example
file ที่มีมาให้อยู่ก่อนแล้ว
รูปที่10 เปิด Example
file
รูปที่11 blink
7.
กดปุ่ม sketch, verify / compile เพื่อตรวจสอบความถูกต้อง และ compile โปรแกรม
8.
เมื่อ compile
เสร็จ จะเห็นคำว่า “done compiling” ที่ด้านล่างของ
IDE ถ้าหากไม่มีข้อผิดพลาด
รูปที่12 done compiling
9.
ตอนนี้เราพร้อมจะทำการ upload
แล้ว ให้ไปที่ menu file, upload เพื่อส่งโปรแกรมไปยังบอร์ด Arduino เมื่อ
upload เสร็จแล้ว เราจะเห็นคำว่า “done uploading” ที่ด้านล่างของ IDE และบอร์ดจะเริ่มทำงานตามที่เราเขียนโปรแกรมไว้ทันที
คือจะเห็นไฟ LED สว่าง 1 วินาที
สลับกับดับ 1 วินาที
รูปที่13 upload
เพียงเท่านี้เราก็สามารถใช้บอร์ด
Arduino UNO เป็นแล้ว ง่ายมากๆเลยใช่มั้ยครับ
ขอให้ทุกท่านสนุกกับการพัฒนาอะไรใหม่ๆออกมา เสมอๆนะครับ
ผู้อ่านสามารถพูดคุยกับผู้เขียนได้ที่ https://www.facebook.com/kongimi
ที่มา
สมัครสมาชิก:
บทความ (Atom)