วันเสาร์ที่ 25 เมษายน พ.ศ. 2558

Microcontroller Ep.4 : Arduino & LED Control

- Microcontroller Ep.4 -

          การเขียนโปรแกรมบน Arduino เพื่อใช้ในการทำวงจรไฟกระพริบ หรือควบคุมหลอดแอลอีดี  ใน Arduino นั้นจะมีพอร์ทสำหรับใช้ในการควบคุมที่มีการทำงานเพียงสองสถานะคือ มีไฟเลี้ยง กับไม่มีไฟเลี้ยง ซึ่งเราจะเรียกว่า ดิจิตอล อินพุท/เอาท์พุท พอร์ท (D I/O Port ) เนื่องจากว่าในพอร์ทเดียวกันนั้นเราสามารถตั้งค่าให้เป็นอินพุทหรือเอาท์พุทก็ได้

Arduino Uno R3
            
                ในกรอบสีแดง คือ พอร์ทที่สามารถทำมาใช้เป็นดิจตอลเอาพุทได้ทั้งหมด ซึ่งเราสามารถเลือกใช้ได้โดยการเขียนโปรแกรมลงไปบน Arduino   



                การเขียนโปรแกรมบน Arduino นั้น จะแบ่งเป็นสองส่วนหลักๆ คือ ฟังก์ชั่น setup() ซึ่งโปรแกรมจะเข้ามาทำงานในฟังก์ชั่นนี้เพียงครั้งเดียวใช้ในการตั้งค่าอุปกรณ์ต่างๆของ Arduino และ loop() ซึ่ง Arduino จะเข้ามาทำงานในฟังก์ชั่นนี้ต่อเนื่องไปเรื่อยๆ 
                
               


                  การทำงานของวงจรไฟกระพริบ ก็คือ การสั่งให้ Arduino นั้นเปิดและปิดหลอดแอลอีดีซ้ำๆกันไปเรื่อยๆ โดยที่ มีระยะห่างเป็นเวลาเท่าๆกัน ซึ่งเราจะต้องเริ่มด้วยการกำหนดว่าจะใช้พอร์ทไหนควบคุมแอลอีดีหลอดใด
int  LED_1 = 13;

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


pinMode(LED_1, OUTPUT);

ซึ่งเราจะเขียนไว้ในฟังก์ชั่น setup() เมื่อเรากำหนดโหมดในการทำงานของพอร์ทเสร็จสิ้นแล้วเราก็จะสั่งให้ Arduino นั้นทำการเปิดปิดหลอดแอลอีดีซ้ำๆกันไปเรื่อยๆในฟังก์ชั่น loop() โดยใช้คำสั่ง

digitalWrite(LED_1, HIGH);
delay(1000);  
digitalWrite(LED_1, LOW);
delay(1000); 

คำสั่ง 
  • digitalWrite( , ) นั้นจะใช้ในการกำหนดสถานะของพอร์ท ซึ่งเราจะใส่พอร์ทที่จะกำหนดและค่าสถานะ HIGH หรือ LOW
  • delay( ) นั้นใช้ในการหน่วงเวลาก่อนที่จะทำตามบรรทัดต่อไปโดยที่จะมีหน่วยเป็นมิลลิวินาที(millisecond) ซึ่งในตัวอย่าง จะเป็นการหน่วงเวลาไว้ 1000 มิลลิวินาที หรือ 1 วินาที
การทำงาน
  1. สั่งให้ดิจิตอลพอร์ท 13 มีค่าสถานะเป็น  HIGH ซึ่งจะทำให้หลอดแอลอีดีสว่าง
  2. หน่วงเวลาไว้ 1 วินาที
  3. สั่งให้ดิจิตอลพอร์ท 13 มีค่าสถานะเป็น  LOW ซึ่งจะทำให้หลอดแอลอีดีดับ
  4. หน่วงเวลาไว้ 1 วินาที
เมื่อทำตามคำสั่งที่เขียนไว้ทั้งหมดแล้วก็จะกลับไปเริ่มทำงานที่ คำสั่งแรกคือ digitalWrite(LED_1, HIGH); อีกครั้งเป็นอย่างนี้ไปเรื่อยๆจนกว่าจะหยุดจ่ายไฟให้ Arduino 


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

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