วันพุธที่ 8 เมษายน พ.ศ. 2558

เรียนรู้ตัวแปรในการเขียน arduino

เรียนรู้เรื่องตัวแปร พอพูดถึงตัวแปรแล้วทำให้การเขียนโปรแกรมเป็นเรื่องที่ยากขึ้นมาทันที เราคิดง่ายแล้วกันว่า ตัวแปรก็คือ กล่อง กล่องหนึ่ง ที่มีสามารถเก็บของได้นั้นเอง โดยกล่อง กล่องนั้นก็จะต้องมีชื่อ เพื่อที่จะได้รู้ว่าเก็บอะไร อย่างเช่นกล่องนี้เก็บสื้อผ้า กล่องนี้เก็บขวดน้ำ เป็นต้น  มาดูกันว่าจะเป็นอย่างไร


 โดยการตั้งชื่อตัวแปรนั้นก็จะมีกฎของการตั้งชื่อด้วย โดยกฎของการตั้งชื่อง่ายๆ ก็คือ
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; 



วันพุธที่ 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 จะต่ออย่างไร เดียวมาดูวงจรกันนะครับ 











เริ่มต้นการเขียน arduino อย่างง่าย

ขั้นตอนการติดตั้งโปรแกรม arduino นั้นค่อนข้างง่ายและสะดวก มากยิ่งขึ้นโดยทางผู้คิดค้นโปรแกรม arduino นั้นได้สร้างโปรแกรมให้ลองรับการทำงานกับทุกระบบปฎิบัติการไม่ว่าจะเป็น Linux Windows หรือ กระทั้ง Mac เราลองมาดูขั้นตอนการติดตั้งโปรแกรม arduino กัน โดยขั้นตอนนั้นเราจะทำกัน 3 ขั้นตอนหลักๆ ดังนี้

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