
ในบทเรียนนี้จะเป็นการเรียนรู้โปรแกรม Blink โดยโปรแกรมนี้เป็นโปรแกรมพื้นฐาน (Example) ของ Arduino เพื่อเรียนรู้การทำงานของ Output แบบ Digital โดยนำเอาการควบคุมหลอด LED บนตัว Arduino เป็นตัวแสดงผลอุปกรณ์ที่จำเป็นต้องใช้ มีดังนี้

จะเห็นได้ว่าทำการเชื่อมต่อสาย Pin 13 (สายสีแดง) ไปยังตัวต้านทานเพื่อปรับลดแรงดันไฟฟ้าเพื่อป้องกันหลอด LED ขาด (จริง ๆ ไม่ใช้ก็ได้นะ) จากนั้นก็ต่อไปยังขั้วบวกของ LED ("ขาที่ยาวกว่า" เป็นขั้วบวก "ขาที่สั้นกว่า"เป็นขั้วลบ) และต่อ GND ของบอร์ดไปยังขั้วลบของ LED



สำหรับมือใหม่แล้วคงจะงงกันอยู่ไม่น้อย ....เฮ้ยย!! "ตัวแปร" ....เฮ้ยย!! "ฟังก์ชัน" อะไรกันอะเนี้ย ม๊ายยเข้าจ๊ายยย เอาหล่ะครับงั้นเรามาทำความเข้าใจกันก่อนจะไปต่อในเนื้อหาลึก ๆ ใน EP ถัดไปนะครับ
"ตัวแปร"
ตัวแปร หรือ ที่เรียกกันว่า Variable มีอยู่หลายชนิด ให้จินตนาการให้เป็นเหมือนกล่องใบหนึ่งที่ทำการเก็บสิ่งต่าง ๆ ไว้ในนั้น โดยมีไวยากรณ์หรือรูปแบบการเขียนคือ
ชนิดของตัวแปร ชื่อตัวแปร = ค่าที่จะกำหนด;
เช่น
int LED_Pin = 13;
ก็จะเป็นการสร้างตัวแปรชนิด int ย่อมาจาก integer (จำนวนเต็ม) มีชื่อว่า LED_Pin โดยข้างในมีค่าเท่ากับ 13 เอาหล่ะงั้นเราไปดูกันต่อว่าตัวแปรมันมีกี่ชนิด และมีคุณสมบัติยังไงกันบ้าง ไปดูกัน.......
| ชนิดข้อมูล | การเก็บข้อมูล | ขนาด |
| boolean | จริง (True : 1) หรือ เท็จ (False : 0) | 1 บิต |
| char | อักขระหรือตัวเลขในรูปตัวอักขระ | 1 ไบต์เก็บได้ตั้งแต่ -128 ถึง 127 |
| unsigned char | อักขระหรือตัวเลขในรูปตัวอักขระ | 1 ไบต์ เก็บได้ตั้งแต่ 0 ถึง 255 |
| byte | ไบต์ | 1 ไบต์ เก็บได้ตั้งแต่ 0 ถึง 255 |
| int | เก็บจำนวนเต็ม | 2 ไบต์ เก็บจำนวนเต็ม -32768 ถึง 32767 |
| unsigned int | เก็บจำนวนเต็ม ไม่คิดเครื่องหมาย |
2 ไบต์ เก็บจำนวนเต็ม ไม่คิดเครื่องหมาย 0 ถึง 65535 |
| long | เก็บจำนวนเต็มแบบยาว | 4 ไบต์ เก็บจำนวนเต็มแบบยาว -2147483648 ถึง 2147483649 |
| unsigned long | เก็บจำนวนเต็มแบบยาว ไม่คิดเครื่องหมาย | 4 ไบต์ เก็บจำนวนเต็มแบบยาว ไม่คิดเครื่องหมาย 0 ถึง 429467296 |
| float | เก็บทศนิยม | 4 ไบต์ เก็บตัวเลขแบบทศนิยม 3.4*10^-38 ถึง 3.4*10^38 |
| double (เฉพาะบอร์ด Arduino Due) | เก็บตัวเลขแบบทศนิยมแบบยาว | 8 ไบต์ เก็บตัวเลขแบบทศนิยม 3.4*10^-308 ถึง 3.4*10^308 |
| String | ชุดอักขระ (ข้อความ) | ไม่ระบุ |
ชักจะเยอะใช่ไหม ? เอาเป็นว่าเข้าใจกันคราว ๆ ไปก่อนนะครับ อย่าพึ่งเครียด เพราะเดี๋ยวใน EP ต่อ ๆ ไป ผมจะยกตัวอย่างการใช้งานมาให้ทุก ๆ คนดูกัน ว่ามันใช้กันยังไง เอาเป็นว่าตอนนี้เข้าใจคอนเซปกันก่อนเป็นพอ เอาหล่ะไปเรื่องต่อไปกันเถอะ....
"ฟังก์ชัน"
เช่น
"ฟังก์ชัน Loop"
จริง ๆ เรื่องนี้ค่อนข้างลึกมาก และไม่เหมาะสำหรับผู้เริ่มต้นสักเท่าใหร่ แต่ผมจะพูดเป็นคอนเซปให้เข้าใจกันง่าย ๆ ก่อนล่ะกัน..... ให้นึกถึงรีโมททีวีกันนะครับ "ฟังก์ชัน" ก็เหมือนปุ่มบนรีโมททีวีนั้นแหละ เมื่อเรากดปุ่ม หรือเรียกใช้ มันก็จะทำงานตามคำสั่งที่ถูกเขียนไว้ข้างในนั้นเอง (ฮ่าๆ คิดแบบนี้ง่ายป๊ะ!!) ........ Arduino เองถ้าเริ่มการทำงานขึ้นมามันก็จะเรียนใช้ Setup ก่อนหนึ่งครั้ง จากนั้นก็จะเรียก Loop ซ้ำไปเรื่อย ๆ โดยที่เราจะให้มันทำอะไร เราก็เขียนคำสั่งใว้ในนั้น .......เป็นไงหล่ะ "เริ่มเห็นภาพใช่ไหม หมู่เฮา"
pinMode(LED_Pin, OUTPUT);
คำสั่งนี้จะเป็นคำสั่งกดหนดโหมดของ Pin ที่เราจะใช้งาน จริง ๆ เราจะเขียน
pinMode(13 , OUTPUT); อย่างนี้ก็ได้นะ.... ไม่ผิดอะไร แต่ผมว่ากำหนดเป็นตัวแปรมาก่อนมันง่ายดี เวลาใน Loop มีการเรียกใช้เยอะ ๆ บ่อย ๆ ถ้าเราอยากย้ายไป Pin อื่น เช่น Pin 2 หรืออื่น ๆ ตามแต่อารมณ์ เราก็แค่ไปแก้ที่ส่วนการกำหนดตัวแปรเป็น int LED_Pin = 2; เท่านั้นก็จบล่ะจริงไหม
digitalWrite(LED_Pin, HIGH);
คำสั่งนี้จะทำการส่งสัญญาณ digital ออกทาง LED_Pin เป็น HIGH ซึ่งมีผลให้มีแรงดันไฟออกทาง Pin 13 ทำให้หลอด LED ติดนั้นเองเจ้าค่ะ
LED_Pindelay(1000);
คำสั่งนี้เป็นคำสั่ง "หน่วงเวลา" โดยเราต้องใส่ค่าเข้าไปเป็นหน่วย "มิลลิวินาที" โดยที่ 1000 มิลลิวินาที เท่ากับ 1 วินาที นั้นหมายความว่ามันจะหน่วงเวลา 1 วินาที นั้นเอง ซึ่งคำสั่งนี้อยู่ถัดจากคำสั่งทำให้ LED ติด นั้นหมายความว่า LED จะติด 1 วินาที ก่อนเข้าสู่คำสั่งถัดไปนั้นเอง
digitalWrite(LED_Pin, LOW);
คำสั่งนี้จะทำการส่งสัญญาณ digital ออกทาง LED_Pin เป็น LOW ซึ่งมีผลให้ไม่มีแรงดันไฟออกทาง Pin 13 ทำให้หลอด LED ดับนั้นเอง พอหลังจากนั้นก็หน่วงเวลา 1 วินาที จบคำสั่งทั้งหมด จากนั้นก็วนกลับไปทำใหม่ทั้งหมด เพราะคำสั่งอยู่ใน ฟังก์ชัน Loop เป็นผลทำให้เราเห็นเป็นไฟกระพริบนั้นเอง พ๊าม พ๊าม พ๊าม!!!
.............................................................................
จบกันไปแล้วนะครับกับบทเรียนแรกของเรา .....เอาหล่ะเดี๋ยวจะมีอะไรมาสอนกันอีกรอติดตามกัน ส่วนใครที่มีคำติชมยังไง หรืออยากให้สอนเรื่องไหน ก็คอมเม้นกันได้เลยนะครับ ขอให้ทุกคนสนุกกับการเรียนรู้ครับ
Arduino.MakerZone