รู้จักกับบอร์ดการเรียนรู้สำหรับผู้เริ่มต้นและสิ่งที่ควรรู้ก่อนเริ่มใช้งาน Arduino



เปิดตัว "บอร์ดการเรียนรู้สำหรับผู้เริ่มต้นใหม่" เป็น Product ตัวใหม่จาก PrinceBot สำหรับใครที่กำลังเริ่มเรียนรู้หรือเริ่มศึกษา Arduino แต่ไม่รู้จะเริ่มจากตรงไหนหรือยังไงดี เจ้าของบล็อกขอแนะนำบอร์ดการเรียนรู้ตัวนี้และบทความชุดนี้เป็นคำตอบให้กับผู้อ่านนะครับบ :D

เนื้อหาที่มีในบทความนี้
• สวัสดี~ เรามาทำความรู้จักกันเถอะ
• รู้จัก input และ output
• พื้นฐานโปรแกรมที่ควรรู้ก่อนอ่านบทความชุดนี้

สวัสดี~ เรามาทำความรู้จักกันเถอะ

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



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




Button switch และ LED



มีช่องให้เสียบสายไฟด้วย จ่ายที่แรงดัน 6-12v ได้เลย เผื่อใช้ในกรณีที่ไม่ได้ต่อไฟจากสาย USB


Knop หรือก็คือ R ปรับค่าได้(สีฟ้า) และยังมีบอร์ดทดลอง เผื่อว่าเราอยากจะต่ออะไรเพิ่มเติมที่นอกเหนือจากที่บอร์ดมี


จากรูปนี้ส่วนที่จะเห็นหลัก ๆ เลยคือจอแสดงผล OLED มี Buzzer กลม ๆ สีดำ มี Relay ตัวสีฟ้า ยังมี Sensor แสง และอุณหภูมิอยู่อีกด้วย เห็นแล้วก็ใจเย็น ๆ กันก่อนนะครับ บทความต่อ ๆ ไปมีให้เล่นเต็มที่แน่นอน ได้เรียนรู้กันแบบจุใจกันเลยย

รู้จัก Input และ Output

เราได้รู้จักกับตัวบอร์ดนี้กันพอหอมปากหอมคอกันเรียบร้อยแล้ว เจ้าของบล็อกก็มีเรื่องที่อยากจะให้ผู้อ่านโดยเฉพาะสำหรับมือใหม่ได้ทราบก่อนคือเรื่องของ Input และ Output นั่นเอง

Input คืออะไร ? ถ้าพูดถึง input ใน Arduino มันก็คือส่วนที่รับค่าบางอย่างเข้ามาจากภายนอก ไม่ว่าจะเป็นจากมนุษย์เองหรือจากสภาพแวนล้อมรอบ ๆ ถ้าให้ยกตัวอย่างง่าย ๆ ก็คือการกดปุ่ม การกดลงคือ 1 และปล่อยก็คือ 0 ตัว Arduino ก็จะสามารถรู้ได้ว่าตอนนี้ปุ่มมันถูกกดหรือเปล่าจากการที่มันรับ Input เข้ามาว่าเป็น 1 หรือ 0 นั่นเอง เราเรียก Input แบบนี้ว่า Digital Input ก็คือมีค่าแค่ 1 กับ 0


นอกจาก Digital input ตัว Arduino เองยังสามารถอ่านข้อมูลจาก Analog ได้ด้วยเช่นกัน หรือก็คืออ่านค่าแรงดันจาก Sensor ซึ่งตรงนี้จะอธิบายกันอีกทีในบทความถัด ๆ ไป แต่อยากให้รู้ว่า Arduino สามารถอ่านค่า Analog จาก Sensor ได้เป็นค่าระหว่าง 0 - 1023 ถ้าเทียบเป็นแรงดันมันก็คือแรงดันระหว่าง 0-5v นั่นเอง

แล้ว Output ละ..?  output คือส่วนที่ Arduino เป็นคนควบคุมหรือสั่งงานออกมาให้เกิด Action อะไรบางอย่าง เช่นสั่ง ให้ LED ติดหรือดับ สั่งให้ควบคุมการแสดงผลจอ สั่งให้ motor หมุน ทั้งหมดแล้ว Output มันเกิดขึ้นจากตัวเลขแค่ 1 และ 0 ซึ่งสามารถอธิบายได้หลายอย่างเช่น ทำงาน หรือหยุดทำงาน เปิด หรือปิด เคลื่อนที่ หรือหยุดเคลื่อนที่ แล้วแต่เราจะนิยาม แต่ทั้งหมดล้วนมาจากพื้นฐานแค่ 1 หรือ 0 นั่นแหละ

ตัวอย่าง ใช้ LED เป็น Output

อาจจะยังไม่ค่อยเห็นภาพเนอะ แต่เดี๋ยวต่อ ๆ ไปได้ลองอ่านได้ลองทำตามรับรองว่า เขียน Arduino เป็นแน่นอน // ถ้าไม่เป็น กระทืบ PrinceBot ได้เลย :D

พื้นฐานโปรแกรมที่ควรรู้ก่อนอ่านบทความนี้

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

แต่ถึงอย่างนั้น ถ้าจะไม่ให้พูดถึงการเขียนภาษา c++ บ้าง ก็คงเป็นไปไม่ได้ เพราะฉะนั้นเจ้าของบล็อกก็จะพูดถึงการเขียนโปรแกรมที่คิดว่าจะได้ใช้ในบทความชุดนี้ให้ //ใจดีใช้มั้ยล่ะ :D

ตัวแปร

ถ้านึกถึงตัวแปรในคณิตศาสตร์มันก็คือสิ่งที่เอาไว้แทนค่าตัวเลขด้วย x หรือ y ใช่ไหม ในทางโปรแกรมก็คงพูดถึงคล้าย ๆ กันว่าตัวแปรมีหน้าที่ไว้เก็บค่าข้อมูลบางอย่าง สามารถนำตัวแปรมา + - * / ได้เหมือนในวิชาคณิตศาสตร์

สิ่งที่ทำให้ตัวแปรในโปรแกรมแตกต่างไปจากตัวแปรคณิตศาสตร์ก็คงเป็นชนิดของตัวแปร ซึ่งตัวแปรในภาษา c++ ไม่ได้มีแค่ตัวเลขอย่างเดียว ยังมีแบ่งเป็นชนิดอีกด้วย เช่น ตัวเลขจำนวนเต็ม ตัวเลขทศนิยม ค่าตรรกะ True false ตัวอักษร หรือข้อความ ซึ่งทั้งหมดนี้ทำให้ตัวแปรในภาษาโปรแกรมแตกต่างไปจากตัวแปรคณิตศาสตร์ยังไงล่ะ

ตอนนี้เรามาลองสร้างตัวแปรคร่าว ๆ ให้ดูก่อน


ตัวแปรสามารถทำ Operation หรือการคำนวณทางคณิตศาสตร์ได้


ในทางปฏิบัติจริง ตัวแปรมีประโยชน์มากมายมหาศาล และ ก็ยังเป็นโทษมหันต์ได้เช่นกัน อยู่ที่ประสบการณ์ที่เราค่อย ๆ สั่งสมความรู้ เพราะเรื่องนี้จะไปพูดถึงเรื่อง Advance อีกขั้นนึง ว่าด้วยเรื่องหน่วยความจำ สิ่งที่หลายคนมองข้าม : รู้จักกับ Memory ซึ่งในบทความชุดนี้ยังไม่พูดถึงหรือลงลึกอะไรขนาดนั้น

การเขียนโปรแกรมแบบเงื่อนไข

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

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


การเขียนโปรแกรมแบบมีเงื่อนไขสามารถเขียนได้อีกหลายแบบ


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

การเขียนโปรแกรมแบบ Function

ที่ต้องพูดถึงเรื่องนี้เป็นเรื่องถัดมา เพราะว่านี่ก็เป็นอีกเรื่องสำคัญเช่นกัน ถ้าเกิดว่าเราอยากจะเขียน Arduino ให้เป็นเร็ว เข้าใจง่าย เราก็ควรมีพื้นฐานเรื่อง Function ไว้บ้าง เพราะการเรียกใช้คำสั่งใน Arduino จะเรียกผ่าน Function ทั้งนั้น



จากตรงนี้เราจะเห็นว่า digitalWrite มันก็คือ Function ที่เรากำลังหมายถึงนั่นแหละ เรารู้แค่ว่า Function นี้ทำหน้าที่กำหนด Output ของ pin ใด ๆ ว่าจะให้มันเป็น 1 หรือ 0

ตอนนี้เรารู้แค่ว่ามันทำอะไร แต่ว่าเราไม่รู้ว่ามันทำงานอย่างไร เจ้าของบล็อกจะพามาดูกันว่าข้างใน Function นี้มี code เบื้องหลังยังไงกันแน่



เบื้องหลังของ function digitalWrite มันก็คือ Code อะไรก็ไม่รู้แหละซึ่งมันก็ยากต่อความเข้าใจ แต่สิ่งนึงที่เรารู้แน่ ๆ คือมันใช้ทำอะไร แค่นั้นก็เพียงพอต่อการใช้งานแล้ว

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

คราวนี้เจ้าของบล็อกจะลองสร้าง function ขึ้นมาในแต่ละแบบก็จะได้ตามนี้


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


การใช้งาน Function มักจะมีวงเล็บเปิดปิดต่อท้ายชื่อ function เสมอ ซึ่งในวงเล็บก็คือค่าที่เราจะใส่เข้าไปให้กับ function นั่นแหละ


อาจจะเข้าใจยากไปสักนิด แต่อย่างที่บอกว่าหลัก ๆ ไม่ได้สอนเขียนภาษา c++ แต่เน้นไปที่จะเอาภาษา c++ ไปใช้งานใน Arduno ยังไง ซึ่งในบทความถัดไปเราได้รู้กันแน่ ๆ ดังนั้นแล้วสิ่งที่เจ้าของบล็อกพยายามจะให้ผู้อ่านมากที่สุดคือ ความเข้าใจในการประยุกต์เอาไปใช้งาน คิดซะว่าบทความนี้เป็น Guide เขียนโปรแกรมในการเรียนบทความถัด ๆ ไป สำหรับมือใหม่ถ้าอยากให้ได้ผลลัพธ์มากที่สุดควรมีหนังสือโปรแกรมมิ่งภาษา c++ ซักเล่ม ก็จะเยี่ยมยอดมาก

ในบทความต่อไปจะเป็นบทความ จะ LED หรือหลอดไฟในบ้าน มันก็เขียนโปรแกรมคล้ายกันนั่นแหละ เรียนรู้การเขียนควบคุม output เร็ว ๆ นี้แน่นอน

ความคิดเห็น

Team กล่าวว่า
สามารถแสดงความคิดเห็น ติหรือชมได้เต็มที่ครับ เพื่อจะได้นำกลับไปพัฒนาตัวเองในส่วนที่บกพร่องต่อไป

โพสต์ยอดนิยมจากบล็อกนี้

ว่าด้วยเรื่องหน่วยความจำ สิ่งที่หลายคนมองข้าม : รู้จักกับ Memory

คณิตศาสตร์กับโปรแกรมมิ่งมันเป็นยังไงนะ ตอนที่ 1 เกริ่นพีทาโกรัส

คณิตศาสตร์กับโปรแกรมมิ่งมันเป็นยังไงนะ ตอนที่ 3 โจทย์พีทาโกรัส (จบ)