REVIEWS

REVIEWS GRAVITECH

รีวิว

Arduino Startup kit บทที่ 5 : แสงสว่าง

14 May 2019

ในบทนี้เป็นการทดลองต่อวงจรและการเขียนโปรแกรมควบคุม LED

     การเขียนโปรแกรมเพื่อควบคุมการติด-ดับของหลอดไฟ LED ถือเป็นการเขียนโปรแกรมบน Arduino Nano ที่ง่ายที่สุด ทำให้ผู้ที่ไม่เคยเขียนโปรแกรมคอมพิวเตอร์มาก่อนก็สามารถทำความเข้าใจได้ไม่ยาก อีกทั้งยังเป็นการเรียนรู้การต่อวงจรอิเล็คทรอนิกส์เบื้องต้นไปพร้อมกันด้วย

LED คืออะไร ?

 

 

     จากที่ได้แนะนำอุปกรณ์ที่อยู่ในชุด Arduino Startup kit กันไปแล้วในบทที่ 1 คราวนี้เรามาทำความรู้จักกับ LED ในดียิ่งขึ้นกันดีกว่า LED นั่นคืออุปกรณ์อิเลคทรอนิกส์ที่ทำหน้าที่ให้แสงสว่างออกมาเมื่อเราจ่ายพลังงานไฟฟ้าให้กับมัน LED ใช้สำหรับแจ้งเตือนสถานะต่างๆบนบอร์อิเล็คทรอนิกส์ ที่เราพบเห็นได้ทั่วไปเช่นใช้บอกสถานะว่าอุปกรณ์เครื่องใช้ไฟฟ้านั้นกำลังทำงานอยู่ หรือบอกว่าโทรศัพท์มือของเราแบตเตอรี่กำลังจะหมด นอกจากนั้นแล้ว LED ยังสามารถใช้เพื่อเป็นแหล่งให้แสงสว่างในชีวิตประจำวันได้อีกด้วย ด้วยความที่ LED นั้นใช้พลังงานน้อยกว่าหลอดไฟประเภทอื่น ทำให้เริ่มมีคนหันมาใช้ LED แทนที่หลอดไฟเดิมที่ใช้กันอยู่ในบ้านเรือน มากขึ้น ใน Arduino Startup kit มี LED อยู่ในชุดทั้งหมด 6 ดวงแบ่งเป็นสีแดง สีเขียว และสีเหลืองอย่างละ 2 ดวง การทดลองแรกสำหรับบทนี้จะเป็นการทดลองต่อวงจรเพื่อจ่ายพลังงานไฟฟ้าให้กับ LED เพื่อให้มันสว่าง โดยอาศัยพลังงานไฟฟ้าระดับ 5 โวลต์ที่มาจาก บอร์ด Arduino Nano ในการทดลองนี้เป็นเพียงการต่อวงจรอิเล็คทรอนิกส์ จึงยังไม่มีการเขียนโปรแกรมในการทดลองนี้

 

 

     การที่จะทำให้หลอด LED สว่างขึ้นมาได้นั้น จำเป็นต้องป้อนแรงดันไฟฟ้าให้กับมัน เมื่อมีกระแสไฟฟ้าไหลผ่านตัวหลอด LED ในทิศทางที่ถูกต้อง หลอด LED ดวงนั้นก็จะสว่างขึ้นมาทันที หลอด LED โดยทั่วไปนั้นจะมีอยู่ 2 ขั้วถ้าให้จำง่ายๆ วิธีสังเกตุขาของ LED ว่าขาไหนเป็นบวก หรือขาไหนเป็นลบให้สังเกตุที่ความยาวของขา LED ซึ่งจะไม่เท่ากัน ขาข้างที่ยาวกว่านั้นคือขั้วบวกส่วนอีกข้างคือขั้วลบ

แหล่งจ่ายพลังงานสำหรับ LED

     บอร์ด Arduino Nano มีความสามารถในการรักษาระดับแรงดันไฟฟ้าให้คงที่ได้ โดยระดับแรงดันไฟฟ้านั้นอยู่ที่ 5 โวลต์ ซึ่งเป็นระดับแรงดันไฟฟ้ามาตรฐานสำหรับอุปกรณ์อิเล็คทรอนิกส์ส่วนใหญ่ ครางนี้เราจะมาดูกันว่าขาของ Arduino Nano ขาใดที่สามารถป้อนแรงดันไฟฟ้าขนาด 5 โวลต์มาให้เราใช้ต่อวงจร LED ได้

ให้สังเกตุที่บอร์ด Arduino Nano ตามรูปด้านบนนี้ จะพบว่ามีอยู่ขาหนึ่งที่มีตัวอักษรเขียนกำกับไว้บนบอร์ดว่า 5V ขานี้นั่นเองที่สามารถจ่ายแรงดันไฟฟ้าขนาด 5 โวลต์ออกมาเพื่อให้เราใช้งานได้ยังมีอีกขาของ Arduino Nano ที่มีความสำคัญในการต่อวงจรนั่นคือขา GND หากเปรียบเทียบขา 5V ของ Arduino Nano เป็นแหล่งจ่ายแรงดันขั้วบวกแล้ว GND จะถือว่าเป็นด้านขั้วลบ สำหรับการต่อวงจรอิเล็คทรอนิกส์

 

     จากรูปด้านบนขา GND มีอยู่สองที่ ตามวงกลมสีแดง

ต่อวงจรให้ LED สว่าง

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

 

 

 

     1. Arduino Nano

     2. LED 5mm

     3. Resistor 330 Ohms

     หลักการในการต่อคือ ต่อให้แรงดันขนาด 5 โวลต์ ให้ไหลผ่านหลอด LED แล้วไหลลงสู่ GND หลอด LED ก็จะสว่างขึ้นมา แต่เราจำเป็นต้องเพิ่มตัวต้านทานขนาด 330 โอห์ม เข้าไปในเส้นทางของวงจรด้วย เพื่อต้านทานกระแสไฟฟ้าไม่ให้ไหลผ่าน LED มากเกินไป เมื่อต่อเสร็จแล้วจะได้วงจรบน Breadboard ตามรูปด้านบน คราวนี้ให้ลองเสียบสาย USB เข้ากับ Arduino Nano เพื่อจ่ายไฟให้กับวงจรของเรา เมื่อต่อสาย USB แล้วจะพบว่าหลอด LED ที่เราต่อนั้นสว่าง

     เมื่อทำได้แล้วให้ลองเปลี่ยนค่าของตัวต้านทานดู จากเดิมที่ใช้เป็นค่า 330 โอห์ม ให้ลองเปลี่ยนเป็น 10 กิโลโอห์ม (10,000 โอห์ม) แล้วสังเกตุ การเปลี่ยนแปลง

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

ใช้ arduino nano ควบคุม LED

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

 

 

 

      ขั้นแรกเปิดโปรแกรม Arduino ที่ได้ติดตั้งไว้แล้วในคอมพิวเตอร์ของเรา พร้อมทั้งให้ต่อ Arduino เข้ากับคอมพิวเตอร์ของเราด้วยสาย USB ที่อยู่ในกล่อง Arduino Startup หลังจากนั้นอย่าลืมตั้งค่าของบอร์ดและการเชื่อมต่อให้ตรงกับบอร์ดของเราเพียงเท่านี้ก็สามารถเข้าสู่การเขียนโปรแกรมแล้ว Arduino Nano มีขาที่เป็นแบบดิจิตอลให้เราใช้งานได้เบื้องต้นอยู่ 12 ขาในกรอบสีเหลี่ยมสีแดงตามที่เห็นในรูปด้านล่าง

 

 

     ขาดิจิตอลของ Arduino สามารถส่งค่าที่เป็นดิจิตอลออกมาได้ โดยสัญญาณดิจิตอลนั้นถ้าอธิบายให้เข้าใจง่ายๆ มีอยู่ 2 รูปแบบคือ สัญญาณ HIGH และ LOW

    เมื่ออยู่ในสถานะ “HIGH” ขาของ Arduino Nano จะส่งแรงดันไฟฟ้าขนาด 5 โวลต์ออกมา

     เมื่ออยู่ในสถานะ “LOW” ขาของ Arduino Nano จะเชื่อมต่อกับ Ground (GND)

     ให้ทดลองต่อวงจรโดยใช้สายไฟต่อเข้ากับ ขา D3 ของ Arduino Nano เพื่อนนำแรงดันไฟฟ้าที่ได้จากขานี้ ป้อนให้กับหลอด LED โดยก่อนที่จะป้อนให้กับ LED   ให้ต่ออนุกรมเข้ากับตัวต้านทานที่มีค่าความตานทาน 330 โอห์ม เพื่อทำให้กระแสไฟฟ้าไหลผ่านวงจรมากเกินไป เพราะการใช้กระแสไฟฟ้ามากเกินกว่าที่ Arduino  Nano รับได้ อาจทำให้บอร์ดหยุดทำงานได้ และสุดท้ายต้องให้กระแสไฟฟ้านั้นไหลไปสู่ GROUND เพียงเท่านี้วงจรที่เราต่อก็เสร็จสมบูรณ์ วงจรที่ต่อมีแผนผังเหมือนรูปด้านล่างนี้

 

     และรูปด้านล่างคือรูปของการต่อวงจรด้วยอุปกรณ์ต่างๆบน Breadboard

 

     เมื่อได้วงจรแล้วคราวนี้เรามาเขียนโปรแกรมเพื่อส่งงานให้หลอด LED ดวงนี้สว่าง

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

void setup ()

{

//put your setup code here, to run once

}

void loop ()

{

// put your main code here, to run repeatedly

}

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

     สำหรับคำสั่งที่สั่งให้ Arduino Nano ส่งสัญญาณ HIGH ออกมาที่ขา D3 ซึ่งต่ออยู่กับหลอด LED ของเรานั่นคือ

void setup ()

{

pinMode(3,OUTPUT);

}

void loop ()

{

digitalWrite(3,HIGH);

}

     เมื่อเขียนเสร็จแล้วให้เรากด UPLOAD เพื่อตรวจสอบโค้ดโปรแกรมที่เราเขียนว่าถูกต้องหรือไม่พร้อมทั้งส่งโค้ดโปรแกรมที่เราเขียนไปยังบอร์ด Arduino Nano ผ่านทางสาย USB

     คำอธิบาย คำสั่งแรงที่เราได้เขียนลงไปในฟังก์ชัน setup เป็นการกำหนดโหมดการทำงานของ pin ที่เราต้องการ โดยในแต่ละ pin สามารถแยกได้เป็นสองโหมดนั่นคือ

     ทำหน้าที่เป็น pin สำหรับส่งสัญญาณออกมาเพื่อควบคุมสิ่งต่างๆเราเรียกว่า OUTPUT

     ทำหน้าที่เป็น pin สำหรับรับค่าสัญญาณเพื่อนำมาประมวลผลเราเรียกว่า  INPUT

     แน่นอนว่าการสั่งงานให้ LED สว่างนั้นเป็นการส่งสัญญาณออกมาหรือเรียกว่า OUTPUT นั่นเอง ดังนั้นก่อนที่โปแกรมจะเริ่มทำงานในส่วนข้องฟังก์ชัน loop จึงกำหนดโหมดการทำงานว่า

pinMode(3,OUTPUT);

     หมายความว่ากำหนดให้ pin หมายเลข 3 ทำหน้าที่เป็น OUTPUT เมื่อกำหนดโหมดได้เรียบร้อยแล้วขั้นตอนต่อมาเป็นการสั่งให้ขา OUTPUT ส่งสัญญาณออกมา ซึ่งสัญญาณที่ส่งออกมานั้นเป็นสัญญาณแบบดิจิตอล ที่มีอยู่ 2 สถานะคือ HIGH และ LOW ที่สถานะ HIGH จะมีการจ่ายแรงดันไฟฟ้าขนาด 5 โวลต์ออกมา ส่วนสถานะ LOW จะเป็นการเชื่อมต่อกับ GND แทน และในการสั่งให้หลอด LED สว่างเราต้องจ่ายแรงดันให้กับ LED  ดังนั้นจึงเขียนโปรแกรมด้วยคำสั่งว่า

digitalWrite(3,HIGH);

     เพื่อเป็นการสั่งให้ pin หมายเลข 3 ส่งแรงดันขนาด 5 โวลต์ออกมา เพื่อทำให้ LED สว่าง คำถามต่อมาคือถ้าเราอยากให้ LED ดวงนี้ดับล่ะจะทำอย่างไร แน่นอนว่าเราต้องเขียนโปรแกรมเพื่อให้ pin หมายเลข 3 หยุดการจ่ายแรงดันไฟฟ้ออก หรือทำให้มันเชื่อมต่อกับ GND แทน หากต้องการทำแบบนี้สามารถใช้คำสั่ง

digitalWrite(3,LOW);

      เพียงเท่านี้เราก็สามารถทำให้หลอดไฟดับได้แล้ว ตัวอย่างโปรแกรมที่สั่งงานให้หลอดไฟ LED ดับคือ

void setup ()

{

pinMode(3,OUTPUT);

}

void loop ()

{

digitalWrite(3,LOW);

}

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

SPECIFICATION