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











ไม่มีความคิดเห็น:

แสดงความคิดเห็น