Mengontrol banyak LED dengan sedikit pin GPIO

12

Saya berhasil menyelesaikan "hello world" perangkat keras menggunakan panduan ini:

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

Sekarang saya ingin beralih ke hal-hal yang lebih besar dan lebih terang, yaitu LED yang dikendalikan secara individual! Jelas, langkah selanjutnya adalah memindahkan sumber tegangan dari Raspberry Pi dan menambahkan lebih banyak LED, tetapi pada akhirnya saya akan kehabisan pin GPIO, jadi saya kira apa yang saya butuhkan sekarang adalah untuk mengontrol sirkuit yang entah bagaimana akan tahu , berdasarkan "sinyal kode" GPIO, apa LED untuk menghidupkan dan mematikan. Contoh rangkaian seperti apa yang harus saya cari? Dan yang lebih penting berhadapan langsung dengan Raspberry Pi, bisakah atau rpi.gpio menyebabkan masalah, mungkin mengenai waktu sinyal?

SkyNT
sumber
Muliplexing akan secara radikal mengurangi jumlah GPIO yang perlu digunakan, bersamaan dengan Persitance of Vision dengan menggunakan PWM untuk lebih mengurangi GPIO atau membuat array besar dengan GPIO minimal. Ini sudah dijawab di sini.
Piotr Kula

Jawaban:

13

Apa yang Anda cari dalam hal ini adalah matriks LED . Anda dapat mengontrol matriks ini dari pin GPIO, tetapi itu masih membatasi jumlah LED yang dapat Anda hubungkan (ukuran matriks) dan mungkin juga mulai menarik arus terlalu banyak jika Anda tidak hati-hati.

Pilihan yang lebih baik adalah menghubungkan matriks LED ke bus I2C, menggunakan satu atau beberapa I / O I extender. Dengan begitu Anda dapat membuat matriks ukuran besar (64 LED misalnya dapat dilakukan dengan ONE 16 bit I / O extender). Alasan lain untuk menggunakan extender I / O ini adalah bahwa mereka sedikit lebih kuat, dapat memberikan arus lebih sedikit, dan menjaga CPU utama Anda dari bahaya.

Di situs ini, ekstensi I / O ini dibahas berkali-kali, jadi Anda harus dapat menemukan info tentang ini dengan cukup mudah. Tautan ini memberikan beberapa info tentang extender dan matriks ini (meskipun digunakan untuk input, tetapi pada dasarnya itu adalah ide yang sama tetapi Anda tidak menggunakan matriks untuk memindai tetapi untuk mengarahkan LED)

Hanya persyaratan tambahan untuk membuat matriks yang berfungsi dengan baik adalah Anda harus membuat matriks tidak lebih besar dari itu maka RPi dapat memperbarui setiap LED individu setidaknya 20 kali setiap detik, jika tidak, Anda akan mulai melihat kedipan, tetapi ini juga dijelaskan di tautan pertama (paragraf "Multiplexing dan Persistence of Vision").

ikku
sumber
Ini sangat menarik. Terima kasih sudah membaca! Saya mungkin mencoba ini dalam skala kecil menggunakan pin GPIO sebelum saya siap untuk pindah ke extender. Saya telah melakukan beberapa tes dengan pin GPIO dan sejauh ini saya bisa mendapatkan Multiplexing yang memuaskan. Saya tidak perlu khawatir tentang arus karena saya hanya akan menggunakan Pi untuk mengganti arus eksternal. Apakah skala ini baik? Mungkin tidak, tapi saya di sini sebagian besar untuk pelajaran!
SkyNT
3

Saya telah menggunakan MCP23017 I²C port expander untuk melakukan hal semacam ini. Ikuti tautan ini untuk menemukan beberapa kode sampel untuk raspberry pi. Anda dapat mengemudikan 16 LED per chip dan 8 chip tanpa perlu melakukan multiplexing apa pun.

John La Rooy
sumber