
การตั้งโปรแกรมให้ระบบไฟจราจร : ความรู้เบื้องต้น

อัปเกรดสำหรับเนื้อหาเพิ่มเติม
True or false? A LED can be programmed.
โอ้ นี่ลีน่าต้องรอสัญญาณ ไฟจราจรนี้อีกนานแค่ไหน เหมือนมันจะเป็นไฟแดงตลอดเลย ลีน่าเริ่มสงสัยว่าสัญญาณไฟจราจรนี้ มันทำงานได้ยังไง บางทีอาจเป็นแบบนี้ ไฟเขียว ไฟเหลือง ไฟแดง ไฟเหลือง ไฟเขียว ไฟเหลือง ไฟแดง รถเมล์มาแล้ว ไฟเขียวสักทีสิ หรืออาจจะไม่ใช่แบบนั้น แต่สิ่งนี้ใกล้เคียงกับสิ่งที่เกิดขึ้น บางสิ่งจะเป็นตัวกำหนดว่า เมื่อไหร่ควรมีสัญญาณไฟ หรือดับสัญญาณไฟ และมันรับรู้ได้เมื่อมีรถเมล์มา แต่ไม่ใช่คนหรอกนะที่ทำเช่นนั้น มันเป็นสิ่งที่เราตั้งโปรแกรมเอาไว้ได้ มาใช้ไมโครคอนโทรลเลอร์ เพื่อเขียนโปรแกรมกันดีกว่า เราใช้ไฟ LED มาเป็นตัวแทน ของไฟสัญญาณจราจร ในการเชื่อมต่อชิ้นส่วนเหล่านี้ทั้งหมด เราจำเป็นต้องมีสายเคเบิล เพื่อให้ไฟติด เราก็ต้องใช้กระแสไฟฟ้า และเราก็ต้องใช้วงจรไฟฟ้าแบบปิด ที่มีขั้วบวก และขั้วลบเพื่อทำให้อิเล็กตรอนเคลื่อนที่ เราใช้ไมโครคอนโทรลเลอร์เพื่อส่ง กระแสไฟฟ้าตรงไปที่ไฟแอลอีดี มาดูที่ไมโครคอนโทรลเลอร์กันเถอะ ที่ไมโครคอนโทรลเลอร์นั้นจะมีปุ่ม 2 ปุ่มคือปุ่ม A และปุ่ม B อีกทั้งมีพินที่มีชื่อต่างกันเช่น 0 1 2 3V และ GND แต่ละพินก็จะมีรู ซึ่งถูกออกแบบมาเพื่อเชื่อมกับสายเคเบิล ด้วยขั้วหนีบแบบฟันปลา หรือปลั๊กรูปกล้วย เพื่อให้ได้กระแสไฟฟ้ามา เราจึงต้องการแรงดันไฟฟ้า แรงดันไฟฟ้ามีหน่วยเป็นโวลต์ รู้แล้ว งั้น 3V ก็คือ 3 โวลต์น่ะสิ นี่คือขั้วบวกของไมโครคอนโทรลเลอร์ แล้ว GND มันหมายถึงอะไรเหรอ มันเป็นคำย่อของพื้นดิน เป็นคำภาษาอังกฤษน่ะ นั่นคือขั้วลบของไมโครคอนโทรลเลอร์ ไฟ LED นั้นมีสองขา ขาข้างหนึ่งจะยาวกว่าอีกข้างหนึ่ง เราเชื่อมอันนี้เข้ากับขั้วบวก จากนั้นกระแสไฟก็จะไหลผ่านไป เพื่อทำให้ไฟ LED สว่างขึ้น ค่อยๆแยกขาของไฟ LED ออกเพื่อให้ ขาทั้งสองไม่เชื่อมต่อกับขั้วบวก ขาทั้งสองข้างไม่เชื่อมต่อกับขั้วบวก หรือกระแสไฟนั้นจะใช้เส้นทางที่สั้นที่สุด และจะมีการลัดวงจรจากขาหนึ่ง ไปยังอีกขาหนึ่งด้วย ต่อสายเคเบิลจากขาสั้นของไฟ LED เข้ากับขั้วลบของไมโครคอนโทรลเลอร์ ณ ที่นั่น ตอนนี้เราได้ปิดวงจร และไฟ LED ก็สว่างขึ้นมาแล้ว ความสว่างของแสงขึ้นอยู่กับ แรงดันไฟฟ้า ซึ่งตรงนี้เรามี 3 โวลต์ แรงดันไฟฟ้าที่สูงเกินไป จะทำให้ไฟ LED ขาดได้ เนื่องจากกระแสไฟที่ไหลผ่าน เข้าไปใน LED นั้นมีมากเกินไป กระแสไฟฟ้าสามารถถูกจำกัดได้ด้วย การเชื่อมต่อตัวต้านทานแบบอนุกรมกับไฟ LED เนื่องจากเราเลือกไฟ LED ที่มีแรงดันไฟฟ้า 3 โวลต์ และการใช้แรงดัน 3 โวลต์กับไมโคร คอนโทรลเลอร์ก็ไม่ก่อให้เกิดอันตราย ตอนนี้ไฟ LED จะสว่างขึ้น ตราบใดที่วงจรยังถูกปิดอยู่ มันไม่ดีพอสำหรับสัญญาณไฟจราจร สัญญาณไฟเป็นสีเดียวตลอดเวลา ลองคิดดูสิถ้ามันจะเป็นไฟแดงตลอดน่ะ เราต้องทำให้แน่ใจว่าเราสามารถควบคุม มันได้ ไม่ว่าไฟ LED จะติดหรือดับ เราจำเป็นต้องตั้งโปรแกรมให้ไมโคร คอนโทรลเลอร์เพื่อเปิดและปิดวงจร เชื่อมต่อสายเคเบิลไปจาก ขาที่ยาวกว่าของไฟ LED ไปยังพินอื่นๆ ที่มีอยู่ จำนวนพินที่มีอยู่นั้นสามารถตั้ง ให้มันปิดหรือเปิดวงจรได้ ลองมาใช้พินเลขศูนย์ดูนะ ย้ายสายเคเบิลที่เพิ่มเข้ามา จาก 3 โวลต์ไปที่พินเลขศูนย์ ก่อนอื่นมาอธิบายขั้นตอนเล็กๆ ในสิ่งที่ เราบอกให้ไมโครคอนโทรลเลอร์ทำก่อน เราจะใช้สิ่งที่เรียกว่ารหัสเทียม ซึ่งสามารถแปลเป็นรหัสโปรแกรมได้ สิ่งที่เราต้องการให้ไมโครคอนโทรลเลอร์ ทำก็คือ ทำให้ไฟ LED สว่าง หยุดไว้ชั่วคราว ปิดไฟ LED หยุดไว้ชั่วคราว ทำให้ไฟ LED สว่าง เมื่ออยากให้บางสิ่งเกิดขึ้นซ้ำในโปรแกรม เราต้องทำให้มันวนกลับมาที่เดิม การทำให้มันวนมาที่เดิมจะยังเกิดขึ้น ตราบเท่าที่เงื่อนไขนั้นเป็นจริง ถ้าเราต้องการวนรอบที่ไม่สิ้นสุด ก็ต้องแน่ใจว่าเงื่อนไขนั้นเป็นจริงเสมอ ตัวอย่างเช่น ตราบใดที่ 2 มากกว่า 1 ดังนั้นเราจึงเพิ่มแถว "ยาวขึ้น" (While) เข้าไป เงื่อนไขยาวขึ้น (While) เป็นจริง ซึ่งจะใส่มันไว้เหนือรหัสเทียม ที่เราเคยเขียน เพื่อแสดงว่าแถวไหนบ้างที่เกี่ยวข้อง กับการวนมาที่เดิม แท็บแถวต่างๆที่อยู่ใต้แถว "ยาวขึ้น" (While) แบบนี้ ตอนนี้ก็ได้เวลาเปลี่ยนรหัสเทียม ให้กลายเป็นรหัสโปรแกรมแล้ว ลุยกันเลย