Daftar Isi:

Matriks LED Menggunakan Shift Register: 7 Langkah (dengan Gambar)
Matriks LED Menggunakan Shift Register: 7 Langkah (dengan Gambar)

Video: Matriks LED Menggunakan Shift Register: 7 Langkah (dengan Gambar)

Video: Matriks LED Menggunakan Shift Register: 7 Langkah (dengan Gambar)
Video: BELAJAR 59 PEMROGRAMAN ARDUINO - Pengetahuan Penting Tentang Shift Register SN74HC595 2024, Juli
Anonim
Matriks LED Menggunakan Shift Register
Matriks LED Menggunakan Shift Register
Matriks LED Menggunakan Shift Register
Matriks LED Menggunakan Shift Register
Matriks LED Menggunakan Shift Register
Matriks LED Menggunakan Shift Register

Instruksi ini dimaksudkan untuk menjadi penjelasan yang lebih lengkap daripada yang lain yang tersedia secara online. Khususnya, ini akan memberikan lebih banyak penjelasan perangkat keras daripada yang tersedia di LED Marquee yang dapat diinstruksikan oleh led555.

Sasaran

Instruksi ini menyajikan konsep yang terlibat dengan register geser dan driver sisi tinggi. Dengan mengilustrasikan konsep-konsep ini dengan matriks LED 8x8, saya berharap dapat memberi Anda alat yang diperlukan untuk beradaptasi dan memperluas ukuran dan tata letak yang dibutuhkan proyek Anda.

Pengalaman dan Keterampilan

Saya akan menilai proyek ini dengan tingkat kesulitan sedang:

  • Jika Anda sudah memiliki pengalaman memprogram mikrokontroler dan bekerja dengan LED, proyek ini seharusnya cukup mudah untuk Anda selesaikan dan untuk menskalakan ke rangkaian lampu yang lebih besar.
  • Jika Anda baru memulai dengan mikrokontroler dan telah memasang satu atau dua LED, Anda seharusnya dapat menyelesaikan proyek ini dengan bantuan dari teman kami google.
  • Jika Anda memiliki sedikit atau tanpa pengalaman dengan mikrokontroler atau pemrograman, ini mungkin melampaui apa yang seharusnya Anda lakukan. Cobalah beberapa proyek pemula lainnya dan kembalilah ketika Anda memiliki lebih banyak pengalaman menulis program untuk mikrokontroler.

Penafian dan Kredit

Pertama, saya bukan seorang insinyur listrik. Jika Anda melihat sesuatu yang salah, atau bukan praktik terbaik, beri tahu saya dan saya akan memperbaikinya. Lakukan ini dengan risiko Anda sendiri! Anda harus tahu apa yang Anda lakukan atau Anda dapat menyebabkan kerusakan pada komputer Anda, mikrokontroler Anda, dan bahkan diri Anda sendiri. Saya telah belajar banyak dari internet, terutama dari forum di: https://www.avrfreaks.netSaya menggunakan set font yang disertakan dengan ks0108 universal C library. Lihat di sini:

Langkah 1: Bagian

Daftar Suku Cadang

Bagian Umum

Untuk membuat kisi LED 8x8 dan mengontrolnya, Anda perlu:

  • 64 LED pilihan Anda
  • 8 Resistor untuk LED
  • 1 Shift register untuk kolom
  • 1 Array driver untuk baris
  • 8 Resistor untuk mengganti susunan driver
  • 1 mikrokontroler
  • 1 sumber jam untuk mikrokontroler
  • 1 papan prototipe
  • 1 catu daya
  • Kawat penghubung

Bagian Spesifik yang Digunakan Di Sini

Untuk instruksi ini saya menggunakan yang berikut ini:

  • 64 LED hijau (bagian Mouse #604-WP7113GD)
  • 8 resistor 220ohm 1/4 watt untuk LED (bagian Mouse #660-CFS1/4CT52R221J)
  • 1 driver LED HEF4794 dengan register geser (bagian Mouse #771-HEF4794BPN)
  • 1 mic2981 Array Driver Sumber Arus Tinggi Tegangan Tinggi (Bagian Digikey #576-1158-ND)
  • 8 resistor 3,3kohm 1/4 watt untuk mengganti susunan driver (Radio Shack bagian #271-1328)
  • 1 mikrokontroler Atmel ATmega8 (Mouser bagian #556-ATMEGA8-16PU)
  • 1 kristal 12MHz untuk sumber jam mikrokontroler (bagian Mouse #815-AB-12-B2)
  • 1 papan prototipe 2200 lubang (Radio Shack bagian #276-147)
  • Catu daya ATX yang dikonversi: Lihat Instruksi Ini
  • Kawat pengait 22-awg inti padat (bagian Radio Shack #278-1221)
  • Papan tempat memotong roti tanpa solder (Radio Shack bagian #276-169 (tidak lagi tersedia, coba: 276-002)
  • AVR Dragon (Mouser bagian #556-ATAVRDRAGON)
  • Dragon Rider 500 oleh Ecos Technologies: Lihat Instruksi Ini

Catatan Mengenai Suku Cadang

Driver Baris dan Kolom: Mungkin bagian tersulit dari proyek ini adalah memilih driver baris dan kolom. Pertama, saya tidak berpikir register geser 74HC595 standar adalah ide yang bagus di sini karena mereka tidak dapat menangani jenis arus yang ingin kita kirim melalui LED. Inilah mengapa saya memilih driver HEF4794 karena dapat dengan mudah menenggelamkan arus saat semua 8 led dalam satu baris dinyalakan. Register geser ada di sisi bawah (pin ground dari led). Kita akan membutuhkan driver baris yang dapat menjadi sumber arus yang cukup untuk merangkai beberapa kolom menjadi satu. mic2981 dapat memasok hingga 500mA. Satu-satunya bagian lain yang saya temukan yang melakukan tugas ini adalah UDN2981 (bagian digikey #620-1120-ND) yang merupakan bagian yang sama oleh pabrikan yang berbeda. Kirimkan saya pesan jika Anda mengetahui driver high-side lain yang akan bekerja dengan baik di aplikasi ini. Matriks LED: Matriks ini berukuran 8x8 karena driver baris dan kolom masing-masing memiliki 8 pin. Sebuah array LED yang lebih besar dapat dibangun dengan merangkai beberapa matriks bersama-sama dan akan dibahas dalam langkah "konsep modular". Jika Anda menginginkan array yang besar, pesan semua suku cadang yang dibutuhkan sekaligus. Tersedia matriks LED 8x8, 5x7 dan 5x8 dalam satu paket yang praktis. Ini harus mudah untuk menggantikan matriks diy. Ebay adalah sumber yang bagus untuk ini. Mouser memiliki beberapa unit 5x7 yang tersedia seperti part #604-TA12-11GWA. Saya menggunakan LED hijau murah karena saya hanya bermain-main dan bersenang-senang. Menghabiskan lebih banyak pada kecerahan tinggi, LED efisiensi tinggi dapat memungkinkan Anda untuk menghasilkan tampilan yang tampak jauh lebih spektakuler… ini cukup baik untuk saya! Perangkat Keras Kontrol: Matriks dikendalikan oleh mikrokontroler Atmel AVR. Anda akan membutuhkan seorang programmer untuk ini. Karena saya membuat prototipe, saya menggunakan Dragon Rider 500 yang telah saya tulis instruksi perakitan dan penggunaan. Ini adalah alat yang mudah untuk membuat prototipe dan saya sangat merekomendasikannya.

Langkah 2: Matriks

Matriks
Matriks
Matriks
Matriks
Matriks
Matriks

Saya akan membangun matriks LED saya sendiri untuk proyek ini menggunakan led 5mm dan papan prototipe dari Radio Shack. Perlu dicatat bahwa Anda dapat membeli modul led 8x8 dot matrix dari beberapa sumber, termasuk ebay. Mereka harus bekerja dengan baik dengan instruksi ini.

Pertimbangan Konstruksi

PenjajaranThe LEDS perlu disejajarkan sehingga mereka menghadap ke arah yang sama pada sudut yang sama. Saya menemukan opsi termudah bagi saya adalah meletakkan badan flush LED ke papan dan menahannya di sana dengan sepotong kecil kaca plexiglass dan penjepit. Saya meletakkan beberapa LED di tempat beberapa inci dari baris yang sedang saya kerjakan untuk memastikan kaca plexiglass sejajar dengan papan prototipe. Baris dan Kolom Kita perlu memiliki sambungan yang sama untuk setiap baris dan juga setiap kolom. Karena pilihan driver baris dan kolom kita, kita perlu memiliki anoda (kabel positif dari LED) yang dihubungkan oleh baris dan katoda (kabel negatif dari LED) yang dihubungkan oleh kolom. Kabel KontrolUntuk prototipe ini saya menggunakan kabel penghubung inti padat (konduktor tunggal). Ini akan sangat mudah untuk berinteraksi dengan papan tempat memotong roti tanpa solder. Jangan ragu untuk menggunakan jenis konektor lain yang sesuai dengan proyek Anda.

Membangun Matriks

1. Tempatkan kolom pertama LED di papan prototipe.2. Periksa kembali apakah polaritas Anda untuk setiap LED sudah benar, ini akan sangat sulit untuk diperbaiki jika Anda menyadarinya nanti.3. Solder kedua ujung LED ke papan. Periksa untuk memastikan mereka sejajar dengan benar (tidak pada sudut yang aneh) dan potong kabel katoda. Pastikan Anda tidak memotong ujung anoda, kita akan membutuhkannya nanti jadi biarkan saja mengarah ke atas.4. Lepaskan insulasi dari sepotong kawat inti padat. Solder potongan kawat ini ke setiap katoda tepat di tingkat papan.

  • Saya menempelkan ini di setiap ujungnya lalu kembali dan menambahkan sedikit solder di setiap persimpangan.
  • Kabel ini harus melewati LED terakhir Anda untuk membuat antarmuka yang mudah saat kami menambahkan kabel kontrol.

5. Ulangi bagian 1-4 sampai Anda memiliki semua LED di tempatnya dan semua bus kolom disolder.6. Untuk membuat bus baris, tekuk beberapa ujung anoda pada sudut 90 derajat sehingga menyentuh ujung anoda lainnya di baris yang sama.

  • Ada gambar rinci tentang ini di bawah ini.
  • Berhati-hatilah untuk tidak membiarkan ini bersentuhan dengan bus kolom, menciptakan korsleting.

7. Solder kabel di setiap sambungan dan potong kabel anoda yang berlebih.

Biarkan anoda terakhir menempel melewati LED terakhir. Ini akan digunakan untuk menghubungkan kabel kontrol driver baris

8. Ulangi bagian 6 & 7 sampai semua baris bus telah disolder.9. Pasang kabel kontrol.

  • Saya menggunakan kabel inti padat merah untuk baris dan hitam untuk kolom.
  • Hubungkan satu kabel untuk setiap kolom dan satu untuk setiap baris. Ini dapat dengan mudah dilakukan di akhir setiap bus.

Penting

Matriks LED ini tidak memiliki resistor pembatas arus. Jika Anda menguji ini tanpa resistor, Anda mungkin akan membakar LED Anda dan semua pekerjaan ini akan sia-sia.

Langkah 3: Perangkat Keras Kontrol

Perangkat Keras Kontrol
Perangkat Keras Kontrol
Perangkat Keras Kontrol
Perangkat Keras Kontrol

Kita perlu mengontrol kolom dan baris matriks LED kita. Matriks telah dibangun sehingga Anoda (sisi tegangan LED) merupakan baris, dan Katoda (sisi dasar LED) membentuk kolom. Ini berarti driver baris kita perlu sumber arus dan driver kolom kita perlu menenggelamkannya. Untuk menghemat pin, saya menggunakan register geser untuk mengontrol kolom. Dengan cara ini saya dapat mengontrol jumlah kolom yang hampir tidak terbatas hanya dengan empat pin mikrokontroler. Dimungkinkan untuk menggunakan hanya tiga jika pin Enable Output diikat langsung ke tegangan. Saya telah memilih driver LED HEF4794 dengan register geser. Ini adalah pilihan yang lebih baik daripada 74HC595 standar karena dapat dengan mudah menenggelamkan arus saat ini ketika semua 8 LED menyala pada satu waktu. Di sisi atas (sumber arus untuk baris) saya menggunakan mic2981. Skema menunjukkan UDN2981, saya yakin keduanya dapat dipertukarkan. Driver ini dapat menghasilkan arus hingga 500mA. Karena kami hanya mengendarai 1 baris pada satu waktu, ini memberi banyak peluang untuk ekspansi, hingga 33 kolom untuk chip ini (lebih lanjut tentang itu di langkah "konsep modular").

Membangun Perangkat Keras Kontrol

Untuk instruksi ini, saya baru saja membuat papan tempat memotong roti sirkuit ini. Untuk solusi yang lebih permanen, Anda perlu mengetsa papan sirkuit Anda sendiri atau menggunakan papan prototipe.1. Sopir Baris

  • Tempatkan mic2981 (atau UDN2981) di papan tempat memotong roti
  • Hubungkan Pin 9 ke Tegangan (Ini membingungkan dalam skema)
  • Hubungkan Pin 10 ke Ground (Ini membingungkan dalam skema)
  • masukkan resistor 3k3 yang terhubung ke pin 1-8
  • Hubungkan dari Port D ATmega8 (PD0-PD8) ke 8 resistor
  • Hubungkan 8 baris kabel kontrol matriks LED ke pin 11-18 (perhatikan bahwa saya telah menghubungkan baris LED terendah ke Pin 18 dan baris tertinggi ke Pin 11).

2. Penggerak Kolom

  • Tempatkan hef4794 di papan tempat memotong roti
  • Hubungkan Pin 16 ke tegangan
  • Hubungkan Pin 8 ke ground
  • Hubungkan resistor 220 ohm ke Pin 4-7 dan 11-14.
  • Hubungkan kabel kontrol 8 kolom dari matriks LED ke 8 resistor yang baru saja Anda sambungkan.
  • Hubungkan Pin1 (Latch) ke PC0 dari ATmega8
  • Hubungkan Pin2 (Data) ke PC1 dari ATmega8
  • Hubungkan Pin3 (Jam) ke PC2 dari ATmega8
  • Hubungkan Pin15 (Aktifkan Output) ke PC3 dari ATmega8

3. Jam Kristal

Hubungkan kristal 12MHz dan memuat kapasitor seperti yang ditunjukkan pada skema

4. ISP

Hubungkan header pemrograman seperti yang ditunjukkan pada skema

5. Filtering Capacitor dan Pull-up resistor

  • Yang terbaik adalah menyaring tegangan yang dipasok ke ATmega8. Gunakan kapasitor 0.1uf antara Pin 7 & 8 dari ATmega8
  • Pin reset tidak boleh dibiarkan mengambang karena dapat menyebabkan reset acak. Gunakan resistor untuk menghubungkannya ke tegangan, apa pun tentang 1k harus baik. Saya telah menggunakan resistor 10k dalam skema.

6. Pastikan Anda menggunakan daya yang diatur +5v. Terserah Anda untuk merancang regulator.

Langkah 4: Perangkat Lunak

Trik-nya

Ya, seperti semuanya, ada triknya. Triknya adalah tidak pernah ada lebih dari 8 LED yang menyala pada satu waktu. Agar ini berfungsi dengan baik, diperlukan sedikit pemrograman licik. Konsep yang saya pilih adalah menggunakan interupsi timer. Inilah cara kerja interupsi tampilan dalam bahasa Inggris:

  • Timer menghitung sampai titik tertentu, ketika mencapai layanan interupsi rutin dijalankan.
  • Rutinitas ini memutuskan baris mana yang akan ditampilkan berikutnya.
  • Informasi untuk baris berikutnya dicari dari buffer dan digeser ke driver kolom (informasi ini tidak "terkunci" sehingga belum ditampilkan).
  • Driver baris dimatikan, tidak ada LED yang menyala.
  • Pengandar kolom "terkunci" membuat informasi yang kami geser dalam dua langkah yang lalu menjadi informasi saat ini untuk ditampilkan.
  • Driver baris kemudian memberikan arus ke baris baru yang kami tampilkan.
  • Rutinitas layanan interupsi berakhir dan program kembali ke aliran normal sampai interupsi berikutnya.

Ini terjadi sangat sangat cepat. Interupsi dilempar setiap 1 mSec. Ini berarti bahwa kami menyegarkan seluruh tampilan sekitar sekali setiap 8 mSec. Ini berarti tingkat tampilan sekitar 125Hz. Ada beberapa kekhawatiran tentang kecerahan karena kami pada dasarnya menjalankan LED pada siklus tugas 1/8 (mereka mati 7/8 dari waktu). Dalam kasus saya, saya mendapatkan tampilan yang cukup terang tanpa berkedip. Tampilan LED penuh dipetakan dalam array. Di antara interupsi, array dapat diubah (perhatikan atomisitas) dan akan muncul di layar selama interupsi berikutnya. Spesifikasi penulisan kode untuk mikrokontroler AVR dan cara menulis kode untuk berbicara dengan register geser berada di luar cakupan yang dapat diinstruksikan ini. Saya telah menyertakan kode sumber (ditulis dalam C dan dikompilasi dengan AVR-GCC) serta file hex untuk diprogram secara langsung. Saya telah mengomentari semua kode sehingga Anda harus dapat menggunakan ini untuk menjernihkan pertanyaan tentang cara memasukkan data ke register geser dan bagaimana penyegaran baris bekerja. Harap dicatat bahwa saya menggunakan file font yang disertakan dengan ks0108 perpustakaan C universal. Perpustakaan itu dapat ditemukan di sini:

Shift Register: Cara

Saya telah memutuskan untuk menambahkan sedikit tentang cara memprogram dengan register geser. Saya harap ini menjelaskan segalanya bagi mereka yang belum pernah bekerja dengan mereka sebelumnya. Apa yang mereka lakukan Shift Register mengambil sinyal dari satu kabel dan mengeluarkan informasi itu ke banyak pin yang berbeda. Dalam hal ini, ada satu kabel data yang mengambil data dan 8 pin yang dikendalikan tergantung pada data apa yang telah diterima. Untuk membuat segalanya lebih baik, ada sebuah outpin untuk setiap register geser yang dapat dihubungkan ke pin input dari register geser yang lain. Ini disebut cascading dan membuat potensi ekspansi menjadi prospek yang hampir tidak terbatas. Register Pergeseran Pin Kontrol memiliki 4 pin kontrol:

  • Latch - Pin ini memberi tahu register geser kapan waktunya untuk beralih ke data yang baru dimasukkan
  • Data - Angka 1 dan 0 memberi tahu shift register pin apa yang akan diaktifkan yang diterima pada pin ini.
  • Jam - Ini adalah pulsa yang dikirim dari mikrokontroler yang memberi tahu register geser untuk mengambil pembacaan data dan pindah ke langkah berikutnya dalam proses komunikasi
  • Aktifkan Output - Ini adalah sakelar hidup/mati, Tinggi=Aktif, Rendah=Mati

Membuatnya melakukan penawaran Anda:Berikut ini kursus kilat dalam pengoperasian pin kontrol di atas:Langkah 1: Setel Latch, Data, dan Jam rendah

Menyetel Latch rendah memberi tahu register geser bahwa kita akan menulis padanya

Langkah 2: Atur pin Data ke nilai logika yang ingin Anda kirim ke Shift RegisterLangkah 3: Atur pin Jam ke tinggi, memberi tahu Shift Register untuk membaca nilai pin Data saat ini

Semua nilai lain yang saat ini ada di Shift Register akan berpindah 1 tempat, memberikan ruang untuk nilai logika pin Data saat ini

Langkah 4: Atur pin Jam Rendah dan ulangi langkah 2 dan 3 sampai semua data telah dikirim ke register geser.

Pin jam harus disetel rendah sebelum mengubah ke nilai Data berikutnya. Mengalihkan pin antara tinggi dan rendah inilah yang menciptakan "pulsa clock" yang perlu diketahui register geser kapan harus pindah ke langkah berikutnya dalam proses

Langkah 5: Setel Latch tinggi

Ini memberitahu register geser untuk mengambil semua data yang telah digeser dan menggunakannya untuk mengaktifkan pin output. Ini berarti Anda tidak akan melihat data saat sedang bergeser; tidak ada perubahan pada pin output yang akan terjadi sampai Latch disetel tinggi

Langkah 6: Atur Aktifkan Output tinggi

  • Tidak akan ada output pin sampai Enable Output disetel ke high, tidak peduli apa yang terjadi dengan tiga pin kontrol lainnya.
  • Pin ini selalu dapat dibiarkan tinggi jika Anda mau

CascadingAda dua pin yang bisa Anda gunakan untuk cascading, Os dan Os1. Os untuk jam naik cepat dan Os1 untuk jam naik lambat. Kaitkan pin ini ke pin data register geser berikutnya dan luapan dari chip ini akan dimasukkan ke berikutnya. Akhir pembaruan

Mengatasi tampilan

Dalam contoh program saya telah membuat array 8 byte yang disebut row_buffer. Setiap byte sesuai dengan satu baris tampilan 8x8, baris 0 menjadi bagian bawah dan baris 7 menjadi bagian atas. Bit paling tidak signifikan dari setiap baris ada di sebelah kanan, bit paling signifikan di sebelah kiri. Mengubah tampilan semudah menulis nilai baru ke larik data itu, rutin layanan interupsi menangani penyegaran tampilan.

Pemrograman

Pemrograman tidak akan dibahas secara rinci di sini. Saya akan memperingatkan Anda untuk tidak menggunakan kabel pemrograman DAPA karena saya yakin Anda tidak akan dapat memprogram chip setelah berjalan pada 12MHz. Semua pemrogram standar lainnya harus bekerja (STK500, MKII, Dragon, Programmer Paralel/Serial, dll.). Sekering: Pastikan memprogram sekering untuk menggunakan sekering kristal 12MHz: 0xC9lfuse: 0xEF

Sedang Beraksi

Setelah Anda memprogram chip, tampilan akan menampilkan "Hello World!". Berikut adalah video dari matriks LED dalam tindakan. Kualitas video cukup rendah karena saya membuat ini dengan fitur video kamera digital saya dan bukan video atau webcam yang tepat.

Langkah 5: Konsep Modular

Konsep Modular
Konsep Modular
Konsep Modular
Konsep Modular
Konsep Modular
Konsep Modular
Konsep Modular
Konsep Modular

Proyek ini skalabel. Satu-satunya faktor pembatas yang sebenarnya adalah seberapa besar arus yang dapat disediakan oleh catu daya Anda. (Kenyataan lainnya adalah berapa banyak LED dan register shifter yang Anda miliki).

matematika

Saya mengendarai LED sekitar 15mA (5V-1.8vDrop/220ohms=14.5mA). Ini berarti saya dapat mengemudi hingga 33 kolom dengan driver mic2981 (500mA/15mA=33,3). Dibagi dengan 8 kita dapat melihat bahwa ini memungkinkan kita untuk merangkai 4 register geser. Juga pertimbangkan bahwa Anda tidak perlu merentangkan 32 kolom dari kiri ke kanan. Anda dapat membuat larik 16x16 yang disambungkan dengan cara yang sama seperti Anda membuat larik 8x32. Ini akan diatasi dengan menggeser dalam 4 byte…. dua yang pertama akan bergeser sepenuhnya ke led untuk baris ke-9, dua byte kedua akan bergeser ke baris pertama. Kedua baris akan bersumber dari satu pin pada driver baris.

Register Geser Cascading

Register geser yang digunakan adalah register geser bertingkat. Artinya saat Anda menggeser data, overflow muncul di pin Os. Ini menjadi sangat berguna karena satu set register geser dapat dihubungkan satu sama lain, pin Os ke pin Data, menambahkan 8 kolom dengan setiap chip baru. Semua register geser akan terhubung ke pin Latch, Clock, dan Enable Output yang sama pada mikrokontroler. Efek "cascading" dibuat ketika Os register geser pertama terhubung ke pin Data yang kedua. Pemrograman perlu diubah untuk mencerminkan peningkatan jumlah kolom. Baik buffer yang menyimpan informasi maupun fungsi yang memindahkan informasi untuk setiap kolom perlu diperbarui untuk mencerminkan jumlah kolom yang sebenarnya. Skema ini diberikan di bawah ini sebagai contoh.

Beberapa Driver Baris

Driver baris (mic2981) dapat menghasilkan arus yang cukup untuk menggerakkan 32 kolom. Bagaimana jika Anda ingin lebih dari 32 kolom? Seharusnya dimungkinkan untuk menggunakan beberapa driver baris tanpa menggunakan lebih banyak pin mikrokontroler. Kita membutuhkan driver baris untuk mendapatkan sumber arus yang cukup untuk menyalakan LED. Jika Anda menggunakan lebih banyak kolom daripada yang dimungkinkan untuk menyala pada satu waktu, driver baris tambahan dapat memasok arus yang dibutuhkan. Pin input yang sama dari mikrokontroler digunakan sehingga tidak perlu mengubah pemindaian baris. Dengan kata lain, setiap pengemudi mengontrol baris untuk blok 8x32. Meskipun 64 kolom mungkin memiliki penempatan baris FISIK yang sama, kami membagi bus baris menjadi dua, menggunakan satu driver untuk 8 baris dari 32 kolom pertama, dan driver kedua untuk 8 baris dari 32 kolom kedua dan seterusnya. Skema ini diberikan di bawah ini sebagai contoh. Potensi Salah Langkah:1. Jangan gunakan beberapa driver baris dengan jumlah kolom yang sama. Melakukannya berarti bahwa setiap pin register geser akan menggerakkan lebih dari satu LED pada satu waktu.2. Anda harus memiliki satu set 8 resistor (3k3) untuk setiap driver baris, satu set untuk beberapa driver baris tidak akan berfungsi karena tidak akan memberikan arus yang diperlukan untuk mengganti gerbang.

Misalnya

Saya memutuskan untuk memperluas matriks yang saya buat sebelumnya. Saya telah menambahkan 7 baris lagi dengan total 15 karena hanya itu yang dapat saya muat di protoboard ini. Saya juga baru mengetahui tentang kontes yang dilakukan Instructables yang disebut "Let it Glow". Berikut adalah video dari saya mengambil itu. Sekali lagi, kamera digital yang saya gunakan untuk merekam video tidak adil. Ini terlihat bagus untuk mata manusia, terutama di mana semua LED berkedip, tetapi tidak terlihat sebagus di video. Nikmati: Kode sumber untuk tampilan yang lebih besar ini disertakan di bawah.

Langkah 6: Kesimpulan

Kemungkinan Tambahan

I2CI membiarkan pin Two Wire Interface (I2C) tidak digunakan dalam desain ini. Ada beberapa prospek menarik yang bisa menggunakan dua pin ini. Penambahan EEPROM I2C akan memungkinkan penyimpanan pesan yang jauh lebih besar. Ada juga prospek merancang pemrograman untuk mengubah mega8 menjadi driver tampilan yang kompatibel dengan I2C. Ini akan membuka kemungkinan memiliki perangkat yang mendukung USB untuk menampilkan data pada larik LED Anda dengan melewatkannya melalui bus I2C. Input Ada banyak pin yang tersisa yang dapat digunakan untuk tombol atau penerima IR. Ini akan memungkinkan pesan diprogram melalui sistem menu. Tampilan Untuk instruksi ini, saya hanya menerapkan beberapa fungsi tampilan. Satu hanya menulis karakter ke layar, yang lain menggulirkan karakter ke layar. Yang penting untuk diingat adalah bahwa apa yang Anda lihat di lampu direpresentasikan dalam array data. Jika Anda menemukan cara cerdas untuk mengubah larik data, lampu akan berubah dengan cara yang sama. Beberapa peluang menggiurkan termasuk membuat pengukur grafik dari kolom. Ini dapat digunakan sebagai penganalisis sinyal dengan stereo. Scrolling dapat dilakukan dari atas ke bawah atau dari bawah ke atas, bahkan dari kiri ke kanan. Semoga berhasil, bersenang-senanglah!

Langkah 7: Tindak Lanjut

Menindaklanjuti
Menindaklanjuti
Menindaklanjuti
Menindaklanjuti
Menindaklanjuti
Menindaklanjuti
Menindaklanjuti
Menindaklanjuti

Setelah membiarkan sirkuit pengontrol duduk di papan tempat memotong roti selama berbulan-bulan, saya akhirnya merancang dan mengukir beberapa papan sirkuit untuk menyatukan prototipe ini. Semuanya berjalan dengan baik, saya tidak berpikir ada sesuatu yang akan saya lakukan secara berbeda.

Fitur Papan Sirkuit

  • Register geser berada di papan terpisah yang dapat dirangkai dengan daisy chain untuk meningkatkan ukuran tampilan.
  • Papan pengontrol memiliki pengatur daya sendiri sehingga ini dapat dijalankan oleh sumber daya apa pun yang menyediakan 7v-30v (baterai 9v atau catu bangku 12v keduanya berfungsi dengan baik untuk saya).
  • Header ISP 6 pin disertakan sehingga mikrokontroler dapat diprogram ulang tanpa melepasnya dari board.
  • Header 4-pin tersedia untuk penggunaan bus I2C di masa mendatang. Ini dapat digunakan untuk eeprom untuk menyimpan lebih banyak pesan atau bahkan menjadikan ini sebagai perangkat budak yang dikendalikan oleh mikrokontroler lain (ada RSS ticker siapa?)
  • 3 tombol tekan sesaat disertakan dalam desain. Saya dapat mengubah firmware di masa mendatang untuk menyertakan penggunaan tombol-tombol ini.

perakitan

Beri saya kaca plexiglass, braket sudut, sekrup mesin 6x32, mur, dan ring, serta set keran untuk memasang lubang dan saya dapat membuat apa saja.

Hadiah Kedua di Let It Glow!

Direkomendasikan: