การควบคุม LED จำนวนมากด้วย GPIO พินไม่กี่ตัว


12

ฉันทำฮาร์ดแวร์ "สวัสดีโลก" ของฉันเสร็จสมบูรณ์โดยใช้คู่มือนี้:

http://www.raspberrypi-spy.co.uk/2012/06/control-led-using-gpio-output-pin/

ตอนนี้ฉันต้องการที่จะย้ายไปยังสิ่งที่ใหญ่กว่าและสว่างกว่าหลอดไฟ LED ที่ควบคุมแยกต่างหากนั่นคือ! เห็นได้ชัดว่าขั้นตอนต่อไปคือการย้ายแหล่งจ่ายแรงดันไฟฟ้าออกจาก Raspberry Pi และเพื่อเพิ่ม LEDs มากขึ้น แต่ในที่สุดฉันก็หมดหมุด GPIO ดังนั้นฉันเดาว่าสิ่งที่ฉันต้องการตอนนี้คือการควบคุมวงจรที่จะรู้ได้ ขึ้นอยู่กับ GPIO "สัญญาณรหัส" ไฟ LED อะไรที่จะเปิดและปิด ฉันควรมองหาตัวอย่างวงจรประเภทใด และที่สำคัญกว่านั้นคือราสเบอร์รี่ Pi สามารถหรือก่อให้เกิดปัญหาใด ๆ เกี่ยวกับการกำหนดเวลาของสัญญาณได้หรือไม่?


Muliplexing จะลดจำนวน GPIO ที่ต้องใช้ร่วมกับ Persitance of Vision โดยใช้ PWM เพื่อลด GPIO เพิ่มเติมหรือสร้างอาร์เรย์ขนาดใหญ่ที่มี GPIO น้อยที่สุด สิ่งนี้ได้รับคำตอบแล้วที่นี่
Piotr Kula

คำตอบ:


13

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

ตัวเลือกที่ดีกว่าคือการเชื่อมต่อเมทริกซ์ LED กับบัส I2C โดยใช้ตัวขยาย I / O I2C หนึ่งหรือหลายตัว ด้วยวิธีนี้คุณสามารถสร้างเมทริกซ์ที่มีขนาดใหญ่ (เช่นไฟ LED 64 ดวงสามารถทำได้ด้วยตัวขยาย I / O ONE 16 บิต) อีกเหตุผลหนึ่งที่ใช้ตัวขยาย I / O เหล่านี้ก็คือมันมีความทนทานมากกว่าเล็กน้อยสามารถให้กระแสได้มากกว่าเดิมและทำให้ซีพียูหลักของคุณไม่เป็นอันตราย

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

ความต้องการพิเศษสำหรับการสร้างเมทริกซ์การทำงานที่ราบรื่นคือคุณต้องทำให้เมทริกซ์ไม่ใหญ่ขึ้นดังนั้น RPi สามารถอัปเดตแต่ละ LED อย่างน้อย 20 ครั้งทุกวินาทีไม่เช่นนั้นคุณจะเริ่มเห็นการกะพริบ แต่นี่ก็อธิบายด้วย ในลิงค์แรก (ย่อหน้า "Multiplexing และ Persistence of Vision")


มันน่าสนใจมาก ขอบคุณสำหรับการอ่าน! ฉันอาจลองในขนาดเล็กโดยใช้หมุด GPIO ก่อนที่ฉันจะพร้อมที่จะไปยังตัวขยาย ฉันทำการทดสอบด้วยหมุด GPIO แล้วและฉันก็สามารถรับ Multiplexing ได้อย่างน่าพอใจ ฉันไม่ต้องกังวลเกี่ยวกับกระแสไฟฟ้าเนื่องจากฉันจะใช้ Pi เพื่อเปลี่ยนกระแสไฟฟ้าภายนอกเท่านั้น ขนาดนี้จะดีหรือไม่? อาจจะไม่ แต่ฉันมาที่นี่เพื่อบทเรียนต่อไป!
SkyNT

3

ฉันใช้ตัวขยายพอร์ตMCP23017 I²Cเพื่อทำสิ่งนี้ ตามลิงค์นี้เพื่อค้นหารหัสตัวอย่างสำหรับราสเบอร์รี่ปี่ คุณสามารถขับ 16 LEDS ต่อชิปและ 8 ชิปโดยไม่จำเป็นต้องทำมัลติเพล็กซ์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.