วันศุกร์ที่ 27 พฤษภาคม พ.ศ. 2559

เริ่มต้นใช้งานอาดุยโน่ : บทที่ 2 เริ่มต้นใช้งาน Arduino ide

รู้จักกับ Text editor


       Text editor ก็คือส่วนที่เราเอาไว้เขียน หรือแก้ไขโค๊ดต่างๆ ซึ่งข้อความใน text editor นั้นสามารถแบ่งได้เป็น 2 ประเภท คือส่วนของโปรแกรม หรือ ชุดคำสั่ง  และส่วนของคอมเม้นต์ คือส่วนที่เป็นคำอธิบาย ไม่เกี่ยวข้องกับโปรแกรม จะมี หรือไม่มีก็ได้  แต่ก็ควรมีเพื่อให้ง่ายต่อการอ่านของคนอื่น หรือตัวเราเอง(บางครั้งการเขียนโปรแกรมยาวๆ เก็บไว้ พอกลับมาอ่าน ต้องใช้เวลาค่อนข้างมากกว่าจะเข้าใจว่าตอนนั้นเขียนอะไรลงไป)

เริ่มต้นเขียนโปรแกรม

ไปที่ File -> หรือ ctrl + n เพื่อสร้างหน้าใหม่


การสร้างหน้าต่างใหม่

เมื่อสร้างหน้าต่างใหม่แล้ว จะเห็นดังรูป


หน้าต่างใหม่


สิ่งที่ควรรู้ในการเขียนโปรแกรมบน arduino ide



1.ปุ่ม verify : ตรวจสอบความถูกต้องของโปรแกรม


ใช้ตรวจสอบโค๊ด โดยไม่จำเป็นต้องเสียบบอร์ด  ในขณะที่เรายังไม่ได้ยุ่งอะไรกับหน้าต่างที่เปิดขึ้นใหม่ เมื่อเรากด verify ก็จะได้ Done compiling . ดังรูป



2. Comment  : มีก็ดี ไม่มีก็ได้

คอมเม้น เป็นส่วนที่ไม่มีผลใดใด กับโปรแกรม และสามารถเขียนเป็นภาษาไทยได้ด้วย แต่โดยส่วนตัวผมแนะนำภาษาอังกฤษมากกว่า เพื่อความเป็นสากล   จากหน้าต่างที่เราเปิดขึ้นมาใหม่ จะเห็นว่ามีคอมเม้นอยู่แล้ว
ลูกศรแสดงส่วนที่เป็นคอมเม้น
ต่อไป เราจะทดลองเขียนคอมเม้นกันดู
1. คลิ๊กเลือกตรงที่เราจะพิมพ์คอมเม้น
2. พิมพ์ "//" (พิมพ์เฉพาะในเครื่องหมายคำพูด  และพิมพ์ติดกันไม่ต้องเว้นวรรค)
3. พิมพ์ข้อความที่เราต้องการ แต่มีข้อแม้ว่าต้องอยู่ข้างหลังเครื่องหมาย "//" และอยู่ในบรรทัดเดียวกัน


ตัวอย่าง


จะเห็นว่า ส่วนที่เป็นคอมเม้นต์ สีจะอ่อนลง  เมื่อพิมพ์เสร็จแล้ว ให้ลองกด verify ดู  โดยปกติจะต้องไม่มีปัญหาอะไร


บางทีมันขึ้นมาให้เซฟก่อน เราก็เซฟไปตามโอกาส


เรียบร้อย 


อยากที่บอกว่า นี่เป็น single line comment หรือคอมเม้นบรรทัดเดียว   ถ้าเราต้องการหลายบรรทัด ก็สามารถใช้วิธีนี้ โดยพิมพ์ "//" ไว้หน้าทุกๆบรรทัดที่เราต้องการได้ แต่มันก็มีวิธีที่สะดวกกว่านั้น คือ
multi line comment  มีวิธีการคล้ายกัน โดยใช้เครื่องหมาย "  /*comment here*/  "

 ตัวอย่าง
จะเห็นว่า ทุกตัวอักษรที่อยุ่ระหว่างเครื่องหมายดอกจัน ( * ) จะถือเป็นคอมเม้นทั้งหมด แม้จะอยู่คนละบรรทัดก็ตาม  แต่ข้อควรระวังคือลำดับการเปิด จะต้องเปิดด้วย " /* " ตามด้วยคอมเม้นต์ และปิดด้วย   " */ "


3. ฟังก์ชัน setup และ loop




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

1. ใน arduino sketch  หรือในโปรแกรมที่เราเขียน จะต้องมีการประกาศฟังก์ชัน setup และ loop  มีวิธีการดังนี้  void setup (){ เนื้อหาโปรแกรม }    void loop (){ เนื้อหาโปรแกรม }  โดยปกติ ฟังก์ชันทั้งสองจะถูกประกาศโดยอัตโนมัติ เมื่อเปิดโปรแกรมใหม่

2. ขอบเขตการทำงานของฟังก์ชัน  จะอยู่ระหว่างเครื่องหมายปีกกา"{ }"

3. โปรแกรมจะเริ่มทำงานจากฟังก์ชัน setup หนึ่งครั้ง และทำงานซ้ำในฟังก์ชัน loop


หลังจากที่เรารู้ถึงจุดๆนี้ เราก็จะมาเริ่มเขียนโปรแกรมกันเลยยยยย!!!!!


Mission 1  :  My first program (Blink)
ภาพแสดงตำแหน่งของ LED pin 13 (สามารถควบคุมการติดดับได้)
และ LED power (ติดตลอดเวลาที่ทำงาน)


เป้าหมาย  :  เขียนโปรแกรมควบคุมไฟกระพริบ(LED pin 13)บนบอร์ด

ข้อมูลภารกิจ

1. ไฟบนบอร์ด  (led pin 13  เรียกย่อๆว่า led 13)  ในภาวะปกติอาจจะติด หรือดับก็ได้

2. การควบคุมให้ led 13 ติด จะต้องสร้างสถานะ High ให้ขา 13  ในทางกลับกัน การควบคุมให้ led 13 ดับ จะต้องสร้างสถานะ Low ให้ขา 13 (เนื่องจากเป็นการทำงานแบบดิจิตอล)

3. pin หรือ ขาต่างๆบนบอร์ด (0 - 13)  สามารถทำงานได้ 2  โหมด คือ input และ output โดยปกติจะถูกทำหนดเป็น input

4. จะกำหนดสถานะให้ pin ได้นั้น จะต้องกำหนดโหมดของ pin เป็น output  ( output คือสถานะที่จะมีการจ่ายไฟออกจากขาของอาดุยโน่ ส่วน input จะเอาไว้รับเข้า จะไม่มีการจ่ายไฟออกมา)

5. โปรแกรมสามารถจดจำค่าที่เรากำหนดไว้ได้ เช่นถ้าเราสั่งให้ led ติด  led จะติด จนกว่าเราจะสั่งให้มันดับ  รวมถึงการตั้งโหมดของ pin   ถ้าเราตั้งให้เป็น Output มันจะจะเป็น Output จนกว่าเราจะสั่งให้มันเป็น Input

เครื่องมือ

1. pinMode(pin,mode);   คือคำสั่งที่เอาไว้กำหนดโหมด โดย  pin คือหมายเลขของขา  ตั้งแต่  0 -  13
ส่วน mode คือโหมด สามารถใส่ได้สองแบบคือ INPUT และ OUTPUT
ข้อควรระวัง 
-  INPUT และ OUTPUT จะต้องเป็นพิมพ์ใหญ่หมด และชื่อฟังก์ชันต้องพิมพ์ตามตัวอย่าง
- จะต้องมีเครื่องหมาย  semicolon ";"  ตามหลังทุกครั้งตามตัวอย่าง


2. digitalWrite(pin,state);   คือคำสั่งที่เอาไว้กำหนดสถานะของ pin  โดย  pin คือหมายเลขของขา ตั้งแต่  0 -  13
ส่วน state คือสถานะสามารถใส่ได้สองแบบคือ HIGH และ LOW
ข้อควรระวัง
-  HIGH และ LOW จะต้องเป็นพิมพ์ใหญ่หมด และชื่อฟังก์ชันต้องพิมพ์ตามตัวอย่าง
- จะต้องมีเครื่องหมาย  semicolon ";"  ตามหลังทุกครั้งตามตัวอย่าง


ภารกิจย่อย 1 : สั่งให้ LED 13 ดับ
จากข้อมูลภารกิจ ข้อที่ 5 เรารู้ว่า สั่งแค่ครั้งเดียว แล้วโปรแกรมก็จะทำงานอยู่อย่างนั้น  ดังนั้นในภารกิจย่อยนี้ เราจะทำการเขียนโค๊ดในขอบเขตของฟังก์ชัน setup  โดยเราจะใช้คำสั่ง pinMode และ digitalWrite ดังนี้

จากนั้นให้เรากด upload  (ในขณะอัพโหลด เราจะเห็นไฟบนบอร์ดกระพริบ)  เมื่อขึ้น Done uploading. แล้ว เราจะเห็นว่า led ดับ ดังรูป
LED 13 ดับ
อธิบายการทำงานของโปรแกรม
1.โปรแกรมเริ่มทำงานจากปีกกาเปิด ของ setup
2. โปรแกรมทำงานตามคำสั่ง pinMode(13,OUTPUT); กำหนดโหมดของ pin13 เป็น Output
3. โปรแกรมทำงานตามคำสั่ง digitalWrite(13,LOW); กำหนดสถานะของ pin13 เป็น Low ทำให้ไฟดับ
4. โปรแกรมทำงานฟังก์ชัน loop (จะอธิบายทีหลัง)

จากตรงนี้สรุปว่า โปรแกรมทำงานจากบนลงล่าง ซ้ายไปขวา เหมือนการอ่านหนังสือ

ในการพิมพ์คำสั่ง เราสามารถเว้นวรรค หรือเว้นบรรทัดได้อิสระ  แต่การเว้นนั้นจะต้องไม่ตัดคำ  คล้ายๆกับหลักการของภาษาอังกฤษ ดังรูป

จะเห็นว่าทุกๆแบบสามารถใช้ได้เหมือนกัน


ภารกิจย่อย 2: สั่งให้ LED 13 ติด

ก็จะเขียนในทำนองเดียวกัน เพียงแต่แก้ในส่วนของ digitalWrite จาก LOW เป็น HIGH  ดังนั้นจะขอไม่อธิบายการทำงาน
โค๊ดในส่วนของการทำให้ไฟติด
ไฟติด



ภารกิจย่อย 3 : สั่งให้ LED 13 ติด และดับ



อธิบายการทำงานของโปรแกรม
1.โปรแกรมเริ่มทำงานจากปีกกาเปิด ของ setup
2. โปรแกรมทำงานตามคำสั่ง pinMode(13,OUTPUT); กำหนดโหมดของ pin13 เป็น Output
3.โปรแกรมสิ้นสุดการทำงาน ของ setup ที่ ปีกกาปิด
4.โปรแกรมเริ่มทำงานจากปีกกาเปิด ของ loop
5.โปรแกรมทำงานตามคำสั่งdigitalWrite(13,HIGH); กำหนดสถานะของ pin13 เป็น HIGH ทำให้ไฟติด
6.โปรแกรมทำงานตามคำสั่ง digitalWrite(13,LOW); กำหนดสถานะของ pin13 เป็น Low ทำให้ไฟดับ
7.โปรแกรมสิ้นสุดการทำงาน ของ loop ที่ปีกกาปิด
8.โปรแกรมเริ่มทำงานใหม่ จากปีกกาเปิด ของ loop (กลับไปข้อ 4)

*จะเห็นว่าเกิดการทำงานซ้ำๆที่ฟังก์ชัน loop


เมื่อเรานำโค๊ดทั้งสองส่วนมารวมกัน   (ไม่จำเป็นต้องประกาศ pinMode ซ้ำหลายรอบรอบ)   


ไฟควรจะ ติด ดับ ติด ดับ ไปเรื่อยๆ...

แต่จากการทดลอง เราจะเห็นว่า ไฟติดหรี่มากๆ จนดูเหมือนดับ

ทำไมจึงเป็นเช่นนั้น ??
เพราะว่าระยะเวลาระหว่างคำสั่งไฟติดและไฟดับนั้น สั้นมาก

ทำให้เราแทบมองไม่เห็นช่วงที่ไฟติด ดังนั้นจึงดูเหมือนว่าไฟดับตลอด

ดังนั้น สิ่งที่เราต้องทำคือ หน่วงเวลา ช่วงที่ไฟติดให้นานขึ้น
สำหรับเครื่องมือที่ใช้ในการหน่วงเวลาคือ delay   โดยวิธีใช้คือ 
delay(period);  period คือช่วงเวลาที่เราต้องการหน่วง หน่วยเป็น millisecond หรือ 0.001 วินาที
เช่น ถ้าเราต้องการหน่วงเวลา 1 วินาที จะใช้คำสั่ง delay(1000);  เป็นต้น

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

เมื่อเราอัพโหลดโค๊ดลงไป เราก็จะได้ไฟกระพริบเหมือนในโปรแกรมตัวอย่าง  แต่เป็นโปรแกรมที่เราเขียนเอง เจ๋งปะหละ



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

3 ความคิดเห็น: