Mündəricat:

Əsas Damğa 2 (bs2) və Charlieplexing istifadə edərək 5x4 LED Ekran Matrixi: 7 Addım
Əsas Damğa 2 (bs2) və Charlieplexing istifadə edərək 5x4 LED Ekran Matrixi: 7 Addım

Video: Əsas Damğa 2 (bs2) və Charlieplexing istifadə edərək 5x4 LED Ekran Matrixi: 7 Addım

Video: Əsas Damğa 2 (bs2) və Charlieplexing istifadə edərək 5x4 LED Ekran Matrixi: 7 Addım
Video: Ər Quyusu | Azərbaycan filmi ( Tam film HD) 2024, Iyul
Anonim
Əsas Damğa 2 (bs2) və Charlieplexing istifadə edərək 5x4 LED Ekran Matrixi
Əsas Damğa 2 (bs2) və Charlieplexing istifadə edərək 5x4 LED Ekran Matrixi

Basic Stamp 2 və ətrafda oturan bəzi əlavə LEDlər varmı? Niyə charlieplexing konsepsiyası ilə oynamırsınız və yalnız 5 pin istifadə edərək bir çıxış yaratmırsınız.

Bunun üçün BS2e istifadə edəcəyəm, ancaq BS2 ailəsinin hər hansı bir üzvü işləməlidir.

Addım 1: Charlieplexing: Nə, Niyə və Necə

Gəlin ilk növbədə səbəbini anlayaq. Niyə Basic Stamp 2 ilə charlieplexingdən istifadə edirik? --- Konsepsiyanın sübutu: charlieplexingin necə işlədiyini və BS2 haqqında bir şey öyrənin. Daha sonra daha sürətli 8 pinli çiplərdən istifadə etmək mənim üçün faydalı ola bilər (onlardan yalnız 5 i/o olacaq).--- Faydalı səbəb: Əsasən heç biri yoxdur. BS2, nəzərəçarpacaq bir titrəmə olmadan görünmək üçün çox yavaşdır. Şərliepleksləmə nədir? --- Charlieplexing, az sayda mikroprosessor giriş/çıxış pinləri olan çoxlu sayda LED-ləri idarə etmək üsuludur. Charlieplexing haqqında www.instructables.com saytından öyrəndim və siz də edə bilərsiniz: Charlieplexing LEDləri- Teoriya Bir neçə mikrokontrolör pinindən bir çox LED-i necə idarə etmək olar. Həm də vikipediyada: CharlieplexingHazırda 5 i/o pinlə 20 led idarə edə bilərəmmi? --- "Charlieplexing nədir?" Bölməsindəki üç keçidi oxuyun. Bunu əlimdən gələni etdiyimdən daha yaxşı izah edir. Charlieplexing, hər bir satır və hər bir sütun üçün bir i/o pininə ehtiyacı olan ənənəvi multipleksdən fərqlidir (5/4 ekran üçün cəmi 9 i/o pin olacaq).

Addım 2: Avadanlıq və Şematik

Avadanlıq və Şematik
Avadanlıq və Şematik

Materiallar siyahısı: 1x - Əsas Damga 220x - eyni tipli işıq yayan diodlar (LEDlər) (rəng və gərginlik düşməsi) 5x - rezistorlar (müqavimət dəyəri ilə əlaqədar aşağıya baxın) Köməkçi/İsteğe bağlı: BS2Momentary düyməsini sıfırlama açarı kimi proqramlaşdırma üsulu 6v -9v BS2 versiyanızdan asılı olaraq enerji təchizatı (təlimatınızı oxuyun) Şematik: Bu sxem mexaniki planla birlikdə nəzərə alınmışdır. Solda qurulmuş LED şəbəkəsini görəcəksiniz, bu BS2 kodunun yazıldığı istiqamətdir. Diqqət yetirin ki, hər LED cütü digərinin katotuna bağlanmış anodlara malikdir. Daha sonra onlar beş i/o pinindən birinə bağlanırlar. Rezistor dəyərləri: Öz müqavimət dəyərlərinizi hesablamalısınız. LED -ləriniz üçün məlumat cədvəlini yoxlayın və ya LED -lərinizin gərginlik düşməsini tapmaq üçün rəqəmsal multimetrinizdəki LED parametrlərindən istifadə edin. Bəzi hesablamalar aparaq: Besleme Gerilimi - Gərginlik Düşməsi / İstədiyiniz Cərəyan = Rezistor Dəyəri cərəyanın. Mənim LED -lərimdə 1.6v düşmə var və 20ma.5v - 1.6v /.02amps = 155ohmsda işləyir BS2 -ni qorumaq üçün hesablama ilə əldə etdiyinizdən sonrakı yüksək müqavimət dəyərindən istifadə etməlisiniz, bu halda 180ohms olacağına inanıram. 220 ohm istifadə etdim, çünki inkişaf etdirmə lövhəmdə hər bir giriş/çıxış pinində bu müqavimət dəyəri var. DİQQƏT: İnanıram ki, hər bir pin üzərində bir rezistor olduğundan bu, hər bir pindəki müqaviməti iki dəfə artırır, çünki bir pin V+, digəri isə Gnddir. Əgər belədirsə, rezistor dəyərlərini yarı yarıya azaltmalısınız. Çox yüksək bir rezistor dəyərinin mənfi təsiri bir dimmer LED -dir. Kimsə bunu təsdiqləyə bilər və bu məlumatı yeniləmək üçün mənə bir PM və ya şərh buraxa bilərmi? Mən də bu çipi lehimsiz çörək taxtamda istifadə edirəm və Dövrədə Serial Proqramlaşdırma (ICSP) başlığı daxil etdim. Başlıq 5 sancaqdır, 2-dən 5-ə qədər sancaqlar bir DB9 seriyalı kabeldəki 2-5 pinlərə qoşulur (Pin 1 istifadə edilmir). Nəzərə alın ki, bu ICSP başlığını istifadə etmək üçün DB9 kabelindəki 6 və 7 pinləri bir -birinə bağlanmalıdır. Sıfırla: Bir anlıq basma sıfırlama düyməsi isteğe bağlıdır. Bu, pin 22 -ni itələdikdə yerə çəkir.

Addım 3: Breadboard

Çörək taxtası
Çörək taxtası
Çörək taxtası
Çörək taxtası

İndi matrisi çörək taxtasında qurmağın vaxtıdır. Hər bir cüt cərgədən bir ayağı birləşdirmək üçün bir terminal zolağı və digər ayaqları birləşdirmək üçün kiçik bir tullanan tel istifadə etdim. Bu, yaxınlıqdakı fotoşəkildə ətraflı şəkildə verilmişdir və burada dərindən izah edilmişdir: 1. Çörək lövhənizi daha böyük şəkilə uyğunlaşdırın2. LED 1-i Anod (+) sizə tərəf, Katod (-) isə sizdən uzağa yerləşdirin. LED 2 -ni LED 1 katodunun birləşdirici terminal zolağına Anod (+) ilə eyni istiqamətdə yerləşdirin. LED 1 Anotunu LED 2.5 Katotu ilə birləşdirmək üçün kiçik bir keçid teli istifadə edin. Hər cüt LED lövhəyə əlavə olunana qədər təkrarlayın. BS2 G/Ç pinləri üçün avtobus şeridi olaraq normal olaraq çörək lövhəsinin güc şeridi olan zolaqlardan istifadə edirəm. Yalnız 4 avtobus zolağı olduğundan P4 üçün terminal zolağından istifadə edirəm (beşinci G/Ç bağlantısı). Bunu aşağıda daha böyük şəkildə görmək olar. LED 1 katodunun terminal zolağını P0 avtobus şeridinə bağlayın. Hər cüt üçün uyğun P* əvəz edən hər tək nömrəli LED üçün təkrarlayın (sxematikaya baxın).7. LED 2 katodunun terminal zolağını P1 avtobus şeridinə bağlayın. Hər cüt üçün uyğun P* əvəz edən hər tək nömrəli LED üçün təkrarlayın (sxematikaya baxın).8. Hər bir avtobus şeridini BS2 (P0-P4) üzərindəki uyğun G/Ç pininə bağlayın. Şemaya uyğun olduğundan əmin olmaq üçün bütün əlaqələri yoxlayın.10. QEYD: Yaxın çəkilişdə ikinci G/Ç pininə bağlılığın tək saylı LED-lərin anodunda olduğu üçün 7-ci addımı izlədiyimi görmədiyinizi görəcəksiniz. Unutmayın ki, cüt saylı LED -lərin Katodu tək saylı LED -lərin Anoduna bağlıdır, buna görə də əlaqə eyni şəkildə olur. Bu qeyd sizi çaşdırırsa, buna məhəl qoymayın.

Addım 4: Proqramlaşdırmanın əsasları

Charlieplexing işləmək üçün bir anda yalnız bir led yandırın. BS2 ilə işləmək üçün iki əsas addıma ehtiyacımız var: 1. OUTS əmrindən istifadə edərək sancaqlar üçün çıxış rejimlərini təyin edin. BS2 -yə DIRS əmrini istifadə edərək hansı pinlərin çıxış kimi istifadə ediləcəyini söyləyin. Bu işləyir, çünki BS2 -yə hansı pimlərin yüksək və aşağı sürülməsi lazım olduğunu söyləmək olar və hansı pinlərin çıxış olduğunu müəyyən edənə qədər bunu gözləmək lazımdır. yalnız LED 1-i qırpmağa çalışırsınız. Sxemata baxsanız, P0-un LED 1-in Katotuna (-), P1-in isə eyni LED-in Anoduna bağlandığını görə bilərsiniz. Bu o deməkdir ki, biz P0 -ni aşağı və P1 -i yüksək idarə etmək istəyirik. Bu belə edilə bilər: P4-P1-i yüksək və P0 aşağı aparan "OUTS = % 11110". (% İkili ədədin təqib edilməsi lazım olduğunu göstərir. Ən aşağı ikili rəqəm həmişə sağdadır. 0 = LOW, 1 = HIGH) BS2 bu məlumatları saxlayır, lakin hansı pinlərin çıxışı olduğunu elan etməyincə buna əməl etməyəcək. Bu addım vacibdir, çünki eyni anda yalnız iki pin çıxmalıdır. Qalanları bu pinləri Yüksək Empedans rejiminə qoyan girişlər olmalıdır ki, heç bir cərəyan batmasın. P0 və P1 sürməliyik, buna görə bunları çıxışlara, qalanlarını isə daxil olaraq belə təyin edəcəyik: "DIRS = % 00011". (% İkili ədədin təqib edilməli olduğunu göstərir. Ən aşağı ikili rəqəm həmişə sağdadır. 0 = GİRİŞ, 1 = Çıxış) Bunu bir neçə faydalı koda daxil edək: '{$ STAMP BS2e}' {$ PBASIC 2.5} DO OUTS = %11110 'Sürücü P0 aşağı və P1-P4 yüksək DIRS = %00011' P0 təyin edin Çıxış olaraq P1 və Giriş kimi P2-P4 DURDUR 250 'LED-in DIRS-də qalmasını dayandırın = 0' Bütün pinləri Girişə qoyun. Bu LED -in söndürülməsi üçün PAUSE 250 'Pause -u söndürəcək

Addım 5: İnkişaf dövrü

İndi hamısının işlədiyinə əmin olmaq üçün bir pin iş vaxtı gördük.20led_Zig-Zag.bseBu əlavə edilmiş kod 20 LED-in hər birini ziq-zaq şəklində işıqlandırmalıdır. Hər bir pin yandırıldıqdan sonra bütün pinləri yenidən girişə çevirmək üçün "DIRS = 0" istifadə etdiyimi görəcəksiniz. Çıxış pinlərini söndürmədən OUTS -i dəyişdirsəniz, yanmaması lazım olan bir ledin dövrələr arasında yanıb -sönə biləcəyi bir "xəyal" əldə edə bilərsiniz. Bu kodun əvvəlindəki W1 dəyişənini "W1 = 1" olaraq dəyişdirsəniz hər LED yanıp sönmə arasında cəmi 1 milisaniyəlik fasilə olacaq. Bu, bütün LED -lərin yanan kimi görünməsini təmin edən görmə davamlılığına (POV) səbəb olacaq. Bu, LED -lərin söndürülməsi təsirinə malikdir, ancaq bu matrisdə simvolları necə göstərəcəyimizin mahiyyətidir. LEDlər istifadə edilə bilən bir model halına gətirilir. Bu fayl mənim ilk cəhdimdir. Faylın altındakı simvolların 5 rəqəmli ikilikdən ibarət dörd sətirdə saxlanıldığını görəcəksiniz. Hər bir sətir oxunur, təhlil edilir və hər dəfə bir ledin yandırılması lazım olduqda bir alt proqram çağırılır. Çalıştırmağa çalışsanız, simvolların tanınması üçün demək olar ki, çox yavaş yanıb sönməsinə səbəb olan çox yavaş bir yeniləmə sürəti ilə üzləşdiyini görürsünüz. Bu kod bir çox səbəbə görə pisdir. Birincisi, ikili rəqəmlərin beş rəqəmi, bütün məlumatlar dörd bitlik qruplarda saxlanıldığı üçün, EEPROM -da 8 ikili rəqəm qədər çox yer tutur. İkincisi, hansı pinin yandırılmalı olduğuna qərar vermək üçün istifadə olunan SELECT CASE 20 hal tələb edir. BS2 hər SELECT əməliyyatı üçün 16 işlə məhdudlaşır. Bu o deməkdir ki, IF-THEN-ELSE ifadəsi ilə bu məhdudiyyəti aşmalı oldum. Daha yaxşı bir yol olmalıdır. Bir neçə saatlıq başı cızdıqdan sonra onu kəşf etdim.

Addım 6: Daha yaxşı tərcüməçi

Matrisimizin hər bir satırı 4 LED -dən ibarətdir, hər biri açıla və ya söndürülə bilər. BS2, məlumatı EEPROM -da dörd bit qrup halında saxlayır. Bu korrelyasiya işi daha da asanlaşdırmalıdır. Buna əlavə olaraq, dörd bit 0-15 ədədlik ədədlərə uyğundur və cəmi 16 ehtimal var. EEPROM-da saxlanılan 7 rəqəmi budur: '7 %1111, %1001, %0010, %0100, %0100, Hər sətrin 0-15-ə qədər ondalık ekvivalenti var, buna görə də yaddaşdan satır və birbaşa SELECT CASE funksiyasına verin. Bu o deməkdir ki, hər bir simvolu düzəltmək üçün istifadə olunan insan oxuya bilən ikili matris (1 = açıldı, 0 = açıldı) tərcüməçi üçün açardır. 5 satırın hər biri üçün eyni SEÇMƏ CASE -dən istifadə etmək üçün başqa bir seçim halından istifadə etdim. DIRS və OUTS -i dəyişən olaraq təyin etmək. Əvvəlcə ROW1-ROW5 dəyişənlərinə xarakterin hər beş sətrini oxudum. Əsas proqram sonra xarakteri göstərmək üçün alt proqramı çağırır. Bu alt proqram birinci sıranı tutur və dörd mümkün OUTS kombinasiyasını dəyişən outp1-outp4-ə və iki mümkün DIRS kombinasiyasını direc1 və direc2-yə təyin edir. LED -lər yanıb -sönür, sıra sayacı artırılır və digər dörd satırın hər biri üçün eyni proses aparılır və bu, ilk tərcümə proqramından daha sürətlidir. Deyilənə görə hələ də nəzərəçarpacaq bir titrəmə var. Videoya bir baxın, kamera titrəməni daha da pisləşdirir, ancaq fikri anlayırsınız. Bu konsepsiyanı picMicro və ya AVR çipi kimi daha sürətli bir çipə köçürmək, bu simvolların nəzərəçarpacaq bir titrəmə olmadan göstərilməsini təmin edər.

Addım 7: Buradan hara getmək lazımdır

Məndə cnc dəyirmanı və ya elektrik lövhələri hazırlamaq üçün aşındırma materialları yoxdur, buna görə də bu layihəni məftil etməyəcəyəm. Bir dəyirmanınız varsa və buradan irəli getmək üçün əməkdaşlıq etmək istəyirsinizsə, mənə bir mesaj göndərin. Bu layihə üçün hazır bir məhsul göstərməkdən daha çox məmnun olarsa, material və göndərmə haqqını ödəməkdən məmnun olaram.

Digər imkanlar: 1. Bunu başqa bir çipə bağlayın. Bu matris dizaynı, üç vəziyyətli (yüksək, aşağı və ya giriş (yüksək empedans) ola bilən pinlər) olan 5 i/o pimi olan hər hansı bir çip ilə istifadə edilə bilər. 2. Daha sürətli bir çip (bəlkə də AVR və ya picMicro) istifadə edərək miqyası artıra bilərsiniz. 20pin çipi ilə 8x22 displeyi charlieplex etmək üçün 14 sancaqdan istifadə edə bilərsiniz və qalan pinləri kompüterdən və ya başqa bir nəzarətçidən serial əmrləri almaq üçün istifadə edə bilərsiniz. Daha üç 20-pinli fiş istifadə edin və bir anda cəmi 11 simvol üçün 8x88 ölçülü bir sürüşmə ekranına sahib ola bilərsiniz (əlbəttə ki, hər bir xarakterin genişliyindən asılı olaraq). Uğurlar, əylənin!

Tövsiyə: