2-Bit Decoder with Raspberry Pi

By Unknown | วันเสาร์, มีนาคม 15, 2557

ช่วงนี้ผมเพิ่งมีโอกาสที่จะได้เล่น Raspberry Pi กับคนอื่นเค้ามั่ง ก็เลยลองคิดว่าจะทำอะไรดี พอดีเห็นว่า Raspberry Pi มี GPIO มาให้น้อย (I/O นั่นแหละ) ก็เลยลองคิดว่าจะลองทำยังไงก็ได้ให้เราใส่ input ไปแค่ 2 บิต (00,01,10,11) แต่สามารถทำให้ led ซึ่งเป็น output ของเราทั้งหมดสี่ตัวแสดงผลได้ เช่น ถ้าเราใส่ 00 led ตัวแรกจะแสดง ซึ่งผมก็คิดไว้แล้วล่ะว่าบิตไหน ๆ จะให้ตัวไหนแสดง

ทีนี้เราลองมาทบทวนความจำเรื่อง circuit กันนิดหน่อย สังเกตที่ led ตัวแรกน่ะครับ เนื่องจากอินพุตเป็น 00 ซึ่งใน circuit นั้นหมายความว่าอินพุตทั้งสองตัวมีความต่างศักย์เป็นศูนย์ หรือน้อยจนไม่พอที่จะขับให้หลอดไฟสว่างได้ แล้วจะทำอย่างไรล่ะ ให้เมื่ออินพุตเป็น 00 แล้วให้ไฟติด ก็ง่าย ๆ ครับ จับมันใส่เครื่องหมายนิเสธตามตรรกศาสตร์เลย ซึ่งใน ciruit ก็มี logic gate ให้ใช้อยู่แล้ว ซึ่งเมื่อเรานำอินพุตแต่ละตัวมาดำเนินการเสร็จแล้วก็จะได้เป็น 11 แต่เนื่องจากเรามีอินพุตถึงสองตัว แต่ต้องการเอาท์พุตตัวเดียว (led ตัวแรก) เราจึงต้องนำทั้งสองอินพุตมา "AND" กัน ก็จะทำให้ไฟแดงได้แล้ว

การทำ "OR" gate ก็ไม่ยาก ถ้าหา IC อย่างเบอร์ SN74LS04N มาใช้ได้ แต่เนื่องจากว่า IC อาจจะแพงไป เก็บตังไว้กินขนมดีกว่า ผมเลยจะใช้ทรานซิสเตอร์แบบ NPN เบอร์ BC547 มาทำ "NOT" gate ตามภาพข้างบน (อินพุตเส้นเทา เอาท์พุตเส้นน้ำเงิน) ซึ่งก็เช่นเดียวกันกับ "AND" gate ที่ใช้ IC เบอร์ SN74LS08N ได้เช่นกัน

วงจรทั้งหมดนั้นเราจะต้องใช้ Inverter 2 ตัวสำหรับสองอินพุต และ "AND" gate 4 ตัวเพื่อเอาท์พุตสี่ช่อง ในวงจรที่ใช้ก็มีทรานซิสเตอร์เบอร์ BC547 10 ตัว (ตัวละ 2 บาท) ตัวต้านทานขนาด 1k โอห์ม 10 ตัว (2 ตัวหนึ่งบาท) ตัวต้านทาน 330 โอห์ม 9 ตัว (ถ้าใช้ led สีอื่นต้องคำนวณใหม่น่ะครับ) แล้วก็ led สีแดง (2v 20mA) 4 ตัว

วงจรก็ต่อประมาณรูปด้านข้าง โดนอินพุตแรกให้ต่อกับพินที่ 4 ของ Pi และอินพุตที่สองต่อเข้ากับพิน 11 และเขียน python ประมาณนี้

ฺตัวอย่างการทำงาน

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