รู้จักกับ Text editor
Text editor ก็คือส่วนที่เราเอาไว้เขียน หรือแก้ไขโค๊ดต่างๆ ซึ่งข้อความใน text editor นั้นสามารถแบ่งได้เป็น 2 ประเภท คือส่วนของโปรแกรม หรือ ชุดคำสั่ง และส่วนของคอมเม้นต์ คือส่วนที่เป็นคำอธิบาย ไม่เกี่ยวข้องกับโปรแกรม จะมี หรือไม่มีก็ได้ แต่ก็ควรมีเพื่อให้ง่ายต่อการอ่านของคนอื่น หรือตัวเราเอง(บางครั้งการเขียนโปรแกรมยาวๆ เก็บไว้ พอกลับมาอ่าน ต้องใช้เวลาค่อนข้างมากกว่าจะเข้าใจว่าตอนนั้นเขียนอะไรลงไป)
เริ่มต้นเขียนโปรแกรม
ไปที่ File -> หรือ ctrl + n เพื่อสร้างหน้าใหม่
|
การสร้างหน้าต่างใหม่ |
เมื่อสร้างหน้าต่างใหม่แล้ว จะเห็นดังรูป
|
หน้าต่างใหม่ |
สิ่งที่ควรรู้ในการเขียนโปรแกรมบน arduino ide
1.ปุ่ม verify : ตรวจสอบความถูกต้องของโปรแกรม
2. Comment : มีก็ดี ไม่มีก็ได้
คอมเม้น เป็นส่วนที่ไม่มีผลใดใด กับโปรแกรม และสามารถเขียนเป็นภาษาไทยได้ด้วย แต่โดยส่วนตัวผมแนะนำภาษาอังกฤษมากกว่า เพื่อความเป็นสากล จากหน้าต่างที่เราเปิดขึ้นมาใหม่ จะเห็นว่ามีคอมเม้นอยู่แล้ว![]() |
ลูกศรแสดงส่วนที่เป็นคอมเม้น |
1. คลิ๊กเลือกตรงที่เราจะพิมพ์คอมเม้น
2. พิมพ์ "//" (พิมพ์เฉพาะในเครื่องหมายคำพูด และพิมพ์ติดกันไม่ต้องเว้นวรรค)
3. พิมพ์ข้อความที่เราต้องการ แต่มีข้อแม้ว่าต้องอยู่ข้างหลังเครื่องหมาย "//" และอยู่ในบรรทัดเดียวกัน
ตัวอย่าง
![]() |
บางทีมันขึ้นมาให้เซฟก่อน เราก็เซฟไปตามโอกาส
![]() |
เรียบร้อย |
อยากที่บอกว่า นี่เป็น 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 ";" ตามหลังทุกครั้งตามตัวอย่าง
ส่วน state คือสถานะสามารถใส่ได้สองแบบคือ HIGH และ LOW
ข้อควรระวัง
- HIGH และ LOW จะต้องเป็นพิมพ์ใหญ่หมด และชื่อฟังก์ชันต้องพิมพ์ตามตัวอย่าง
- จะต้องมีเครื่องหมาย semicolon ";" ตามหลังทุกครั้งตามตัวอย่าง
จากข้อมูลภารกิจ ข้อที่ 5 เรารู้ว่า สั่งแค่ครั้งเดียว แล้วโปรแกรมก็จะทำงานอยู่อย่างนั้น ดังนั้นในภารกิจย่อยนี้ เราจะทำการเขียนโค๊ดในขอบเขตของฟังก์ชัน setup โดยเราจะใช้คำสั่ง pinMode และ digitalWrite ดังนี้
![]() |
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
ไฟควรจะ ติด ดับ ติด ดับ ไปเรื่อยๆ...
แต่จากการทดลอง เราจะเห็นว่า ไฟติดหรี่มากๆ จนดูเหมือนดับ
ทำไมจึงเป็นเช่นนั้น ??
เพราะว่าระยะเวลาระหว่างคำสั่งไฟติดและไฟดับนั้น สั้นมาก
ทำให้เราแทบมองไม่เห็นช่วงที่ไฟติด ดังนั้นจึงดูเหมือนว่าไฟดับตลอด
ดังนั้น สิ่งที่เราต้องทำคือ หน่วงเวลา ช่วงที่ไฟติดให้นานขึ้น
สำหรับเครื่องมือที่ใช้ในการหน่วงเวลาคือ delay โดยวิธีใช้คือ
delay(period); period คือช่วงเวลาที่เราต้องการหน่วง หน่วยเป็น millisecond หรือ 0.001 วินาที
เช่น ถ้าเราต้องการหน่วงเวลา 1 วินาที จะใช้คำสั่ง delay(1000); เป็นต้น
ดังนั้นถ้าเราจะเขียนโปรแกรมให้ LED ติดเป็นเวลา 1 วินาที และดับเป็นเวลา หนึ่งวินาที
จะสามารถเขียนได้ดังนี้
![]() |
โปรแกรมไฟกระพริบที่สมบูรณ์พร้อมคำอธิบาย |
ก็ขอสิ้นสุดบทที่สอง เริ่มต้นใช้งาน Arduino ide เพียงเท่านี้ เราอาจจะทำการทดลองต่อโดยให้ LED กระพริบแบบต่างๆ โดยปรับค่าของ delay แล้วดูผลว่าเป็นอย่างไร พบกันใหม่บทหน้า สวัสดีครับ
Thank......Kub
ตอบลบ^____^
ลบขอบคุณครับ
ตอบลบ