Isi kandungan:
- Langkah 1: Modulasi Lebar Nadi untuk Mencampurkan Warna
- Langkah 2: Bercakap dengan Shift Register dan LED
- Langkah 3: Skematik
- Langkah 4: Kod Sumber C ++
- Langkah 5: Gadget Selesai
- Langkah 6: Aplikasi: Monitor Beban CPU untuk Linux Menggunakan Perl
- Langkah 7: Aplikasi: Bercakap dengan Modul Lain Menggunakan I²C
- Langkah 8: Aplikasi: "Game Cube":-)
- Langkah 9: Memaparkan Imej / Animasi di Matriks - Peretasan Pantas
- Langkah 10: Kawalan Interaktif Animasi Tersimpan
- Langkah 11: Menunjukkan Video Langsung
- Langkah 12: Lebih Banyak Lampu Hampir Secara Percuma
Video: Paparan LED 64 Pixel RGB - Klon Arduino Lain: 12 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:13
Paparan ini berdasarkan Matriks LED 8x8 RGB. Untuk tujuan pengujian, ia disambungkan ke papan Arduino standard (Diecimila) menggunakan 4 register geser. Setelah berjaya, saya mengesahkannya pada PCB fabbed. Register shift lebar 8-bit dan mudah dihubungkan dengan protokol SPI. Modulasi lebar nadi digunakan untuk mencampurkan warna, lebih banyak kemudian. Sebahagian daripada RAM MCU digunakan sebagai framebuffer untuk menahan gambar. RAM video diuraikan oleh rutin gangguan di latar belakang, sehingga pengguna dapat melakukan perkara berguna lain seperti bercakap dengan PC, butang baca dan potensiometer. Maklumat lebih lanjut mengenai "Arduino": www.arduino.cc
Langkah 1: Modulasi Lebar Nadi untuk Mencampurkan Warna
Modul lebar nadi - APA? Modulasi lebar nadi pada dasarnya menghidupkan dan mematikan kuasa yang disalurkan ke peranti elektrik dengan cepat. Daya boleh guna dihasilkan dari purata matematik fungsi gelombang persegi yang diambil selama selang satu tempoh. Semakin lama fungsi berada di posisi ON, semakin banyak kekuatan yang anda dapat. PWM mempunyai kesan yang sama terhadap kecerahan LED seperti peredup pada lampu AC. Tugas di hadapan adalah untuk mengawal kecerahan 64 LED LED secara automatik (= 192 LED tunggal!) Dengan cara yang murah dan mudah, sehingga seseorang dapat memperoleh keseluruhan spektrum warna. Sebaiknya jangan ada kelipan atau kesan mengganggu yang lain. Persepsi tidak linear mengenai kecerahan yang ditunjukkan oleh mata manusia tidak akan diambil kira di sini (mis. Perbezaan antara 10% dan 20% kecerahan nampaknya "lebih besar" daripada antara 90% dan 100%). Gambar (1) menggambarkan prinsip kerja algoritma PWM. Katakan kod diberi nilai 7 untuk kecerahan LED (0, 0). Lebih jauh ia tahu ada maksimum langkah N dalam kecerahan. Kod ini menjalankan gelung N untuk semua tahap kecerahan yang mungkin dan semua gelung yang diperlukan untuk melayani setiap LED dalam semua baris. Sekiranya penghitung gelung x dalam gelung kecerahan lebih kecil daripada 7, LED dihidupkan. Sekiranya lebih besar daripada 7, LED dimatikan. Melakukan ini dengan sangat cepat untuk semua LED, tahap kecerahan dan warna dasar (RGB), setiap LED dapat disesuaikan secara individu untuk menunjukkan warna yang diinginkan. Pengukuran dengan osiloskop menunjukkan bahawa kod penyegaran paparan memerlukan sekitar 50% masa CPU. Selebihnya boleh digunakan untuk melakukan komunikasi bersiri dengan PC, butang baca, bercakap dengan pembaca RFID, hantar I2Data C ke modul lain …
Langkah 2: Bercakap dengan Shift Register dan LED
Register shift adalah peranti yang memungkinkan untuk memuatkan data secara bersiri dan output selari. Operasi yang berlawanan juga mungkin dilakukan dengan cip yang sesuai. Terdapat tutorial yang baik mengenai register shift di laman web arduino. LED dipacu oleh register shift 8-bit dari jenis 74HC595. Setiap port boleh menghasilkan atau merendam arus sekitar 25mA. Jumlah arus setiap cip yang tenggelam atau bersumber tidak boleh melebihi 70mA. Kerepek ini sangat murah, jadi jangan bayar lebih dari 40 sen per keping. Oleh kerana LED mempunyai ciri arus / voltan eksponensial, perlu ada perintang had semasa. Menggunakan undang-undang Ohm: R = (V - Vf) / IR = perintang had, V = 5V, Vf = voltan hadapan LED, I = LED semasa yang dikehendaki mempunyai voltan hadapan sekitar 1.8V, biru dan hijau berkisar dari 2.5V hingga 3.5V. Gunakan multimeter sederhana untuk menentukannya. Untuk pembiakan warna yang betul seseorang harus mengambil kira beberapa perkara: kepekaan spektrum mata manusia (merah / biru: buruk, hijau: baik), kecekapan LED pada panjang gelombang dan arus tertentu. Dalam praktiknya seseorang hanya mengambil 3 potensiometer dan menyesuaikannya sehingga LED menunjukkan cahaya putih yang tepat. Sudah tentu arus LED maksimum tidak boleh dilebihi. Apa yang penting juga di sini ialah daftar peralihan yang menggerakkan baris mesti membekalkan arus ke LED 3x8, jadi lebih baik tidak mendorong arus terlalu tinggi. Saya berjaya dengan menghadkan perintang 270Ohm untuk semua LED, tetapi itu bergantung pada pembuatan matriks LED tentu saja. Daftar pergeseran dihubungkan dengan siri SPI. SPI = Antaramuka Siri Periferal (Gambar (1)). Bertentangan dengan port bersiri pada PC (tidak segerak, tidak ada isyarat jam), SPI memerlukan garis jam (SRCLK). Kemudian ada garis isyarat yang memberitahu peranti apabila data tersebut sah (pilih chip / latch / RCLK). Akhirnya terdapat dua baris data, satu dipanggil MOSI (master out slave in), yang lain disebut MISO (master in slave out). SPI digunakan untuk antara muka litar bersepadu, seperti saya2C. Projek ini memerlukan MOSI, SRCLK dan RCLK. Selain itu, talian aktif (G) juga digunakan. Kitaran SPI dimulakan dengan menarik garis RCLK ke RENDAH (Gambar (2)). MCU menghantar datanya di talian MOSI. Keadaan logiknya diambil sampel oleh shift shift di pinggir yang semakin meningkat dari garis SRCLK. Kitaran ditamatkan dengan menarik garis RCLK kembali ke TINGGI. Sekarang data tersedia pada output.
Langkah 3: Skematik
Gambar (1) menunjukkan bagaimana register peralihan disambungkan. Mereka dirantai daisy, sehingga data dapat dialihkan ke rantai ini dan juga melaluinya. Oleh itu, menambah lebih banyak daftar shift adalah mudah.
Gambar (2) menunjukkan skema selebihnya dengan MCU, penyambung, kuarza… Fail PDF yang dilampirkan mengandungi keseluruhan karya, terbaik untuk dicetak.
Langkah 4: Kod Sumber C ++
Dalam C / C ++ biasanya seseorang harus prototaip fungsi sebelum mengkodkannya. # Include int main (void); void do_something (void); int main (void) {do_something ();} void do_something (void) {/ * komen * / } Arduino IDE tidak memerlukan langkah ini, kerana prototaip fungsi dihasilkan secara automatik. Oleh itu, prototaip fungsi tidak akan muncul dalam kod yang ditunjukkan di sini. Imej (1): setup () functionImage (2): spi_transfer () berfungsi menggunakan perkakasan SPI cip ATmega168 (berjalan lebih pantas) Gambar (3): kod framebuffer menggunakan timer1 overflow interrupt. Potongan kod yang mempunyai penampilan yang agak samar untuk pemula misalnya semasa (! (SPSR & (1 << SPIF))) {} gunakan daftar MCU secara langsung. Contoh ini dengan kata-kata: "sementara SPPS-bit dalam daftar SPSR tidak diatur tidak melakukan apa-apa". Saya hanya ingin menekankan bahawa untuk projek standard sebenarnya tidak perlu menangani perkara-perkara ini yang berkait rapat dengan perkakasan. Pemula tidak boleh takut dengan perkara ini.
Langkah 5: Gadget Selesai
Setelah menyelesaikan semua masalah dan menjalankan kod, saya hanya perlu membuat susun atur PCB dan menghantarnya ke rumah yang hebat. Ia kelihatan jauh lebih bersih:-) Gambar (1): papan pengawal yang lengkap dengan penuh gambar. Pelabuhan ini mengandungi garis RX, TX bersiri, I2Garis C, garis I / O digital dan 7 garis ADC. Ini bertujuan untuk memasang perisai di bahagian belakang papan. Jarak jaraknya sesuai untuk menggunakan perfboard (0.1in). Pemuat but boleh dimatikan dengan menggunakan header ICSP (berfungsi dengan USBtinyISP adafruit). Sebaik sahaja selesai, gunakan penyesuai siri FTDI USB / TTL standard atau yang serupa. Saya juga telah menambahkan pelompat automatik-tetapkan semula. Saya juga telah memasak sedikit skrip Perl (lihat blog saya), yang membolehkan auto-reset dengan kabel FTDI yang biasanya tidak berfungsi di luar kotak (RTS vs DTR line). Ini berfungsi di Linux, mungkin di MAC. Papan litar dicetak dan beberapa DIY Kit terdapat di blog saya. Pematerian SMD diperlukan! Lihat fail PDF untuk arahan membina dan sumber untuk matriks LED.
Langkah 6: Aplikasi: Monitor Beban CPU untuk Linux Menggunakan Perl
Ini adalah monitor beban yang sangat asas dengan plot sejarah. Ini berdasarkan skrip Perl yang mengumpulkan "rata-rata beban" sistem setiap 1s menggunakan iostat. Data disimpan dalam array yang dialihkan pada setiap kemas kini. Data baru ditambahkan di bahagian atas senarai, entri tertua dikeluarkan. Maklumat dan muat turun yang lebih terperinci (kod…) terdapat di blog saya.
Langkah 7: Aplikasi: Bercakap dengan Modul Lain Menggunakan I²C
Ini hanya bukti prinsip dan sejauh ini bukan penyelesaian termudah untuk pekerjaan ini. Menggunakan Saya2C memungkinkan untuk menangani secara langsung hingga 127 papan "hamba". Di sini papan di sebelah kanan dalam video adalah "tuan" (yang memulakan semua pemindahan), papan kiri adalah hamba (menunggu data). Saya2C memerlukan 2 garisan isyarat dan talian kuasa biasa (+, -, SDA, SCL). Oleh kerana ia adalah bas, semua peranti disambungkan secara selari.
Langkah 8: Aplikasi: "Game Cube":-)
Hanya fikiran yang aneh. Ini juga sesuai dengan kandang kayu yang ditunjukkan di halaman intro. Ia mempunyai 5 butang di bahagian belakangnya yang mungkin digunakan untuk bermain permainan sederhana.
Langkah 9: Memaparkan Imej / Animasi di Matriks - Peretasan Pantas
Oleh itu, ia hanya mendapat 8x8 piksel dan beberapa warna tersedia. Pertama gunakan sesuatu seperti Gimp untuk menurunkan gambar kegemaran anda hingga tepat 8x8 piksel dan simpan sebagai format mentah ".ppm" (bukan ASCII). PPM mudah dibaca dan diproses dalam skrip Perl. Menggunakan ImageMagick dan alat baris perintah "convert" tidak akan berfungsi dengan baik. Muat naik kod arduino baru, kemudian gunakan skrip Perl untuk memuat naik ke pengawal. Kerlipan hanyalah ketidakcocokan penyegaran LED dan kadar bingkai kamera saya. Setelah mengemas kini kodnya sedikit, kode ini berjalan dengan cukup mudah. Semua gambar dipindahkan secara langsung melalui siri seperti yang anda lihat. Animasi yang lebih panjang dapat disimpan di EEPROM luaran seperti yang dilakukan di pelbagai papan bercakap-pov.
Langkah 10: Kawalan Interaktif Animasi Tersimpan
Mengapa membiarkan mikrokontroler bersenang-senang? Kultus Arduino adalah mengenai pengkomputeran fizikal dan interaksi, jadi tambah potensiometer dan kendalikan! Menggunakan salah satu daripada 8 input penukar analog ke digital menjadikannya sangat mudah.
Langkah 11: Menunjukkan Video Langsung
Menggunakan skrip Perl dan beberapa modul menjadikannya cukup mudah untuk menunjukkan video langsung yang hampir pada sistem X11. Ia dikodkan pada linux dan juga berfungsi pada MAC. Ia berfungsi seperti ini: - dapatkan kedudukan kursor tetikus - tangkap kotak piksel NxN yang berpusat di kursor - skala gambar hingga 8x8 piksel - hantar ke papan LED - ulangi
Langkah 12: Lebih Banyak Lampu Hampir Secara Percuma
Dengan hanya dua langkah, kecerahan dapat meningkat sedikit. Gantikan perintang 270Ω dengan 169Ω dan pusingkan daftar shift 74HC595 yang lain ke IC5.
Disyorkan:
Arked Bartop Vertikal Dengan Paparan LED PIXEL Bersepadu: 11 Langkah (dengan Gambar)
Vertical Bartop Arcade Dengan Paparan LED PIXEL Bersepadu: **** Dikemas kini dengan perisian baru Julai 2019, perinciannya di sini ****** Arcade bartop dibina dengan ciri unik yang ditukar oleh matriks matriks LED agar sesuai dengan permainan yang dipilih. Seni watak di bahagian kabinet adalah tatakan potong laser dan tidak melekat
PIXELCADE - Mini Bartop Arcade Dengan Paparan LED PIXEL Bersepadu: 13 Langkah (dengan Gambar)
PIXELCADE - Mini Bartop Arcade Dengan Paparan LED PIXEL Bersepadu: **** Versi Peningkatan dengan Marquee LED Bersepadu Di Sini **** Arked bartop dibina dengan ciri unik paparan LED bersepadu yang sesuai dengan permainan yang dipilih. Seni watak di bahagian kabinet adalah tatakan potong laser dan bukan pelekat. Besar
Flasher LED 31 Tahun untuk Rumah Api Model dan lain-lain: 11 Langkah (dengan Gambar)
Lampu LED 31 Tahun untuk Model Mercusuar Dll.: Mercusuar model mempunyai daya tarikan yang luas dan banyak pemilik mesti berfikir betapa senangnya jika, bukannya hanya duduk di sana, model itu sebenarnya melintas. Masalahnya ialah model rumah api cenderung kecil dengan sedikit ruang untuk bateri dan
Suhu Paparan pada Modul Paparan LED P10 Menggunakan Arduino: 3 Langkah (dengan Gambar)
Suhu Paparan pada Modul Paparan LED P10 Menggunakan Arduino: Dalam tutorial sebelumnya telah diberitahu bagaimana cara memaparkan teks pada Modul P10 Paparan LED Dot Matrix menggunakan Konektor Arduino dan DMD, yang dapat anda periksa di sini. Dalam tutorial ini kita akan memberikan tutorial projek yang mudah dengan menggunakan modul P10 sebagai tampilan med
Teks Paparan pada Paparan LED P10 Menggunakan Arduino: 5 Langkah (dengan Gambar)
Teks Paparan di Paparan LED P10 Menggunakan Arduino: Dotmatrix Display atau lebih sering disebut sebagai Running Text sering dijumpai di kedai sebagai alat untuk mengiklankan produk mereka, praktikal dan fleksibel dalam penggunaannya yang mendorong pelaku perniagaan menggunakannya sebagai nasihat iklan. Kini penggunaan Dot