Daftar Isi:

Matriks Tampilan LED 5x4 Menggunakan Basic Stamp 2 (bs2) dan Charlieplexing: 7 Langkah
Matriks Tampilan LED 5x4 Menggunakan Basic Stamp 2 (bs2) dan Charlieplexing: 7 Langkah

Video: Matriks Tampilan LED 5x4 Menggunakan Basic Stamp 2 (bs2) dan Charlieplexing: 7 Langkah

Video: Matriks Tampilan LED 5x4 Menggunakan Basic Stamp 2 (bs2) dan Charlieplexing: 7 Langkah
Video: CARA MAPPING TIGA SCREEN BEDA KONTEN || BASIC RESOLUME 6 TUTORIAL 2024, Juli
Anonim
Matriks Tampilan LED 5x4 Menggunakan Basic Stamp 2 (bs2) dan Charlieplexing
Matriks Tampilan LED 5x4 Menggunakan Basic Stamp 2 (bs2) dan Charlieplexing

Punya Basic Stamp 2 dan beberapa LED tambahan? Mengapa tidak bermain-main dengan konsep charlieplexing dan membuat output hanya menggunakan 5 pin.

Untuk instruksi ini saya akan menggunakan BS2e tetapi setiap anggota keluarga BS2 harus bekerja.

Langkah 1: Charlieplexing: Apa, Mengapa, dan Bagaimana

Mari kita bahas alasannya terlebih dahulu. Mengapa menggunakan charlieplexing dengan Basic Stamp 2? --- Bukti konsep: Pelajari cara kerja charlieplexing dan pelajari sesuatu tentang BS2. Ini mungkin berguna bagi saya nanti dengan menggunakan chip 8-pin yang lebih cepat (hanya 5 dari mereka yang akan menjadi i/o).---Alasan yang berguna: Pada dasarnya tidak ada. BS2 terlalu lambat untuk ditampilkan tanpa kedipan yang nyata. Apa itu charlieplexing?---Charlieplexing adalah metode menggerakkan sejumlah besar LED dengan sejumlah kecil pin i/o mikroprosesor. Saya belajar tentang charlieplexing dari www.instructables.com dan Anda juga bisa:Charlieplexing LED- TeoriCara menggerakkan banyak LED dari beberapa pin mikrokontroler. Juga di wikipedia: CharlieplexingBagaimana saya bisa menggerakkan 20 led dengan 5 pin i/o?---Silakan baca tiga tautan di bawah "Apa itu charlieplexing?". Itu menjelaskannya lebih baik daripada yang pernah saya bisa. Charlieplexing berbeda dari multiplexing tradisional yang membutuhkan satu pin i/o untuk setiap baris dan setiap kolom (yang akan menjadi total 9 pin i/o untuk tampilan 5/4).

Langkah 2: Perangkat Keras dan Skema

Perangkat Keras dan Skema
Perangkat Keras dan Skema

Daftar bahan:1x - Basic Stamp 220x - light emitting diodes (LEDs) dari jenis yang sama (warna dan penurunan tegangan)5x - resistor (lihat di bawah mengenai nilai resistor)Auxiliary/Opsional:Metode pemrograman BS2 Anda Tombol tekan sesaat sebagai sakelar reset6v -9vPower supply tergantung pada versi BS2 Anda (baca manual Anda)Skema:Skema ini disatukan dengan tata letak mekanis dalam pikiran. Anda akan melihat kisi-kisi LED diatur di sebelah kiri, ini adalah orientasi yang kode BS2 telah ditulis. Perhatikan bahwa setiap pasangan LED memiliki anoda yang terhubung ke katoda yang lain. Mereka kemudian dihubungkan ke salah satu dari lima pin i/o. Nilai Resistor: Anda harus menghitung nilai resistor Anda sendiri. Periksa lembar data untuk LED Anda atau gunakan pengaturan LED pada multimeter digital Anda untuk menemukan penurunan tegangan LED Anda. Mari kita lakukan beberapa perhitungan:Supply Voltage - Voltage Drop / Desired Current = Nilai Resistor BS2 memasok daya yang diatur 5v, dan dapat sumber 20ma dari arus. LED saya memiliki penurunan 1.6v dan beroperasi pada 20ma.5v - 1.6v /.02amps = 155ohmsUntuk melindungi BS2 Anda, Anda harus menggunakan nilai resistor yang lebih tinggi berikutnya dari apa yang Anda dapatkan dengan perhitungan, dalam hal ini saya yakin itu akan menjadi 180ohm. Saya menggunakan 220ohm karena papan pengembangan saya memiliki nilai resistor yang terpasang di dalamnya untuk setiap pin i/o. CATATAN: Saya percaya bahwa karena ada resistor pada setiap pin ini secara efektif menggandakan resistansi pada setiap led karena satu pin adalah V+ dan yang lainnya adalah Gnd. Jika ini masalahnya, Anda harus mengurangi nilai resistor hingga setengahnya. Efek buruk dari nilai resistor yang terlalu tinggi adalah LED yang lebih redup. Dapatkah seseorang memverifikasi ini dan meninggalkan saya PM atau komentar sehingga saya dapat memperbarui informasi ini? Pemrograman: Saya telah menggunakan papan pengembangan yang memiliki konektor DB9 untuk memprogram chip tepat di papan. Saya juga menggunakan chip ini pada papan tempat memotong roti tanpa solder dan telah menyertakan header In Circuit Serial Programming (ICSP). Header adalah 5 pin, pin 2 hingga 5 terhubung ke pin 2-5 pada kabel serial DB9 (Pin 1 tidak digunakan). Perlu diketahui bahwa untuk menggunakan header ICSP ini pin 6 dan 7 pada kabel DB9 harus saling terhubung. Reset: Tombol reset push sesaat adalah opsional. Ini hanya menarik pin 22 ke ground saat didorong.

Langkah 3: Breadboarding

Papan tempat memotong roti
Papan tempat memotong roti
Papan tempat memotong roti
Papan tempat memotong roti

Sekarang saatnya untuk membangun matriks pada papan tempat memotong roti. Saya menggunakan strip terminal untuk menghubungkan satu kaki dari setiap pasangan yang dipimpin bersama-sama dan kabel jumper kecil untuk menghubungkan kaki lainnya. Ini dirinci dalam foto closeup dan dijelaskan secara mendalam di sini:1. Arahkan papan tempat memotong roti Anda agar sesuai dengan gambar yang lebih besar2. Tempatkan LED 1 dengan Anoda (+) ke arah Anda dan Katoda (-) menjauh dari Anda.3. Tempatkan LED 2 dalam orientasi yang sama dengan Anoda (+) di strip terminal penghubung katoda LED 1.4. Gunakan kabel jumper kecil untuk menghubungkan Anoda LED 1 dengan Katoda LED 2.5. Ulangi sampai setiap pasang LED telah ditambahkan ke papan. Saya menggunakan apa yang biasanya menjadi strip bus daya dari papan roti sebagai strip bus untuk pin I/O BS2. Karena hanya ada 4 jalur bus, saya menggunakan jalur terminal untuk P4 (sambungan I/O kelima). Hal ini dapat dilihat pada gambar yang lebih besar di bawah ini.6. Hubungkan strip terminal untuk katoda LED 1 ke strip bus P0. Ulangi untuk setiap LED bernomor ganjil yang menggantikan P* yang tepat untuk setiap pasangan (lihat skema).7. Hubungkan strip terminal untuk katoda LED 2 ke strip bus P1. Ulangi untuk setiap LED bernomor ganjil yang menggantikan P* yang tepat untuk setiap pasangan (lihat skema).8. Hubungkan setiap jalur bus ke pin I/O yang sesuai pada BS2 (P0-P4).9. Periksa semua koneksi untuk memastikan mereka cocok dengan skema.10. Celebrate. CATATAN: Pada close-up Anda akan melihat bahwa saya tidak mengikuti langkah 7 karena sambungan ke pin I/O kedua ada di Anoda LED bernomor ganjil. Ingatlah bahwa Katoda dari LED bernomor genap terhubung ke Anoda dari LED bernomor ganjil sehingga koneksinya sama. Jika catatan ini membingungkan Anda, abaikan saja.

Langkah 4: Dasar-dasar Pemrograman

Agar charlieplexing berfungsi, Anda hanya menyalakan satu led pada satu waktu. Agar ini berfungsi dengan BS2 kami, kami memerlukan dua langkah dasar:1. Atur mode output untuk pin dengan menggunakan perintah OUTS.2. Beri tahu BS2 pin mana yang akan digunakan sebagai output menggunakan perintah DIRS Ini berfungsi karena BS2 dapat diberi tahu pin mana yang harus dikendarai tinggi dan rendah dan akan menunggu untuk melakukannya sampai Anda menentukan pin mana yang menjadi output. Mari kita lihat apakah semuanya terhubung dengan benar oleh hanya mencoba berkedip LED 1. Jika Anda melihat skema Anda dapat melihat bahwa P0 terhubung ke Katoda (-) dari LED 1 dan P1 terhubung ke Anoda dari LED yang sama. Ini berarti kita ingin mendorong P0 rendah dan P1 tinggi. Ini dapat dilakukan seperti ini: "OUTS = %11110" yang mendorong P4-P1 tinggi dan P0 rendah.(% menunjukkan angka biner yang akan diikuti. Digit biner terendah selalu di sebelah kanan. 0=RENDAH, 1=TINGGI) BS2 menyimpan informasi itu tetapi tidak akan bertindak sampai kami menyatakan pin mana yang keluar. Langkah ini adalah kunci karena hanya dua pin yang harus dikeluarkan pada saat yang bersamaan. Sisanya harus menjadi input, yang mengatur pin tersebut ke mode Impedansi Tinggi sehingga tidak akan menenggelamkan arus apa pun. Kita perlu menggerakkan P0 dan P1 jadi kita akan mengaturnya ke output dan sisanya ke input seperti: "DIRS = %00011".(% menunjukkan angka biner yang harus diikuti. Digit biner terendah selalu di sebelah kanan. 0 =INPUT, 1=OUTPUT)Mari kita gabungkan itu menjadi beberapa kode yang berguna:' {$STAMP BS2e}' {$PBASIC 2.5}DO OUTS = %11110 'Drive P0 rendah dan P1-P4 tinggi DIRS = %00011 'Set P0- P1 sebagai Output dan P2-P4 sebagai Input PAUSE 250 'Jeda agar LED tetap menyala DIRS = 0 'Atur semua pin ke Input. Ini akan mematikan LED PAUSE 250 'Jeda agar LED tetap matiLOOP

Langkah 5: Siklus Pengembangan

Sekarang kita telah melihat waktu kerja satu pin untuk memastikan semuanya berfungsi.20led_Zig-Zag.bseKode terlampir ini akan menerangi masing-masing dari 20 LED dalam pola zig-zag. Anda akan melihat bahwa setelah setiap pin bin menyala, saya menggunakan "DIRS = 0" untuk mengubah semua pin kembali menjadi input. Jika Anda mengubah OUTS tanpa mematikan pin output, Anda mungkin mendapatkan beberapa "ghosting" di mana led yang seharusnya tidak menyala mungkin berkedip di antara siklus. Jika Anda mengubah variabel W1 di awal kode ini menjadi "W1 = 1" di sana hanya akan ada jeda 1 milidetik di antara setiap kedipan LED. Hal ini akan menimbulkan efek persistensi penglihatan (POV) yang membuatnya tampak seperti semua LED menyala. Ini memang memiliki efek membuat LED lebih redup tetapi merupakan inti dari bagaimana kita akan menampilkan karakter pada matriks ini.20led_Interpreter_Proto.bseSaya memutuskan pada titik ini bahwa saya harus mengembangkan beberapa jenis kode juru bahasa untuk mengubah kombinasi gila yang diperlukan untuk menyalakan lampu. LED menjadi pola yang dapat digunakan. File ini adalah percobaan pertama saya. Anda akan melihat bahwa di bagian bawah file karakter disimpan dalam empat baris biner 5 digit. Setiap baris dibaca, diuraikan, dan subrutin dipanggil setiap kali led perlu dinyalakan. Kode ini berfungsi, berputar melalui angka 1-0. Jika Anda mencoba menjalankannya, perhatikan bahwa itu terganggu oleh kecepatan refresh yang sangat lambat yang menyebabkan karakter berkedip hampir terlalu lambat untuk dikenali. Kode ini buruk karena berbagai alasan. Pertama, lima digit biner mengambil ruang yang sama di EEPROM dengan 8 digit biner karena semua informasi disimpan dalam kelompok empat bit. Kedua, SELECT CASE yang digunakan untuk memutuskan pin mana yang perlu dinyalakan membutuhkan 20 kasus. BS2 dibatasi hingga 16 kasus per operasi SELECT. Ini berarti saya harus mengatasi batasan itu dengan pernyataan IF-THEN-ELSE. Pasti ada cara yang lebih baik. Setelah beberapa jam menggaruk-garuk kepala, saya menemukannya.

Langkah 6: Penerjemah yang Lebih Baik

Setiap baris matriks kami terdiri dari 4 LED, masing-masing dapat menyala atau mati. BS2 menyimpan informasi dalam EEPROM dalam kelompok empat bit. Korelasi itu seharusnya membuat segalanya lebih mudah bagi kita. Selain fakta ini, empat bit sesuai dengan angka desimal 0-15 dengan total 16 kemungkinan. Ini membuat atau SELECT CASE jauh lebih mudah. Berikut adalah angka 7 yang disimpan di EEPROM:'7 %1111, %1001, %0010, %0100, %0100, Setiap baris memiliki desimal yang setara dengan 0-15 jadi kita membaca a baris dari memori dan masukkan langsung ke fungsi SELECT CASE. Ini berarti bahwa matriks biner yang dapat dibaca manusia yang digunakan untuk membuat setiap karakter (1=led on, 0=led off) adalah kunci untuk penerjemah. Untuk menggunakan SELECT CASE yang sama untuk masing-masing dari 5 baris, saya menggunakan case pilih lainnya untuk mengatur DIRS dan OUTS sebagai variabel. Saya pertama kali membaca di masing-masing dari lima baris karakter ke variabel ROW1-ROW5. Program utama kemudian memanggil subrutin untuk menampilkan karakter. Subrutin ini mengambil baris pertama dan menetapkan empat kemungkinan kombinasi OUTS ke variabel outp1-outp4 dan dua kemungkinan kombinasi DIRS ke direc1 & direc2. LED menyala, penghitung baris bertambah, dan proses yang sama dijalankan untuk masing-masing dari empat baris lainnya. Ini jauh lebih cepat daripada program penerjemah pertama. Yang sedang berkata, masih ada kedipan yang terlihat. Lihatlah videonya, kamera membuat kedipan terlihat jauh lebih buruk tetapi Anda mendapatkan idenya. Memindahkan konsep ini ke chip yang jauh lebih cepat, seperti picMicro atau chip AVR akan memungkinkan tampilan karakter ini tanpa kedipan yang mencolok.

Langkah 7: Ke Mana Harus Pergi Dari Sini

Saya tidak memiliki pabrik cnc atau perlengkapan etsa untuk membuat papan sirkuit jadi saya tidak akan memasang kabel proyek ini. Jika Anda memiliki pabrik dan tertarik untuk berkolaborasi untuk maju dari sini, kirimkan saya pesan. Saya akan senang untuk membayar bahan dan pengiriman bahkan lebih bahagia untuk menunjukkan sesuatu dari produk jadi untuk proyek ini.

Kemungkinan Lain: 1. Port ini ke chip lain. Desain matriks ini dapat digunakan dengan chip apa pun yang memiliki 5 pin i/o yang tersedia yang mampu tri-state (pin yang bisa tinggi, rendah, atau input (impedansi tinggi)). 2. Menggunakan chip yang lebih cepat (mungkin AVR atau picMicro) Anda dapat meningkatkan skala. Dengan chip 20pin, Anda dapat menggunakan 14 pin untuk charlieplex layar 8x22 dan menggunakan pin yang tersisa untuk menerima perintah serial dari komputer atau pengontrol lain. Gunakan tiga chip 20-pin lagi dan Anda dapat memiliki tampilan scrolling 8x88 dengan total 11 karakter sekaligus (tergantung lebar masing-masing karakter tentunya). Semoga berhasil, bersenang-senanglah!

Direkomendasikan: