Isi kandungan:

Matriks Paparan LED 5x4 Menggunakan Cap Asas 2 (bs2) dan Pencerminan Charlieplexing: 7 Langkah
Matriks Paparan LED 5x4 Menggunakan Cap Asas 2 (bs2) dan Pencerminan Charlieplexing: 7 Langkah

Video: Matriks Paparan LED 5x4 Menggunakan Cap Asas 2 (bs2) dan Pencerminan Charlieplexing: 7 Langkah

Video: Matriks Paparan LED 5x4 Menggunakan Cap Asas 2 (bs2) dan Pencerminan Charlieplexing: 7 Langkah
Video: DIY 32 * 8 точечно-матричные спектральные часы / полноцветный RGB с голосовой активацией 2024, November
Anonim
Matriks Paparan LED 5x4 Menggunakan Cap Asas 2 (bs2) dan Charlieplexing
Matriks Paparan LED 5x4 Menggunakan Cap Asas 2 (bs2) dan Charlieplexing

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

Untuk arahan ini saya akan menggunakan BS2e tetapi mana-mana ahli keluarga BS2 harus bekerja.

Langkah 1: Charlieplexing: Apa, Mengapa, dan Bagaimana

Mari dapatkan sebabnya terlebih dahulu. Mengapa menggunakan charlieplexing dengan Basic Stamp 2? --- Bukti konsep: Ketahui bagaimana charlieplexing berfungsi dan pelajari sesuatu mengenai BS2. Ini mungkin berguna bagi saya kemudian dengan menggunakan cip 8-pin yang lebih pantas (hanya 5 daripadanya akan menjadi i / o).--- Sebab yang berguna: Pada dasarnya tidak ada. BS2 terlalu perlahan untuk ditampilkan tanpa kerlipan yang ketara. Apa itu charlieplexing? --- Charlieplexing adalah kaedah menggerakkan sebilangan besar LED dengan sebilangan kecil pin i / o mikropemproses. Saya belajar mengenai charlieplexing dari www.instructables.com dan anda juga boleh: Charlieplexing LEDs - TeoriCara menggerakkan banyak LED dari beberapa pin mikrokontroler. Juga di wikipedia: CharlieplexingBagaimana saya boleh memandu 20 led dengan 5 pin i / o? --- Baca tiga pautan di bawah "Apa itu charlieplexing?". Itu menerangkannya lebih baik daripada yang pernah saya dapat. Charlieplexing berbeza dari multiplexing tradisional yang memerlukan satu pin i / o untuk setiap baris dan setiap lajur (itu akan menjadi jumlah 9 pin i / o untuk paparan 5/4).

Langkah 2: Perkakasan dan Skematik

Perkakasan dan Skematik
Perkakasan dan Skematik

Senarai bahan: 1x - Setem Asas 220x - diod pemancar cahaya (LED) jenis yang sama (penurunan warna dan voltan) 5x - perintang (lihat di bawah mengenai nilai perintang) Tambahan / Pilihan: Kaedah memprogram butang tekan BS2Mententary anda sebagai suis reset6v -9vPemberian kuasa bergantung pada versi BS2 anda (baca manual anda) Skema: Skema ini disusun bersama-sama dengan susun atur mekanikal. Anda akan melihat grid LED dipasang di sebelah kiri, inilah orientasi yang mana kod BS2 telah ditulis. Perhatikan bahawa setiap pasangan LED mempunyai anod yang disambungkan ke katod yang lain. Mereka kemudian disambungkan ke salah satu daripada lima pin i / o. Nilai Resistor: Anda harus mengira nilai perintang anda sendiri. Periksa lembar data untuk LED anda atau gunakan tetapan LED pada multimeter digital anda untuk mencari penurunan voltan LED anda. Mari lakukan beberapa pengiraan: Voltan Bekalan - Penurunan Voltan / Arus yang Diinginkan = Nilai Perintang BS2 membekalkan kuasa yang dikawal selia 5v, dan dapat menghasilkan 20ma semasa. LED saya mempunyai penurunan 1.6v dan beroperasi pada 20ma.5v - 1.6v /.02amps = 155ohmsUntuk melindungi BS2 anda, anda harus menggunakan nilai perintang yang lebih tinggi seterusnya dari apa yang anda perolehi dengan pengiraan, dalam hal ini saya percaya ia adalah 180ohms. Saya menggunakan 220ohms kerana papan pengembangan saya mempunyai nilai perintang yang terdapat di dalamnya untuk setiap pin i / o. CATATAN: Saya percaya bahawa kerana terdapat perintang pada setiap pin, ini berkesan menggandakan rintangan pada setiap led kerana satu pin adalah V + dan yang lain adalah Gnd. Sekiranya ini berlaku, anda harus mengurangkan nilai perintang sebanyak separuh. Kesan buruk dari nilai perintang yang terlalu tinggi adalah LED yang redup. Bolehkah seseorang mengesahkan ini dan meninggalkan saya PM atau memberi komen supaya saya dapat mengemas kini maklumat ini? Pengaturcaraan: Saya telah menggunakan papan pengembangan yang mempunyai penyambung DB9 untuk memprogram cip tepat di papan tulis. Saya juga menggunakan cip ini di papan roti tanpa solder saya dan memasukkan tajuk In Circuit Serial Programming (ICSP). Header adalah 5 pin, pin 2 hingga 5 menyambung ke pin 2-5 pada kabel bersiri DB9 (Pin 1 tidak digunakan). Harap maklum bahawa untuk menggunakan pin header ICSP ini 6 dan 7 pada kabel DB9 mesti dihubungkan antara satu sama lain. Reset: Butang tekan semula sesaat adalah pilihan. Ini hanya menarik pin 22 ke tanah semasa ditolak.

Langkah 3: Breadboarding

Papan Roti
Papan Roti
Papan Roti
Papan Roti

Kini tiba masanya untuk membina matriks di papan roti. Saya menggunakan jalur terminal untuk menyambungkan satu kaki dari setiap pasangan yang dipimpin bersama-sama dan wayar pelompat kecil untuk menghubungkan kaki yang lain. Perkara ini diperincikan dalam foto closeup dan dijelaskan secara mendalam di sini: 1. Orientasikan papan roti anda agar sesuai dengan gambar yang lebih besar2. Letakkan LED 1 dengan Anode (+) ke arah anda dan Cathode (-) jauh dari anda.3. Letakkan LED 2 dalam arah yang sama dengan Anode (+) pada jalur terminal penyambung katod LED 1. Gunakan wayar pelompat kecil untuk menyambungkan Anode LED 1 dengan Katod LED 2.5. Ulangi sehingga setiap pasangan LED telah ditambahkan ke papan. Saya menggunakan apa yang biasanya menjadi jalur bus power dari papan roti sebagai jalur bus untuk pin BS2 I / O. Kerana hanya ada 4 jalur bas saya menggunakan jalur terminal untuk P4 (sambungan I / O kelima). Ini dapat dilihat pada gambar yang lebih besar di bawah.6. Sambungkan jalur terminal untuk katod LED 1 ke jalur bas P0. Ulangi untuk setiap LED bernombor ganjil menggantikan P * yang betul untuk setiap pasangan (lihat skema).7. Sambungkan jalur terminal untuk katod LED 2 ke jalur bas P1. Ulangi untuk setiap LED bernombor ganjil menggantikan P * yang betul untuk setiap pasangan (lihat skema).8. Sambungkan setiap jalur bas ke pin I / O yang sesuai pada BS2 (P0-P4).9. Periksa semua sambungan untuk memastikannya sesuai dengan skema.10. Raikan. CATATAN: Pada jarak dekat, anda akan melihat bahawa tidak kelihatan bahawa saya mengikuti langkah 7 kerana sambungan ke pin I / O kedua berada di Anode LED bernombor ganjil. Ingat bahawa katod LED bernombor genap disambungkan ke Anode LED bernombor ganjil sehingga sambungannya sama. Sekiranya nota ini mengelirukan anda, abaikan saja.

Langkah 4: Asas Pengaturcaraan

Agar charlieplexing berfungsi, anda boleh menghidupkan satu lampu LED sahaja pada satu masa. Untuk bekerja dengan BS2 kami, kami memerlukan dua langkah asas: 1. Tetapkan mod output untuk pin dengan menggunakan perintah OUTS.2. Beritahu BS2 pin mana yang akan digunakan sebagai output menggunakan arahan DIRS hanya cuba mengedipkan LED 1. Sekiranya anda melihat skema, anda dapat melihat bahawa P0 disambungkan ke katod (-) LED 1 dan P1 disambungkan ke Anode LED yang sama. Ini bermaksud kita mahu mendorong P0 rendah dan P1 tinggi. Ini dapat dilakukan seperti ini: "OUTS =% 11110" yang mendorong P4-P1 tinggi dan P0 rendah. (% Menunjukkan nombor binari yang harus diikuti. Digit binari terendah selalu di sebelah kanan. 0 = RENDAH, 1 = TINGGI) BS2 menyimpan maklumat tersebut tetapi tidak akan bertindak sehingga kami menyatakan pin mana output. Langkah ini penting kerana hanya dua pin yang harus dikeluarkan pada masa yang sama. Selebihnya adalah input, yang menetapkan pin tersebut ke mod Impedance Tinggi sehingga tidak akan merosot arus. Kita perlu menggerakkan P0 dan P1 jadi kita akan menetapkannya ke output dan selebihnya ke input seperti: "DIRS =% 00011". (% Menunjukkan nombor binari yang harus diikuti. Digit binari terendah selalu di sebelah kanan. 0 = INPUT, 1 = OUTPUT) Mari kita masukkan ke dalam beberapa kod 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 kekal pada DIRS = 0' Tetapkan semua pin ke Input. Ini akan mematikan Jeda LED Jeda 250 'agar LED tetap matiLOOP

Langkah 5: Kitaran Pembangunan

Sekarang kita telah melihat masa kerja satu pin untuk memastikan semuanya berfungsi.20led_Zig-Zag.bseKod yang dilampirkan ini akan menyala setiap 20 LEDS dalam corak zig-zag. Anda akan melihat bahawa setelah setiap pin dinyalakan, saya menggunakan "DIRS = 0" untuk mengubah semua pin kembali menjadi input. Sekiranya anda menukar OUTS tanpa mematikan pin output, anda mungkin mendapat beberapa "ghosting" di mana led yang tidak boleh menyala mungkin berkedip di antara kitaran. Sekiranya anda menukar pemboleh ubah W1 pada awal kod ini menjadi "W1 = 1" di sana hanya jeda 1 milisaat antara setiap LED berkelip. Ini akan menyebabkan kesan penglihatan berterusan (POV) yang membuatnya kelihatan seperti semua LED menyala. Ini mempunyai kesan menjadikan LED lebih redup tetapi adalah inti pati bagaimana kita akan memaparkan watak pada matriks ini. 20led_Interpreter_Proto.bseSaya memutuskan pada masa ini bahawa saya harus mengembangkan beberapa jenis kod pentafsir untuk mengubah kombinasi gila yang diperlukan untuk menyalakan LED menjadi corak yang boleh digunakan. Fail ini adalah percubaan pertama saya. Anda akan melihat bahawa di bahagian bawah fail watak disimpan dalam empat baris perduaan 5 digit. Setiap baris dibaca, dihuraikan, dan subrutin dipanggil setiap kali led perlu dinyalakan. Kod ini berfungsi, berpusing melalui angka 1-0. Sekiranya anda cuba menjalankannya perhatikan bahawa ia terganggu oleh kadar penyegaran yang sangat perlahan menyebabkan watak-watak berkelip hampir terlalu lambat untuk dikenali. Kod ini tidak betul kerana banyak sebab. Mula-mula, lima digit binari mengambil ruang sama banyak di EEPROM dengan 8 digit binari kerana semua maklumat disimpan dalam kumpulan empat bit. Kedua, SELECT CASE yang digunakan untuk menentukan pin mana yang perlu dinyalakan memerlukan 20 kes. BS2 terhad kepada 16 kes setiap operasi SELECT. Ini bermakna saya terpaksa mengatasi had tersebut dengan pernyataan IF-THEN-ELSE. Pasti ada cara yang lebih baik. Setelah beberapa jam menggaru kepala saya menjumpainya.

Langkah 6: Jurubahasa yang Lebih Baik

Setiap baris matriks kami terdiri daripada 4 LED, masing-masing boleh hidup atau mati. BS2 menyimpan maklumat dalam EEPROM dalam kumpulan empat bit. Korelasi itu akan menjadikan kita lebih mudah. Selain fakta ini, empat bit sesuai dengan nombor perpuluhan 0-15 untuk 16 kemungkinan. Ini menjadikan atau PILIH KES lebih mudah. Berikut adalah angka 7 yang tersimpan di EEPROM: '7% 1111,% 1001,% 0010,% 0100,% 0100, Setiap baris mempunyai persamaan perpuluhan hingga 0-15 jadi kami membaca masuk dari memori dan masukkan terus ke fungsi SELECT CASE. Ini bermaksud bahawa matriks binari yang boleh dibaca manusia yang digunakan untuk membuat setiap watak (1 = dipimpin, 0 = dipimpin mati) adalah kunci untuk jurubahasa. Untuk menggunakan SELECT CASE yang sama untuk setiap 5 baris, saya menggunakan kes pilih yang lain untuk menetapkan DIRS dan OUTS sebagai pemboleh ubah. Saya mula-mula membaca di setiap lima baris watak hingga pemboleh ubah ROW1-ROW5. Program utama kemudian memanggil subrutin untuk memaparkan watak. Subrutin ini mengambil baris pertama dan menetapkan empat kemungkinan kombinasi OUTS kepada pemboleh ubah outp1-outp4 dan dua kemungkinan kombinasi DIRS ke direc1 & direc2. LED dikedipkan, penghitung baris bertambah, dan proses yang sama dijalankan untuk setiap empat baris yang lain. Ini jauh lebih pantas daripada program jurubahasa pertama. Walaupun begitu, masih ada kerlipan yang ketara. Lihat video, kamera menjadikan kerlipan kelihatan lebih teruk tetapi anda mendapat idea. Memindahkan konsep ini ke cip yang jauh lebih pantas, seperti picMicro atau cip AVR akan membolehkan paparan watak-watak ini tanpa kerlipan yang ketara.

Langkah 7: Tempat Pergi Dari sini

Saya tidak mempunyai kilang cnc atau bekalan etsa untuk membuat papan litar jadi saya tidak akan memasang projek ini. Sekiranya anda mempunyai kilang dan berminat untuk bekerjasama untuk terus maju dari sini, hantarkan mesej kepada saya. Saya dengan senang hati akan membayar bahan dan penghantaran dengan lebih senang lagi untuk menunjukkan sesuatu produk siap untuk projek ini.

Kemungkinan Lain: 1. Pindahkan ini ke cip lain. Reka bentuk matriks ini dapat digunakan dengan cip mana pun yang mempunyai 5 pin i / o yang mampu tri-state (pin yang tinggi, rendah, atau input (impedans tinggi)). 2. Dengan menggunakan cip yang lebih pantas (mungkin AVR atau picMicro) anda dapat meningkatkan skala. Dengan cip 20pin, anda boleh menggunakan 14 pin untuk menyalakan paparan 8x22 dan menggunakan pin yang tersisa untuk menerima arahan bersiri dari komputer atau pengawal lain. Gunakan tiga lagi cip 20-pin dan anda boleh mempunyai paparan tatal berukuran 8x88 untuk total 11 aksara sekaligus (bergantung pada lebar setiap watak tentu saja). Semoga berjaya dan bergembira!

Disyorkan: