เรียนรู้เรื่องตัวแปร พอพูดถึงตัวแปรแล้วทำให้การเขียนโปรแกรมเป็นเรื่องที่ยากขึ้นมาทันที เราคิดง่ายแล้วกันว่า ตัวแปรก็คือ กล่อง กล่องหนึ่ง ที่มีสามารถเก็บของได้นั้นเอง โดยกล่อง กล่องนั้นก็จะต้องมีชื่อ เพื่อที่จะได้รู้ว่าเก็บอะไร อย่างเช่นกล่องนี้เก็บสื้อผ้า กล่องนี้เก็บขวดน้ำ เป็นต้น มาดูกันว่าจะเป็นอย่างไร
โดยการตั้งชื่อตัวแปรนั้นก็จะมีกฎของการตั้งชื่อด้วย โดยกฎของการตั้งชื่อง่ายๆ ก็คือ
1 . ห้ามตั้งชื่อซ้ำคำสงวน
2. ห้ามตั้งชื่อนำหน้าด้วยตัวเลข หรือสัญลักษณ์
3. ห้ามตั้งชื่อตัวแปรซ้ำกัน
การประกาศตัวแปรก็ไม่ยากอย่างที่คิด เพียงแต่ ต้องเลือกว่าเราจะได้กล่องขนาดเล็กหรือขนาดใหญ่ ก็คือขนาดของชนิดตัวแปรนั้นเองว่า จะเลือกใช้ตัวแปรแบบใด ว่าเป็นจำนวนเต็ม หรือ ทศนิยม หรือ ตัวอักษร หรือ ตรรกะ ก็เลือก ว่าจะใช้แบบใด เราลองมาดูชนิดของตัวแปรว่ามีอะไรบ้าง
โดยสรุป ตัวแปรง่าย ดังนี้ (หมายเหตุ ตัวแปรด้านบนเป็นตัวแปรที่ใช้บ่อย)
1. ตัวแปร ตรรกะ หรือ ค่า true , false มี 1 ชนิดคือ boolean
2 . ตัวแปร จำนวนเต็ม โดย ค่าจำนวนเต็ม มี 3 ชนิด คือ byte ,int,unsigned int และ อื่นๆ อย่างเช่น shrot, long , word เป็นต้น
3. ตัวแปรแบบอักขระ โดยค่าของตัวแปรจะเป็น ตัวอักษรของรหัสเอสกี คือ char
4. ตัวแปรแบบทศนิยม โดยค่าของตัวแปรจะเป็น ทศนิยม คือ float
มาดูวิธีการเขียนโปรแกรมที่ใช้ตัวแปรในการเขียนกันบ้าง
---------------------- โค็ดจากไฟล์ตัวอย่างของ arduino -------------------------
int led = 13;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
---------------------------------------------------------------------------------------
* การประกาศตัวแปรไว้ด้านบนสุด จะเรียกว่า global variable จะเป็นตัวแปรที่ใช้ได้ในฟังก์ชั่นทุกๆ ฟังก์ชั่น จะเห็นว่า ตัวแปร led จะอยู่ในฟังก์ชั่น setup และ ฟังก์ชั่น loop ครับ โดยที่ตัวแปรที่ประกาศเป็นชนิด int และให้ค่า ไว้ 13 ก็คือขาของ arduino นั้นเอง
* ตัวหนังสือ สีน้ำเงิน ก็คือ คอมเม้นต์ ของภาษา c โดย คอมเม้น จะเป็น อะไรก็คือ โดยที่โปรแกรมจะไม่ อ่าน ข้อความ หลังเครื่องหมาย // นั้นเอง สามารถเขียนภาษาไทยได้
จากโปรแกรมด้านบนจะมีวงจรเหมื่อนบทความก่อนหน้านี้ ก็คือวงจร
ภาพ จากเว็บไซต์ arduino.cc
* จากโปรแกรมด้านบน เราจะแก้ไขให้สมบรูณ์ได้ดังนี้ โดยที่ ค่าที่เป็นตัวเลขอยู่ก็คือค่าของ delay นั้นเอง เราสามารถ แก้ไข ค่าของ delay ให้เป็นตัวแปร เพื่อให้เวลาแก้ไขโปรแกรมจะแก้ไขได้ง่ายนั้นเอง
โดยแก้ไขเป็นดังนี้
อธิบาย โค็ด ง่าย คือ เราสร้างตัวแปร int delayon โดยให้ค่า เท่ากับ 1000 และ ตัวแปร int delayoff โดยให้ค่าเท่ากับ 1000 เช่นกัน
แล้วนำตัวแปรไปใส่ใน ฟังก์ชั่น delay เพียงเท่านี้
การทำงานของโค็ด ก็จำทำงานเหมื่อนโค็ดด้านบน แต่ข้อดีก็คือ เมื่อเราเขียนโปรแกรม ที่มีหลายบรรทัดเพียงแค่เราแก้ไข ค่าตัวแปร 2 บรรทัดบน เราก็สามารถแก้ไข ค่าหน่วงเวลา ได้หลายบรรทัดเดียวจะยกตัวอย่างใน บทความต่อไปนะครับ
โดยถ้าต้องการให้ LED ติด 2 วินาที และดับ 5 วินาที ก็แก้ไขดังนี้
int delayon = 2000; และ int delayoff = 5000;
การพัฒนาระบบสมองกลฝังตัว
วันพุธที่ 8 เมษายน พ.ศ. 2558
วันพุธที่ 1 เมษายน พ.ศ. 2558
การเริ่มต้นเขียน arduino ด้วยภาษา C
โปรแกรม arduino นั้นมีหลักการเขียนเหมือนภาษา C ซึ่งเป็นการเขียนโปรแกรมแบบ Case Sensitive หรือการเขียนตัวอักษรเล็กและใหญ่มีผล นั้นเอง โดยคนที่มีพื้นฐานภาษา C มาจะค่อนข้างเขียนโปรแกรมด้วย โปรแกรม aduino ค่อนข้างรวดเร็ว แต่ก็ต้องมีความรู้เรื่องอิเล็กทรอนิกส์บ้าง ก็จะดีไม่น้อย โดยโปรแกรม Arduino นั้นจะเป็นโปรแกรมแบบเชิงฟังก์ชั่นคืออย่างไรเดียวเรามาดูกัน โดยหลักการเขียนโปรแกรม Arduino นั้นจะมี bootloader โดย bootloader คืออะไร เรามาดูกัน
bootloader คือ โปรแกรมเล็ก ๆ ตัวหนึ่งหรือเรียกอีกชื่อว่า firmware เป็นส่วนที่ทำหน้าที่ช่วยในการ upload โปรแกรม หรือ sketch ที่เราเขียน เข้าไปใน flash rom ผ่านทางสาย serial หรือ usb โดยจะใช้สายไฟแค่ 2 เส้นคือสัญญาณ RX , TX โดยไม่จำเป็นต้องมีเครื่องโปรแกรมไอชี
เรามาดูการเขียนกันว่ามีอะไรบ้าง
โดยที่จะมี ฟังก์ชั่น อยู่ 2 อัน เมื่อเริ่มต้น โดยมี ฟังก์ชั่น setup และ loop โดยโปรแกรมจะสร้างอัตโนมัติ โดยห้ามลบเรามาดูกันว่ามีส่วนอะไรกับโปรแกรมบ้าง
ฟังก์ชั่น setup เป็นฟังก์ชั่นที่ไว้ประกาศค่า เริ่มต้น โดยจะทำงานก่อนฟังก์ชั่น loop โดยจะทำงานเพียงครั้งเดียวเท่านั้น ส่วนมากจะไว้ประกาศค่าเช่นค่าเริ่มต้น หรือ ตั้งค่า port ว่าเป็น อินพุต หรือ เอาท์พุต
ฟังก์ชั่น loop เป็นฟังก์ชั่น ที่ทำงานหลักของ arduino โดยจะทำงานแบบวนซ้ำกันนั้นเอง เมื่อทำคำสั่งสุดท้ายเสร็จเรียบร้อยก็จะมาทำคำสั่งแรก นั้นเอง ส่วนมากไว้เขียนอะไรที่ต้องการทำซ้ำอยู่ตลอดเวลา
เมื่อรู้อย่างนี้แล้วเราลองมาเขียนเริ่มต้นกันว่ามีอะไรบ้าง
ฟังก์ชั่นพื้นฐาน แรกก็คือ หรือคำสั่งพื้นฐาน โดยคำสั่งนี้เป็นการประกาศค่าว่า ให้ขาของบอร์ด arduino นั้นเป็นอินพุต หรือ เอาพุต เราสามารถกำหนดได้ โดยคำสั่งนี้เราจะประกาศ ไว้ที่ ฟังก์ชั่น setup นะครับ
- pinMode(ขา,อินพุต หรือ เอาต์พุต);
ยกตัวอย่างเช่น
ถ้าต้องการให้ ขา 13 เป็นเอาท์พุต เราจะประกาศว่า * หมายเหตุ ตัวเล็กตัวใหญ่ต้องตรง
pinMode(13,OUTPUT);
ถ้าต้องการให้ขา 13 เป็นอินพุต เราจะประกาศว่า
pinMode(13,INPUT);
ฟังก์ชั่นต่อไป เป็นฟังก์ชั่น ของการกำหนดให้ขาที่เราประกาศเป็นเอาท์พุต นั้น เป็นลอจิก HIGH หรือ ไฟติด หรือ 5V ออกที่ขานั้น และ เป็นลอจิก LOW หรือ ไฟดับ หรือ 0V โดยคำสั่งนี้จะประกาศไว้ที่ setup หรือ loop ก็ได้ ถ้าประกาศไว้ที่ setup โปรแกรมจะทำงานครั้งแรก เท่านั้น โดยที่ต้องประกาศไว้หลังคำสั่ง pinMode เพราะต้องทำการกำหนดขาก่อนสั่งให้ติดหรือดับนั้นเอง
- digitalWrite(ขา,HIGH หรือ LOW );
ยกตัวอย่างเช่น ต้องการให้ขา 13 มีไฟ 5 โวลต์ หรือ ไฟติด ต้องเขียนดังนี้
digitalWrite(13,HIGH);
ยกตัวอย่างเช่น ต้องการให้ขา 13 มีไฟ 0 โวลต์ หรือ ไฟดับ ต้องเขียนดังนี้
digitalWrite(13,LOW);
ฟังก์ชั่นต่อไปเป็๋นฟังก์ชั่น การหน่วงเวลา โดยมีหลักการเขียนง่าย ไม่เหมื่อน MCS-51 ที่เขียนด้วยภาษา แอสเซมบลี ที่ต้องคำนวณเวลา โดยเราจะมีการกำหนดค่าของเวลาดังนี้ โดยค่า 1 ก็คือ 1 ms ถ้าต้องการ 1 วินาทีก็คือค่า 1000 นั้นเอง แล้วมีวิธีคิดอย่างไร 1 ms = 1 * 0.001 = วินาที หรือ 0.001 วินาทีนั้นเอง ถ้าต้องการ 1 วินาที ก็เท่ากับ 1000 * 0.001 = 1 วินาที นั้นเอง ถ้าต้องการ 5 วินาที ละ ต้องใส่ค่าเท่าใด ก็คือ 5000 นั้นเอง หรือ เอา 5 / 0.001 นั้นเอง เลข 5 ก็คือ 5 วินาทีที่ต้องการ นั้นเอง ครับ
- delay(ค่าเวลา); // หมายเหตุเวลาเป็น ms
ยกตัวอย่างเช่น ถ้าต้องการหน่วงเวลา 10 ms ก็คือ
delay(10);
ถ้าต้องการหน่วงเวลา 4 วินาที ก็คือ 4 / 0.001 ก็คือ 4000 นั้นเอง
delay(4000);
แต่ถ้าต้องการ หน่วงเวลาที่น้อยกว่านี้ ละอย่างเช่นหน่วงเวลา เป็น ไมโครวินาทีละ หรือ us
delayMicroseconds(us) ;
ยกตัวอย่างเช่น ถ้าต้องการหน่วงเวลา 10 us ก็คือ
delayMicroseconds(10) ;
ยกตัวอย่างการเขียนเริ่มต้นเมื่อบทความที่แล้วนะครับ
ต้องการให้ ขา 13 ไฟติดเวลา 1 วินาที และดับ 1 วินาทีอย่างนี้ไปเรือยๆ จะเขียนได้อย่างไร
---------------------------------------------------------------------
void setup()
{
pinMode(13,OUTPUT);
}
void loop()
{
digitalWrite(13,HIGH);
delay(1000);
digitalWrite(13,LOW);
delay(1000);
}
------------------------------------------------------------------------------------
เพียง 5 คำสั่ง ก็สามารถทำไฟกระพริบได้แล้วนะครับ ง่ายเพียงเท่านี้เอง เราก็สามารถสนุกกับการเขียน arduino ได้แล้ว เดียวบทความต่อไป ผมจะมาอธิบายตัวแปรนะครับเพื่อให้เขียน arduino ได้ ดียิ่งขึ้นครับ
* หมายเหตุ ถ้าต้องการให้ไฟกระพริบเร็วขึ้น ก็เปลี่ยน ค่าตัวฟังก์ชั่น delay อย่างเช่น จาก ค่า 1000 เปลี่ยน เป็น 500 ก็จะเร็วยิ่งขึ้น
ถ้าต้องการต่อ led จะต่ออย่างไร เดียวมาดูวงจรกันนะครับ
bootloader คือ โปรแกรมเล็ก ๆ ตัวหนึ่งหรือเรียกอีกชื่อว่า firmware เป็นส่วนที่ทำหน้าที่ช่วยในการ upload โปรแกรม หรือ sketch ที่เราเขียน เข้าไปใน flash rom ผ่านทางสาย serial หรือ usb โดยจะใช้สายไฟแค่ 2 เส้นคือสัญญาณ RX , TX โดยไม่จำเป็นต้องมีเครื่องโปรแกรมไอชี
เรามาดูการเขียนกันว่ามีอะไรบ้าง
โดยที่จะมี ฟังก์ชั่น อยู่ 2 อัน เมื่อเริ่มต้น โดยมี ฟังก์ชั่น setup และ loop โดยโปรแกรมจะสร้างอัตโนมัติ โดยห้ามลบเรามาดูกันว่ามีส่วนอะไรกับโปรแกรมบ้าง
ฟังก์ชั่น setup เป็นฟังก์ชั่นที่ไว้ประกาศค่า เริ่มต้น โดยจะทำงานก่อนฟังก์ชั่น loop โดยจะทำงานเพียงครั้งเดียวเท่านั้น ส่วนมากจะไว้ประกาศค่าเช่นค่าเริ่มต้น หรือ ตั้งค่า port ว่าเป็น อินพุต หรือ เอาท์พุต
ฟังก์ชั่น loop เป็นฟังก์ชั่น ที่ทำงานหลักของ arduino โดยจะทำงานแบบวนซ้ำกันนั้นเอง เมื่อทำคำสั่งสุดท้ายเสร็จเรียบร้อยก็จะมาทำคำสั่งแรก นั้นเอง ส่วนมากไว้เขียนอะไรที่ต้องการทำซ้ำอยู่ตลอดเวลา
เมื่อรู้อย่างนี้แล้วเราลองมาเขียนเริ่มต้นกันว่ามีอะไรบ้าง
ฟังก์ชั่นพื้นฐาน แรกก็คือ หรือคำสั่งพื้นฐาน โดยคำสั่งนี้เป็นการประกาศค่าว่า ให้ขาของบอร์ด arduino นั้นเป็นอินพุต หรือ เอาพุต เราสามารถกำหนดได้ โดยคำสั่งนี้เราจะประกาศ ไว้ที่ ฟังก์ชั่น setup นะครับ
- pinMode(ขา,อินพุต หรือ เอาต์พุต);
ยกตัวอย่างเช่น
ถ้าต้องการให้ ขา 13 เป็นเอาท์พุต เราจะประกาศว่า * หมายเหตุ ตัวเล็กตัวใหญ่ต้องตรง
pinMode(13,OUTPUT);
ถ้าต้องการให้ขา 13 เป็นอินพุต เราจะประกาศว่า
pinMode(13,INPUT);
ฟังก์ชั่นต่อไป เป็นฟังก์ชั่น ของการกำหนดให้ขาที่เราประกาศเป็นเอาท์พุต นั้น เป็นลอจิก HIGH หรือ ไฟติด หรือ 5V ออกที่ขานั้น และ เป็นลอจิก LOW หรือ ไฟดับ หรือ 0V โดยคำสั่งนี้จะประกาศไว้ที่ setup หรือ loop ก็ได้ ถ้าประกาศไว้ที่ setup โปรแกรมจะทำงานครั้งแรก เท่านั้น โดยที่ต้องประกาศไว้หลังคำสั่ง pinMode เพราะต้องทำการกำหนดขาก่อนสั่งให้ติดหรือดับนั้นเอง
- digitalWrite(ขา,HIGH หรือ LOW );
ยกตัวอย่างเช่น ต้องการให้ขา 13 มีไฟ 5 โวลต์ หรือ ไฟติด ต้องเขียนดังนี้
digitalWrite(13,HIGH);
ยกตัวอย่างเช่น ต้องการให้ขา 13 มีไฟ 0 โวลต์ หรือ ไฟดับ ต้องเขียนดังนี้
digitalWrite(13,LOW);
ฟังก์ชั่นต่อไปเป็๋นฟังก์ชั่น การหน่วงเวลา โดยมีหลักการเขียนง่าย ไม่เหมื่อน MCS-51 ที่เขียนด้วยภาษา แอสเซมบลี ที่ต้องคำนวณเวลา โดยเราจะมีการกำหนดค่าของเวลาดังนี้ โดยค่า 1 ก็คือ 1 ms ถ้าต้องการ 1 วินาทีก็คือค่า 1000 นั้นเอง แล้วมีวิธีคิดอย่างไร 1 ms = 1 * 0.001 = วินาที หรือ 0.001 วินาทีนั้นเอง ถ้าต้องการ 1 วินาที ก็เท่ากับ 1000 * 0.001 = 1 วินาที นั้นเอง ถ้าต้องการ 5 วินาที ละ ต้องใส่ค่าเท่าใด ก็คือ 5000 นั้นเอง หรือ เอา 5 / 0.001 นั้นเอง เลข 5 ก็คือ 5 วินาทีที่ต้องการ นั้นเอง ครับ
- delay(ค่าเวลา); // หมายเหตุเวลาเป็น ms
ยกตัวอย่างเช่น ถ้าต้องการหน่วงเวลา 10 ms ก็คือ
delay(10);
ถ้าต้องการหน่วงเวลา 4 วินาที ก็คือ 4 / 0.001 ก็คือ 4000 นั้นเอง
delay(4000);
แต่ถ้าต้องการ หน่วงเวลาที่น้อยกว่านี้ ละอย่างเช่นหน่วงเวลา เป็น ไมโครวินาทีละ หรือ us
delayMicroseconds(us) ;
ยกตัวอย่างเช่น ถ้าต้องการหน่วงเวลา 10 us ก็คือ
delayMicroseconds(10) ;
ยกตัวอย่างการเขียนเริ่มต้นเมื่อบทความที่แล้วนะครับ
ต้องการให้ ขา 13 ไฟติดเวลา 1 วินาที และดับ 1 วินาทีอย่างนี้ไปเรือยๆ จะเขียนได้อย่างไร
---------------------------------------------------------------------
void setup()
{
pinMode(13,OUTPUT);
}
void loop()
{
digitalWrite(13,HIGH);
delay(1000);
digitalWrite(13,LOW);
delay(1000);
}
------------------------------------------------------------------------------------
เพียง 5 คำสั่ง ก็สามารถทำไฟกระพริบได้แล้วนะครับ ง่ายเพียงเท่านี้เอง เราก็สามารถสนุกกับการเขียน arduino ได้แล้ว เดียวบทความต่อไป ผมจะมาอธิบายตัวแปรนะครับเพื่อให้เขียน arduino ได้ ดียิ่งขึ้นครับ
* หมายเหตุ ถ้าต้องการให้ไฟกระพริบเร็วขึ้น ก็เปลี่ยน ค่าตัวฟังก์ชั่น delay อย่างเช่น จาก ค่า 1000 เปลี่ยน เป็น 500 ก็จะเร็วยิ่งขึ้น
ถ้าต้องการต่อ led จะต่ออย่างไร เดียวมาดูวงจรกันนะครับ
เริ่มต้นการเขียน arduino อย่างง่าย
ขั้นตอนการติดตั้งโปรแกรม arduino นั้นค่อนข้างง่ายและสะดวก มากยิ่งขึ้นโดยทางผู้คิดค้นโปรแกรม arduino นั้นได้สร้างโปรแกรมให้ลองรับการทำงานกับทุกระบบปฎิบัติการไม่ว่าจะเป็น Linux Windows หรือ กระทั้ง Mac เราลองมาดูขั้นตอนการติดตั้งโปรแกรม arduino กัน โดยขั้นตอนนั้นเราจะทำกัน 3 ขั้นตอนหลักๆ ดังนี้
1. โหลดโปรแกรม arduino
2. ติดตั้งโปรแกรม arduino
3. เสียบบอร์ด arduino uno เพื่อทดลอง และเขียนโปรแกรม
ขั้นตอนที่ 1 โหลดโปรแกรม arduino โดยเข้าไปที่ เว็บไซต์ www.arduino.cc แล้วเลือกที่ download ดังรูป
1. โหลดโปรแกรม arduino
2. ติดตั้งโปรแกรม arduino
3. เสียบบอร์ด arduino uno เพื่อทดลอง และเขียนโปรแกรม
ขั้นตอนที่ 1 โหลดโปรแกรม arduino โดยเข้าไปที่ เว็บไซต์ www.arduino.cc แล้วเลือกที่ download ดังรูป
ถ้าต้องการติดตั้งบน windows ให้เลือกที่ windows installer ถ้าต้องการติดตั้งกับเครื่อง Mac ให้เลือก Mac และ Linux เลือกที่ Linux
2. ติดตั้งโปรแกรม arduino โดยการเลือกที่ ปุ่ม next และ install
3. เสียบบอร์ด arduino uno เข้ากับคอมพิวเตอร์เพื่อให้โปรแกรม arduino ติดตั้งไดร์ฟเวอร์ ดังภาพ
เริ่มต้นการเขียนเพื่อให้บอร์ด arduino uno ทำงานตามที่เราต้องการ โดยวิธีดังนี้
1. เลือกบอร์ดที่ต้องการเขียนกับโปรแกรม arduino ดังรูป
1. เลือกที่ เมนู Tools 2. เลือกที่ Board 3. เลือกที่ arduino uno ตามบอร์ดที่เราเสียบกับเครื่องคอมพิวเตอร์
1. เลือกที่ เมนู Tools 2. เลือกที่ Port 3. เลือกที่ Com Port ที่ Arduino เสียบอยู่ ในที่นี้คือ Com 23
โดยที่ โปรแกรม arduino นั้นจะมีตัวอย่างให้ทดสอบกับบอร์ด arduino ทุกบอร์ด เราสามารถเลือกตัวอย่างเพื่อทดสอบ กับบอร์ดที่เราจะลองเขียนได้ ในบทความนี้ข้อยกตัวอย่าง Blink ก็คือการสั่งให้ไฟกระพริบนั้นเอง โดยที่บอร์ดของ arduino uno จะมีไฟต่ออยู่ที่ขา 13 ซึ่งเป็น led ดวงเล็กๆ ต่ออยู่ เมื่อสั่งเบริน เสร็จเรียบร้อยมันจะกระพริบทันที
ขั้นตอนการเบริน มีดังนี้
เมื่อตอนเบรินต้องรอบให้แถบสีเขียวสมบูรณ์ แล้วช่องในกล่องข้อความสีดำไม่เขียน คำว่า Error ไว้เป็นอันเสร็จสมบูรณ์ ก็สามารถทดสอบบอร์ดได้
สรุปการเขียน arduino อย่างง่าย ไม่มีอะไรซับซ้อน เพียงแต่มีบอร์ด arduino uno R3 เพียงตัวละ ไม่เกิน 400 บาท เราก็สามารถสั่งให้อุปกรณ์ทำงานได้ตามใจเราแล้ว เดียวบทความครั้งต่อไปจะมาอธิบายการทำงานของ code ที่เขียนทดสอบ ไฟกระพริบ ในขา 13 กัน ว่ามีวิธีการอย่างไร ติดตามบทความเราได้ตลอดนะครับ
วิดีโอการติดตั้งโปรแกรม arduino
วันพฤหัสบดีที่ 26 มีนาคม พ.ศ. 2558
เริ่มต้นไมโครคอนโทรลเลอร์
ขั้นตอนการเริ่มเขียนไมโครคอนโทรลเลอร์ นั้น เป็นสิ่งที่ถ้าท้ายความสามารถ โดยผู้ที่เขียนโปรแกรมเพื่อคอนโทรลไมโครคอนโทรลเลอร์ เมื่ออดีตนั้นต้องมีความรู้ด้านคอมพิิวเตอร์และด้านอิเล็กทรอนิกส์ผสมผสานกัน จึงจะสามารถเขียนโปรแกรมได้ และการเขียนไมโครคอนโทรลเลอร์สมัยก่อนก็ค่อนข้างยุงยาก ต้องมีเครื่องเบรินไอซีเมื่อเบรินเสร็จก็ต้องถอดมาลองกับวงจรที่สร้างขึ้น ว่าใช้งานได้หรือไม่ ถ้าใช้ไม่ได้ก็ต้องเบรินใหม่ มโครคอนโทรลเลอร์นั้นมีด้วยกันหลายตระกูลอย่างเช่น MCS-51 ซึงเขียนด้วยภาษา แอสเซมบลี หรือ ภาษาซี ต่อการก็ได้เป็น PIC ซึ่งสามารถเขียนด้วยภาษา ซี ต่อมาก็มีสิ่งที่ง่ายขึ้นก็คืิอ Arduino ซึ่งเป็นไมโครคอนโทรลเลอร์ของค่าย ATMEL ผมขอกล่าวไว้ 3 ตระกูล ที่ผมได้พัฒนาและได้ลองสัมผัสกัน โดย ไมโครคอนโทรลเลอร์ 3 เบอร์นี้เป็นแบบ 8 บิต แล้วไมโครคอนโทรลเลอร์มันแตกต่างจะไมโครโปรเซสเซอร์อย่างไร สรุปง่ายก็คือไมโครโปรเซสเซอร์คือ CPU ไมโครคอนโทรเลอร์คือเครื่องคอมพิวเตอร์เครื่องหนึ่ง ซึ่งมี อินพุต เอาต์พุตมาพร้อมไม้ต้องต่อใช้งานได้เลย จบ จะเปรียบเทียบข้อดีและข้อเสียของไมโครคอนโทรลเลอร์แต่ละตระกูลให้ดูได้ดังนี้
MCS-51
เป็นไมโครคอนโทรลเลอร์ขนาด 8 บิต มีการติดต่อกับพอร์ตแบบไบต์ก็คือสามารถติดต่อขาของ MCS- 51 โดยการต่อใช้งานต้องต่อ คริสตอล ให้กับตัวไมโครคอนโทรลเลอร์จึงจะสามารถทำงานได้ โดยต่อคริสตอลที่ขา 18 และ 19 พร้อมต่อไฟที่ขา EA ด้วย เพิืิ่อเลือกว่าจะใช้หน่วยความจำภายในตัวของไมโครคอนโทรลเลอร์ ไมโครคอนโทรลเลอร์ตระกูล MCS-51 นั้นมีด้วยกัน หลายเบอร์ ซึ่งที่นิยมใช้งานมากที่สุดก็จะเป็น AT89C51 ซึ่งไม่มีขา ISP ไม่ไม่สามารถเบรินได้ในตัว และต้องซื้อเครื่องเบรินไอซี มาจึงก็มีราคาสูง และปัจจุบันไม่คอยมีคนนิยมใช้งานสักเท่าไหร ซึ่งผมได้เคยพัฒนาสมัยเรียน ปวส ด้วยภาษา แอสเซมบลี ต่อมาได้รู้จัก เบอร์ AT89S51 ซึ่งมีขา ISP สามารถโปรแกรมได้ในตัวโดยสร้างวงจรเบรินขึ้นมาและสามารถเบรินได้โดยใช้พอร์ตขนานของคอมพิวเตอร์ ก็สามารถเบรินได้ มาดูเครื่องเบริน MCS-51 กัน
เครื่องเบริน MCS -51
คุณสมบัติของเครื่องเบริน
--------------------------------------------------------------------------------
PIC
เป็นไมโครคอนโทรลเลอร์ขนาด 8 บิต มีด้วยกันหลายเบอร์หลายตระกูล มีทั้งแบบ 40 ขา และอื่นมากมาย เหมื่อน MCS -51 และมีการติดต่อกับพอร์ตหรือขาแบบไบต์และแบบบิตก็คือสามารถเขียนสั้งให้ทั้งพอร์ตทำงานได้โดยง่าย แต่ข้อดีของ PIC ก็คือสามารถเบรินได้ในตัวของ PIC ได้เลยแต่ต้องมีวงจรเบริน ซึ่งต้องต่อกับขาของ PIC โดยต่อกับขา VDD(5V) VSS(GND) MCLR(Reset) PGD(RB7) PGC(RB6) โดยพอร์ตใช้งานหรือขาใช้งานนั้นมีด้วยกัน 5 พอร์ต ก็คือ พอร์ต A มีขาใช้งาน (6 ขา) พอร์ต B มีขาใช้งาน (8ขา) พอร์ต C มีขาใช้งาน (8ขา) พอร์ต D มีขาใช้งาน (3 ขา) โดยถ้าเป็นเบอร์ที่ไม่มีความถี่ในตัวต้องต่อคริสตอลเพื่อให้ทำงาน แต่ถ้าบางตัวมีความถี่คริสตอลก็ไม่ต่องต่อคริิสตอลก็สามารถทำงานได้สะดวกต่อการใช้งานมากทำให้สร้างวงจรน้อยลง โดยความถี่ก็ขึ้นอยู่กับซีพียูที่นำมาต่อ ราคาไอซีไม่โครคอนโทรลเลอร์ก็อยูที่ตัวละ 80-120 บาท แต่ก็ต้องหาเครื่อง
เครื่องเบริน PIC
เครื่องเบรินตัวนี้ ราคาอยู่ที่ประมาณ 500 บาทซึ่งสั่งได้จากผม โดยก็ต่อใช้งานง่ายมาก ต่อตามข้าใช้่งาน เดียวผมจะมาเขียนให้ดูในหัวข้อถัดไป เราสามารถสร้างวงจรและต่อเครื่องเบรินแล้วทำการเบรินได้เลย โดยใช้โปรแกรม PicKit 2 ในการเบริน ดังภาพ
1. ถ้าไม่เป็นอิเล็กทรอนิกส์หรือเป็นนิดหน่อยให้เลือก Adrduino
2. ถ้าเป็นอิเล็กทรอนิกส์พอสมควรแล้วอยากใช้งานแบบหลายขาก็เลือก PIC
แต่ท้ายที่สุดก็ตามที่เราสนใจนะครับ แต่ตัวผมก็เล่นหลายตัวแต่ต่อนนี้ก็หลายอย่างก็ทำด้วย Arduino เพราะค่อนข้างง่ายงานจบเร็วครับ
MCS-51
เป็นไมโครคอนโทรลเลอร์ขนาด 8 บิต มีการติดต่อกับพอร์ตแบบไบต์ก็คือสามารถติดต่อขาของ MCS- 51 โดยการต่อใช้งานต้องต่อ คริสตอล ให้กับตัวไมโครคอนโทรลเลอร์จึงจะสามารถทำงานได้ โดยต่อคริสตอลที่ขา 18 และ 19 พร้อมต่อไฟที่ขา EA ด้วย เพิืิ่อเลือกว่าจะใช้หน่วยความจำภายในตัวของไมโครคอนโทรลเลอร์ ไมโครคอนโทรลเลอร์ตระกูล MCS-51 นั้นมีด้วยกัน หลายเบอร์ ซึ่งที่นิยมใช้งานมากที่สุดก็จะเป็น AT89C51 ซึ่งไม่มีขา ISP ไม่ไม่สามารถเบรินได้ในตัว และต้องซื้อเครื่องเบรินไอซี มาจึงก็มีราคาสูง และปัจจุบันไม่คอยมีคนนิยมใช้งานสักเท่าไหร ซึ่งผมได้เคยพัฒนาสมัยเรียน ปวส ด้วยภาษา แอสเซมบลี ต่อมาได้รู้จัก เบอร์ AT89S51 ซึ่งมีขา ISP สามารถโปรแกรมได้ในตัวโดยสร้างวงจรเบรินขึ้นมาและสามารถเบรินได้โดยใช้พอร์ตขนานของคอมพิวเตอร์ ก็สามารถเบรินได้ มาดูเครื่องเบริน MCS-51 กัน
เครื่องเบริน MCS -51
คุณสมบัติของเครื่องเบริน
เครื่องโปรแกรม PX-1000 อันเป็นเครื่องโปรแกรมไมโครคอนโทรลเลอร์ MCS-51 แบบแฟลชในอนุกรม AT89xxxx ในชุดประกอบด้วย เครื่องโปรแกรม PX-1000V3.0 , สาย USB, อะแดปเตอร์, แผ่นซีดีโปรแกรม Flash-X V2.0 ที่ทำงานบน windows OS 95/98/ME/NT/2000/XP และคู่มือใช้งาน คุณสมบัติ ทางเทคนิค เชื่อมต่อคอมพิวเตอร์ผ่านพอร์ต USB โปรแกรมไมโครคอนโทรลเลอร์ MCS-51 แบบแฟลชของ Atmel ได้ทุกเบอร์ รุ่น 20 ขา : AT89C1051/1051U/2051/4051, AT89S2051/4051, AT89LP2052/4052 รุ่น 40 ขา : AT89C51/52, AT89S51/52/53/8252/8253 มีซ็อกเก็ต ZIF สำหรับติดตั้งไมโครคอนโทรลเลอร์ ซอฟต์แวร์ชื่อ Flash-X ทำ งานบนวินโดวส์ 98SE/ME/NT/2000/XP มีฟังก์ชั่นเขียน/อ่าน/แก้ไข/ตรวจสอบข้อมูล แสดงค่า Check sum ฟังก์ชั่น Auto detect ตรวจ สอบเบอร์อัตโนมัติ มีฟังก์ชั่นป้องกันการอ่าน มีฟังก์ชั่นลบและตรวจสอบข้อมูลว่าง
--------------------------------------------------------------------------------
PIC
เป็นไมโครคอนโทรลเลอร์ขนาด 8 บิต มีด้วยกันหลายเบอร์หลายตระกูล มีทั้งแบบ 40 ขา และอื่นมากมาย เหมื่อน MCS -51 และมีการติดต่อกับพอร์ตหรือขาแบบไบต์และแบบบิตก็คือสามารถเขียนสั้งให้ทั้งพอร์ตทำงานได้โดยง่าย แต่ข้อดีของ PIC ก็คือสามารถเบรินได้ในตัวของ PIC ได้เลยแต่ต้องมีวงจรเบริน ซึ่งต้องต่อกับขาของ PIC โดยต่อกับขา VDD(5V) VSS(GND) MCLR(Reset) PGD(RB7) PGC(RB6) โดยพอร์ตใช้งานหรือขาใช้งานนั้นมีด้วยกัน 5 พอร์ต ก็คือ พอร์ต A มีขาใช้งาน (6 ขา) พอร์ต B มีขาใช้งาน (8ขา) พอร์ต C มีขาใช้งาน (8ขา) พอร์ต D มีขาใช้งาน (3 ขา) โดยถ้าเป็นเบอร์ที่ไม่มีความถี่ในตัวต้องต่อคริสตอลเพื่อให้ทำงาน แต่ถ้าบางตัวมีความถี่คริสตอลก็ไม่ต่องต่อคริิสตอลก็สามารถทำงานได้สะดวกต่อการใช้งานมากทำให้สร้างวงจรน้อยลง โดยความถี่ก็ขึ้นอยู่กับซีพียูที่นำมาต่อ ราคาไอซีไม่โครคอนโทรลเลอร์ก็อยูที่ตัวละ 80-120 บาท แต่ก็ต้องหาเครื่อง
เครื่องเบริน PIC
เครื่องเบรินตัวนี้ ราคาอยู่ที่ประมาณ 500 บาทซึ่งสั่งได้จากผม โดยก็ต่อใช้งานง่ายมาก ต่อตามข้าใช้่งาน เดียวผมจะมาเขียนให้ดูในหัวข้อถัดไป เราสามารถสร้างวงจรและต่อเครื่องเบรินแล้วทำการเบรินได้เลย โดยใช้โปรแกรม PicKit 2 ในการเบริน ดังภาพ
สำหรับเครื่องเบรินสามารถเบรินได้หลายเบอร์ดังนี้
PIC10F Series Devices:
PIC12F Series Devices:
PIC16F Series Devices:
PIC18F Series Devices:
PIC24 Series Devices:
dsPIC30 Series Devices
dsPIC33 Series Devices:
PIC32 Series Devices:
11 Series Serial EEPROM Devices:
24 Series Serial EEPROM Devices
PIC12F Series Devices:
PIC16F Series Devices:
PIC18F Series Devices:
PIC24 Series Devices:
dsPIC30 Series Devices
dsPIC33 Series Devices:
PIC32 Series Devices:
11 Series Serial EEPROM Devices:
24 Series Serial EEPROM Devices
25 Series Serial EEPROM Devices
93 Series Serial EEPROM Devices
MCP250xx CAN Devices
93 Series Serial EEPROM Devices
MCP250xx CAN Devices
-------------------------------------------------------------------------------
Arduino
Arduino เป็นไมโครคอนโทรลเลอร์อีกตระกูลที่ค่อนข้างง่ายสำหรับผู้ที่ไม่คอยมีความรู้ด้านอิเล็กทรอนิกส์ หรือมีความรู้ด้านอิเล็กทรอนิกส์นิดหน่อยก็สามารถใช้งานได้ โดยเพียวงต่อสาย USB ที่บอร์ดเข้ากับคอมพิวเตอร์แล้วเขียนโปรแกรมโดยใช้โปรแกรม Arduino ก็สามารถเขียนและสั่งงานให้อุปกรณ์ที่มาต่อพวงทำงานได้แล้วแถมอุปกรณ์ต่อพวงสมัยนี้ก็ทำมาใช้งานกับ Arduino มากขึ้น แถมยังเป็นซอฟต์แวร์ที่ฟรีและเป็นแบบ Opensource อีกต่างหากใช้งานได้เลยมีคนเขียนให้เกือบหมด แถมอุปกรณ์ต่อพ่วงหรือ Shiled นั้นก็มีมากมาย ราคาบอร์ดก็แสนถูก ราคาบอร์ด UNO ของจีนก็อยู่ที่ 250-300 บาท ก็ใช้งานได้แล้วแถมยังมีให้เลือกอีกหลายแบบ ด้วยกัน มีขายกันมากมาย เดียวบทความต่อๆไป จะมาลองเขียนเล่นกันดูนะครับ
-----------------------------------------------------------------------------------------
สรุป การเลือกไมโครคอนโทรลเลอร์เราจะเลือกอย่างไร Arduino เป็นไมโครคอนโทรลเลอร์อีกตระกูลที่ค่อนข้างง่ายสำหรับผู้ที่ไม่คอยมีความรู้ด้านอิเล็กทรอนิกส์ หรือมีความรู้ด้านอิเล็กทรอนิกส์นิดหน่อยก็สามารถใช้งานได้ โดยเพียวงต่อสาย USB ที่บอร์ดเข้ากับคอมพิวเตอร์แล้วเขียนโปรแกรมโดยใช้โปรแกรม Arduino ก็สามารถเขียนและสั่งงานให้อุปกรณ์ที่มาต่อพวงทำงานได้แล้วแถมอุปกรณ์ต่อพวงสมัยนี้ก็ทำมาใช้งานกับ Arduino มากขึ้น แถมยังเป็นซอฟต์แวร์ที่ฟรีและเป็นแบบ Opensource อีกต่างหากใช้งานได้เลยมีคนเขียนให้เกือบหมด แถมอุปกรณ์ต่อพ่วงหรือ Shiled นั้นก็มีมากมาย ราคาบอร์ดก็แสนถูก ราคาบอร์ด UNO ของจีนก็อยู่ที่ 250-300 บาท ก็ใช้งานได้แล้วแถมยังมีให้เลือกอีกหลายแบบ ด้วยกัน มีขายกันมากมาย เดียวบทความต่อๆไป จะมาลองเขียนเล่นกันดูนะครับ
-----------------------------------------------------------------------------------------
1. ถ้าไม่เป็นอิเล็กทรอนิกส์หรือเป็นนิดหน่อยให้เลือก Adrduino
2. ถ้าเป็นอิเล็กทรอนิกส์พอสมควรแล้วอยากใช้งานแบบหลายขาก็เลือก PIC
แต่ท้ายที่สุดก็ตามที่เราสนใจนะครับ แต่ตัวผมก็เล่นหลายตัวแต่ต่อนนี้ก็หลายอย่างก็ทำด้วย Arduino เพราะค่อนข้างง่ายงานจบเร็วครับ
สมัครสมาชิก:
บทความ (Atom)