Mündəricat:

74HC164 Shift Qeydiyyatı və Arduino: 9 addım
74HC164 Shift Qeydiyyatı və Arduino: 9 addım

Video: 74HC164 Shift Qeydiyyatı və Arduino: 9 addım

Video: 74HC164 Shift Qeydiyyatı və Arduino: 9 addım
Video: Unlocking Shift Registers: Arduino Guide to 74HC164 with 74HC595 Comparison! 2024, Noyabr
Anonim
74HC164 Shift Qeydiyyatı və Arduino
74HC164 Shift Qeydiyyatı və Arduino
74HC164 Shift Qeydiyyatı və Arduino
74HC164 Shift Qeydiyyatı və Arduino

Dəyişdirmə qeydləri rəqəmsal məntiqin çox vacib bir hissəsidir, paralel və serial dünyaları arasında yapışqan rolunu oynayır. Tel sayını azaldır, pin istifadə edir və hətta məlumatlarını saxlaya bilməklə cpu yükünüzü çıxarmağa kömək edir. Fərqli ölçülərdə, fərqli istifadə üçün fərqli modelləri və fərqli xüsusiyyətləri var. Bu gün müzakirə edəcəyim biri 74HC164 8 bit, paralel olaraq çıxarılan, kilidsiz, növbəli qeyddir. Niyə? Birincisi, bu, orada öyrənməyi asanlaşdıran ən əsas keçid qeydlərindən biridir, amma məndə yeganə idi (lol!) Bu təlimat bu çipin necə işlədiyini, telin necə bağlanacağını əhatə edir. və bəzi nümunə eskizləri və açılan sxemlər daxil olmaqla bir arduino ilə birləşdirin. Hamınızın zövq alacağına ümid edirəm!

Addım 1: Beləliklə, Shift Qeydləri nədir?

Beləliklə, Shift Qeydləri nədir?
Beləliklə, Shift Qeydləri nədir?

Daha əvvəl də qeyd edildiyi kimi, hər cür fərqli ləzzətdə gəlirlər və mən də qeyd etdim ki, 74HC164 8 bitlik, paralel olaraq çıxarılan, kilidlənməmiş, növbəli reyestrdən istifadə edirəm, bu nə deməkdir?!? Birincisi, 74 adı-74xx məntiq ailənin bir hissəsi deməkdir və məntiqi çox cərəyanı birbaşa idarə edə bilmədiyi üçün (bütün çip üçün 16-20ma adi haldır), yalnız ətrafdakı siqnalları ötürür, amma bu o demək deyil Bu siqnal daha yüksək cərəyan yükünü dəyişə bilən bir tranzistora getmir. HC, yüksək sürətli cmos cihazı deməkdir, bu barədə aşağıdakı linkdən oxuya bilərsiniz, ancaq bunun üçün əsas bildiyiniz şeyin aşağı olmasıdır. güc qurğusu və 2 ilə 5 volt arasında işləyəcək (buna görə də 3.3 volt arduino istifadə etsəniz yaxşı olar) Həmçinin yüksək sürətlə düzgün işləyə bilər, bu çipin tipik sürəti 78 mhz -dir, ancaq yavaş və ya sürətli gedə bilərsiniz (istədiyiniz kimi www.kpsec.freeuk.com/components/74series.htm164 bu çipin model nömrəsidir, wikipediaen.wikipedia.org/wiki/List_of_7400_series_integrated_circuits -də böyük bir diaqram var Sonrakı, 8 bit Bir keçid reyestri flip flop sxemlərindən ibarətdir, flip flop 1 bit yaddaşdır, bu s 8 (və ya 1 bayt yaddaş). Yaddaş olduğundan, qeydiyyatı yeniləməyinizə ehtiyac yoxdursa, onunla "danışmağı" dayandıra bilərsiniz və onu yenidən "danışana" və ya gücü sıfırlayana qədər buraxdığınız vəziyyətdə qalacaq. digər 7400 məntiqi seriyalı keçid qeydləri paralel olaraq 16 bitlik seriyaya qədər gedə bilər. Bu o deməkdir ki, arduino məlumatları ardıcıl olaraq göndərir (bir -birinin ardınca pulslar söndürülür) və keçid reyestri hər biti düzgün çıxış pininə yerləşdirir. Bu modelə nəzarət etmək üçün yalnız 2 tel tələb olunur, buna görə də arduino -da 2 rəqəmsal pin istifadə edə bilərsiniz və bu 2 -dən 8 -ə qədər rəqəmsal çıxışı qıra bilərsiniz, digər modellər isə paralel olaraq çıxır, eyni şeyi edirlər, ancaq arduino girişləri kimi (məsələn, NES gamepad) kilidlənməmişdir Ehtiyacınız varsa bu çipin çöküşü ola bilər. Verilər silsilədən keçid qeydinə daxil edildikdə, ilk çıxış pinində görünür, bir saat nəbzi daxil olduqda, ilk bit 1 yerdən keçərək çıxışlarda sürüşmə effekti yaradır, məsələn 00000001 çıxışlarda görünür Eyni saatı paylaşan və bunu gözləməyən digər məntiq cihazları ilə danışsanız, bu problemlərə səbəb ola bilər. Latch edilmiş qeyd qeydlərində əlavə bir yaddaş dəsti var, buna görə məlumatlar reyestrə daxil edildikdən sonra bir açarı çevirərək çıxışları göstərə bilərsiniz, ancaq başqa bir tel, proqram təminatı və davam etməli şeylər əlavə edir. LED displeyləri idarə edirik, sürüşmə effekti o qədər sürətli baş verir ki, onu görə bilmirsən (çipi ilk dəfə açdığın vaxt istisna olmaqla) və bayt növbə qeydində olanda artıq sürüşmə yoxdur Biz 7 növ segmentli bargraph tipinə nəzarət edəcəyik. və yalnız 2 rəqəmsal sancaq (+ güc və torpaq) istifadə edərək arduinoda bu çip və proqram təminatı ilə 16LED 4x4 nöqtə matrisi

Addım 2: Əsas Kablolama və Əməliyyat

Əsas naqillər və istismar
Əsas naqillər və istismar
Əsas naqillər və istismar
Əsas naqillər və istismar

Kablolama 74HC164, 14 pinli bir çipdir, 4 giriş pininə, 8 çıxış pininə, gücə və toprağa malikdir, buna görə də yuxarıdan başlayaq. 1 və 2 -ci pinlər hər ikisi seriyalı girişdir, məntiqi VƏ qapısı olaraq qurulub, yəni Bitin 1 olaraq görülməsi üçün hər ikisinin məntiqi yüksək olmalıdır (yəni 5 volt), hər ikisinin də aşağı vəziyyəti (0 volt) sıfır olaraq oxunacaq. Həqiqətən buna ehtiyacımız yoxdur və proqramla məşğul olmaq daha asandır, buna görə birini seçin və V+ ilə bağlayın ki, həmişə yüksək oxusun. Çipin üstündən bir çörək taxtası ata biləcəyiniz üçün 1 -ci pindən 14 -ə qədər (V+) bir tullanan istifadə etməyi seçirəm. Qalan bir ardıcıl giriş (sxemlərimdə pin 2) arduinonun rəqəmsal 2 pininə sahib olacaq. 74HC164 -ün 3, 4, 5 və 6 -cı pinləri pin 7 -nin yerə qoşulduğu ilk 4 baytdır. Sağdan atlayaraq, pin 8 saat pinidir, növbənin qeydiyyatı sonrakı serial bitinin oxumağa hazır olduğunu belə bilir, bu arduino üzərindəki rəqəmsal pin 3 -ə bağlanmalıdır., onu istifadə etmək seçiminiz var, amma heç bir şey yoxdur, buna görə də onu V+sancaqlarına bağlayın 10, 11 12 və 13, çıxış pininin son 4 baytıdır 14 cips gücüdür Əməliyyat Əvvəlcə seriya girişini təyin etməlisiniz reyestrin (arduino üzərindəki rəqəmsal pin 2) yüksək və ya aşağı, sonra saat pinini (rəqəmsal pin 3) aşağıdan yuxarıya çevirməlisiniz, növbənin reyestri serial girişindəki məlumatları oxuyacaq və çıxış pinlərini 1, 8 dəfə təkrarlayın və bütün 8 çıxışı təyin etdiniz. Bu arduino IDE -də döngələr və rəqəmsal yazılar üçün əllə edilə bilər, ancaq t onun, sizin üçün bunu edən tək bir funksiyaya sahib olan çox yaygın bir hardware səviyyəli ünsiyyətdir (SPI). shiftOut (dataPin, clockPin, bitOrder, dəyər) Məlumatların və saat pinlərinin arduino -ya harada qoşulduğunu, məlumatların hansı yolla göndəriləcəyini və nəyin göndəriləcəyini və sizin üçün qayğı göstərildiyini söyləyin (lazımlı)

Addım 3: Layihələr

Layihələr
Layihələr

Tamam, kifayət qədər mühazirə və nəzəriyyə, bu çiplə bir az əyləncəli şeylər edək! Bu təlimatlandırmada sınamaq üçün 3 layihə var, ilk 2 -si asandır və bir neçə dəqiqə ərzində çörək taxmaq mümkündür. Üçüncüsü, 4x4 ledli matris, elektrik naqilləri səbəbiylə daha çox vaxt və qurulma tələb edir. Parça siyahısı Layihə 1: '2 Tel' bargraph LED displey nəzarətçisi 1 * 74HC164 Shift register1 * lehimsiz çörək taxtası1 * arduino və ya arduino uyğun (5v) 1 * 330 ohm 1/4 vatt müqavimətçi 8 * normal çıxış qırmızı LED -lərin 12 * keçid telləri Layihə 2: '2 Tel' 7 seqmentli ekran idarəedicisi 1 * 74HC164 Vəziyyət registri1 * lehimsiz çörək lövhəsi1 * arduino və ya arduino uyğun (5v)) 1 * 330 ohm 1/4 watt müqavimət 1 * ümumi katot yeddi seqmentli ekran 9 * tullanan tellər Layihə 3: '2 Tel' 4x4 led matrisli ekran 1 * 74HC164 Shift reyestr1 * arduino və ya arduino uyğun (5v) 4 * 150 ohm 1 1/4 vatt müqavimət 8 * 1Kohm 1/8 vatt müqavimət (və ya daha böyük) 8 * NpN tranzistor (2n3904 və ya daha yaxşı) 16 * normal çıxış qırmızı LED, onu qurmaq üçün bir vasitədir və 160+ma idarə edə bilən 5 volt gücə malikdir əyləc işığı kimi bütün LEDləri dərhal yandırın)

Addım 4: Layihə 1 [pt 1]: '2 Telli' Bargraph LED Ekran Nəzarət Cihazı

Layihə 1 [pt 1]: '2 Telli' Bargraph LED Display Controller Donanımı
Layihə 1 [pt 1]: '2 Telli' Bargraph LED Display Controller Donanımı
Layihə 1 [pt 1]: '2 Telli' Bargraph LED Display Controller Donanımı
Layihə 1 [pt 1]: '2 Telli' Bargraph LED Display Controller Donanımı

Arduino və shift registrini sxemə görə bağlayın, artıq çörək taxtası üçün hazır olan 10 seqmentli bir bargraf ekrana sahibəm və bunu görüntüdə görəcəksiniz, ancaq fərdi ledlər ilə eyni şeyi ikinci səhifədə edə bilərsiniz. Dedim ki, bunlar sürücü qurğuları deyil, məntiq qurğularıdır, cüzi miqdarda cərəyan keçə bilir. Dövrü sadə saxlayarkən və keçid qeydini bişirmədikdə 8 LED -in işə salınması üçün cərəyanı bir qədər məhdudlaşdırmalıyıq. Bütün LED -lərin 10ma (5 volt) istifadə edə biləcəyi cərəyanın ümumi miqdarını məhdudlaşdıran 330 ohm rezistordan keçmələri lazımdır. bu nümunə, LED -ləri lazımi cərəyanda idarə etmək üçün, keçid qeydinin daha yüksək bir cərəyan mənbəyini aça / söndürə biləcəyi bir transistor daxil etməlisiniz (bax layihə 3) Vəziyyət qeydinin Məlumat pininə (pin 2) ehtiyac var 2 nömrəli arduino rəqəmsal pininə qoşulmaq üçün Vəziyyət qeydinin saat pininin (pin 8) arduino rəqəmsal pin # 3 -ə qoşulması lazımdır

Addım 5: Layihə 1 [pt 2]: '2 Tel' Bargraph LED Ekran Nəzarətçisi Proqramı

Layihə 1 [pt 2]: '2 Telli' Bargraph LED Ekran Nəzarətçisi Proqramı
Layihə 1 [pt 2]: '2 Telli' Bargraph LED Ekran Nəzarətçisi Proqramı
Layihə 1 [pt 2]: '2 Telli' Bargraph LED Ekran Nəzarətçisi Proqramı
Layihə 1 [pt 2]: '2 Telli' Bargraph LED Ekran Nəzarətçisi Proqramı

Misal 1: Arduino IDE -nin içərisində "_164_bas_ex.pde" faylını açın, onun sadə bir eskizi, bazarlıq ekranında LED -ləri açmaq və ya söndürmək imkanı verir İlk 2 sətir, məlumat və saat üçün istifadə edəcəyimiz pin nömrələrini təyin edir. const tamsayı üzərində #define istifadə edin, xatırlamağı asanlaşdırıram və bir dəfə tərtib edildikdə birinin və ya digərinin heç bir üstünlüyü yoxdur #define data 2 #saatı təyin et 3 sonra boşluq qurma funksiyasıdır, yalnız bir dəfə işləyir, buna görə də arduino dönür aktivdir, növbənin qeydini təyin edir və başqa heç bir işi yoxdur. Void quraşdırma funksiyasının içərisində saatı və məlumat sancaqlarını ÇIXIŞ pinləri olaraq təyin edirik, sonra shiftOut funksiyasından istifadə edərək məlumatları shift registrinə boşluq qurulmasına göndəririk () {pinMode (clock, OUTPUT); // saat pinini pinMode (məlumat, Çıxış) etmək; // məlumat pinini çıxış shiftOut etmək (məlumat, saat, LSBFIRST, B10101010); // bu ikili dəyəri shift reyestrinə göndərin} shiftOut funksiyasında arqumentlərini görə bilərsiniz: data - məlumat pinidir, saat - saat pinidir LSBFIRST ikili işarədə (Bxxxxxxxx) yazarkən onun hansı sıraya aid olduğunu bildirir. B -dən əvvəlki element ən az işarəedici bitdir, əvvəlcə bu ilk olaraq verilir, buna görə də 8 bitin hamısı b10101010 -a keçdikdə, ikili dəyər növbənin reyestrinə göndərilir və hər tək işığı yandırır., fərqli nümunələri yandırmaq və ya söndürmək üçün fərqli dəyərlərlə oynamağa çalışın və nəhayət boş bir boşluq döngəsi (çünki istifadə etməsəniz belə ehtiyacınız var) void loop () {} // boş döngə Nümunə 2: ilk 8 sətir ilk nümunənin ilk 8 sətri ilə eyni, əslində digər layihələr üçün dəyişməyəcək, buna görə də #define data 2 #saatı təyin edin 3void quraşdırma () {pinMode (saat, ÇIXIŞ); // saat pinini pinMode (məlumat, Çıxış) etmək; // məlumat pinini bir çıxış halına gətirin Ancaq indi boş bir quruluşda 8 bayraq sayı var, boş bir bayt götürür və ən bit soldan başlayaraq sağa hərəkət edir. Bu, ən sağdan başladığımız və solda işlədiyimiz ilk nümunədən geriyədir, ancaq MSBFIRST -dən istifadə edərək məlumatları düzgün şəkildə göndərir, həmçinin for döngəsinə bir gecikmə əlavə edirik ki, görünəcək qədər yavaşlayar. for (int i = 0; i <8; ++ i) // for 0 - 7 do {shiftOut (data, clock, MSBFIRST, 1 << i); // bit gecikdirmə məntiqi yüksək (1) dəyər i gecikmə (100); // 100 ms gecikdir, yoxsa görə bilməyəcəksən}} void loop () {} // boş döngə indiyə qədər skript yükləyin və indi bargraph hər işığın bir anda yandığını görməlisiniz.

Addım 6: Layihə 2: '2 Telli' 7 Segmentli Ekran Nəzarətçisi

Layihə 2: '2 Tel' 7 Segment Ekran Nəzarətçisi
Layihə 2: '2 Tel' 7 Segment Ekran Nəzarətçisi
Layihə 2: '2 Tel' 7 Segment Ekran Nəzarətçisi
Layihə 2: '2 Tel' 7 Segment Ekran Nəzarətçisi

7 seqmentli ekranınızın pinoutuna baxın (yalnız ikisi var idi, ancaq yarısından istifadə edirdim) və hər seqmenti shift registrindəki düzgün bitə bağlamaq üçün aşağıdakı rəsmdən istifadə edin 1 = pin 3bit 2 = pin 4bit 3 = pin 5bit 4 = pin 6bit 5 = pin 10bit 6 = pin 11bit 7 = pin 12bit 8 = pin 13 (ondalık nöqtədən istifadə etmək istəyirsinizsə) Və 330ohm rezistor vasitəsilə ekranın katotu və elektrik təchizatı üçün yerdən açın seven_seg_demo.pde arduino IDE -də əvvəlcə məlumatları və saat sancaqlarını harada təyin etdiyimizi görürsünüz #məlumatları təyin edin 2 #saatı təyin edin 3 Ardından bütün simvol naxışlarını ikili olaraq təyin edirik, bu olduqca asandır, orta seqmentə ehtiyacınız varsa aşağıdakı rəsmə baxın. birini yazın, sonra üst seqmentə ehtiyacınız var, əgər başqa birini yazsanız, bütün 8 seqmentləri əhatə edənə qədər bunu davam etdirin, sağdakı bitimin (bit 8) hər zaman 0 olduğunu unutmayın, buna görə heç vaxt onluğu açmıram nöqtə bayt sıfır = B01111110; bayt bir = B00000110; bayt iki = B11011010; üç bayt = B11010110; bayt dörd = B10100110; bayt beş = B11110100; bayt altı = B11111100; bayt yeddi = B01000110; bayt səkkiz = B11111110; bayt səkkiz = B11111111; sonradan etibarsız quraşdırma məlumatlarımızı və saat pinlərimizi boşluq qurulmasını () {pinMode (clock, OUTPUT); // saat pinini pinMode (məlumat, Çıxış) etmək; // məlumat pinini bir çıxışa çevirin3} sonra boş bir döngədə hər naxışı (nömrəni) göstərmək üçün 1/2 saniyə gözləyin və 0 -dan 9 -a qədər olanı göstərmək üçün shiftOut istifadə edirik. 0-9 və sonsuza qədər təkrarlayın. void loop () {shiftOut (data, clock, LSBFIRST, zero); gecikmə (500); shiftOut (məlumat, saat, LSBFIRST, bir); gecikmə (500); shiftOut (məlumat, saat, LSBFIRST, iki); gecikmə (500); shiftOut (məlumat, saat, LSBFIRST, üç); gecikmə (500); shiftOut (məlumat, saat, LSBFIRST, dörd); gecikmə (500); shiftOut (məlumat, saat, LSBFIRST, beş); gecikmə (500); shiftOut (məlumat, saat, LSBFIRST, altı); gecikmə (500); shiftOut (məlumat, saat, LSBFIRST, yeddi); gecikmə (500); shiftOut (məlumat, saat, LSBFIRST, səkkiz); gecikmə (500); shiftOut (məlumat, saat, LSBFIRST, doqquz); gecikmə (500);}

Addım 7: Layihə 3 [pt 1]: '2 Tel' 4x4 Led Matrix Ekran

Layihə 3 [pt 1]: '2 Tel' 4x4 Led Matrix Ekran
Layihə 3 [pt 1]: '2 Tel' 4x4 Led Matrix Ekran
Layihə 3 [pt 1]: '2 Telli' 4x4 Led Matrix Ekranı
Layihə 3 [pt 1]: '2 Telli' 4x4 Led Matrix Ekranı

4x4 LED matris layihəsi bir az daha mürəkkəbdir, amma demək olar ki, hamısı tikinti mərhələsindədir, mən özümün taxtaya lehimləməsini seçirəm, ancaq bir çörək taxtasında təkrarlanmaq mümkün olmalıdır, yalnız bir qədər aralıda. Dəyişdirmə qeydinin birbaşa ledləri idarə etməməsi ilə fərqlənir, bunun əvəzinə keçid qeydinin çıxışları 1Kohm rezistor vasitəsilə NpN tranzistorunun bazasına göndərilir, bitin çıxışı yüksək olduqda kifayət qədər cərəyan və gərginliyin ötürülməsinə imkan verir. kollektor və emitör arasındakı əlaqəni dəyişdirmək üçün tranzistor, kollektorlar "möhkəm" tənzimlənmiş 5 volta bağlanır. Transistorların emitentləri 150 ohm rezistorlara bağlanır və rezistorlar ardıcıl olaraq 4 ledin anodlarına bağlanır və cərgəni 20ma ilə məhdudlaşdırır, baxmayaraq ki, ekranda şəkillər çəkərkən bir anda yalnız 1 led yanır və buna görə də tam parlaqlığa yaxındır (çünki bütün görüntünü düzəltmək üçün həqiqətən çox tez açılır və sönür) 4 satır və 4 var sütunlar, hər biri sıra bir rezistor və tranzistor alır, hər bir sütunda LED -in katotları bir -birinə bağlanır, bazası da keçid registri tərəfindən idarə olunan tranzistorun kollektoruna daxil olur və nəhayət yerə düşür. Şematik böyük versiyası www.instructables.com/files/orig/F7J/52X0/G1ZGOSRQ/F7J52X0G1ZGOSRQ.jpg

Addım 8: Layihə 3 [pt 2]: '2 Tel' 4x4 Led Matrix Ekran

Layihə 3 [pt 2]: '2 Tel' 4x4 Led Matrix Ekran
Layihə 3 [pt 2]: '2 Tel' 4x4 Led Matrix Ekran
Layihə 3 [pt 2]: '2 Tel' 4x4 Led Matrix Ekran
Layihə 3 [pt 2]: '2 Tel' 4x4 Led Matrix Ekran
Layihə 3 [pt 2]: '2 Tel' 4x4 Led Matrix Ekran
Layihə 3 [pt 2]: '2 Tel' 4x4 Led Matrix Ekran

Dəyişdirmə registri, YX formatında LED -lərin həm anodunu, həm də katotlarını idarə edir, aşağıdakılara baxın 1 = sütun 1 (ən sağda) bit 2 = sütun 2 bit 3 = sütun 3 bit 4 = sütun 4 bit 5 = satır 1 (ən üst) bit 6 = satır 2 bit 7 = satır 3 bit 8 = satır 4 Bir şəkil çəkmək üçün qrafik kağızına 4x4 kvadrat çəkin və hansılarını göstərmək istədiyinizi doldurun, sonra YX cədvəli yaradın. Aşağıda bir bənzətmə üçün bir eşleme görürsünüz və ən yaxşısı 4x4 "piksel" üzərində edə biləcəyiniz hər bir bölmə üçün hansı sütunun (Y) olduğunu, sonra hansı sətirdə olduğunu (X) yazıram İndi açın _4x4.pde faylını arduino IDE -də görürsünüz köhnə 2 dostumuz #məlumatları təyin edin 2 #saatı təyin edin 3 sonra tam ədədlər int img = {1, 1, 4, 1, 1, 3, 4, 3, 2, 4, 3, 4}; Yazdığım YX koordinatlarının yalnız bir siyahısına baxsanız, bu dəyərləri əllə çevirmək böyük bir ağrı olardı və bir kompüterimiz var … bunu edək! Hərəkət etdiyimiz boş bir quruluş var saat və məlumat pinlərimiz Çıxışların boşluğu () {pinMode (saat, ÇIXIŞ); // saat pinini pinMode (məlumat, Çıxış) etmək; // məlumat pinini çıxışa çevirin3} Və qarışıq görünən boşluq döngəsi, işlərə başlamaq üçün bəzi yerli dəyişənləri void loop () {int Y; int X; bayt çıxarmaq; Sonra bir döngə üçün bu döngənin img dizisindəki girişlərin miqdarı qədər uzun olması lazımdır, bu şəkil üçün yalnız 6 piksel istifadə etdim, beləliklə 12 YX koordinatı yaradır. İ += 2 istifadə edərək hər bir nömrəni atlamağa məcbur edirəm, çünki hər döngədə 2 koordinat oxuyuruq (int i = 0; i <12; i += 2) // img dizisindəki nöqtələrin sayı, bu halda 12 {İndi serialdakı -də Y entery oxuyuruq və dəyərindən birini çıxarırıq, çünki baytlar birdən başlamır, sıfırdan başlayır, amma 1 -dən saydıq // ilk cüt YX kordunu əldə edirik Y = (img - 1); // bit sayının 0 -dan başladığı üçün birini çıxartın Sonra X = entery -ni [i + 1] -də oxuyuruq və eyni səbəbdən X = (img [i + 1] - 1) dəyərindən birini çıxarırıq.); Pikselin YX dəyərlərinə sahib olduqdan sonra bir az bit və ya riyazi hərəkətlər edərək sola keçirik. Əvvəlcə X dəyərini oxumalıyıq və dəyəri nə olursa olsun bir çox yerdən + 4 sola sürüşdürməliyik, əgər X 4 olarsa və 4 -ə əlavə edin, bu 8 -ci bitdir (MSB), yenidən qrafikə baxırıq … bit 1 = sütun 1 (sağda) bit 2 = sütun 2 bit 3 = sütun 3 bit 4 = sütun 4 bit 5 = satır 1 (ən üst) bit 6 = satır 2 bit 7 = sıra 3bit 8 = satır 4Bit 8 sonuncu satır Növbəti dəfə Y dəyəri də sola köçürülür, bu dəfə heç bir şey əlavə edilmir. (nibbles), bitwise və ya (simvolu |) istifadə edərək iki bayt götürür və onları bir yerə əlavə edir, X = 10000000Y = 00000001 -------------------- OR = 10000001row 4 sütun 1 çıx = 1 << (X + 4) | 1 << Y; Və nəhayət, cari şəkli göstərmək üçün shiftOut və serialda artıq məlumatımız olmayana qədər bunu etməyə davam edin … məlumatları sola köçürdüyümüz üçün MSB -nin son çıxış pinində olması lazım olduğu üçün bir an və döngəni sonsuza qədər gecikdirin. əvvəlcə növbənin reyestrindən göndərin. shiftOut (məlumat, saat, MSBFIRST, xaric); // baytı qeyd gecikməyimizə köçürün (1); // gözünüzdə bir işıq nöqtəsi buraxma şansına sahib olmaq üçün gecikdirin, öz şəkillərinizi və effektlərinizi çəkin, 3 nümunə fayl, smiley üz və dama taxtası var (daha çox zolaqlara bənzəyir), və nəhayət təsadüfi bir parıltı istehsalçısı

Addım 9: Nəticə

Nəticə
Nəticə
Nəticə
Nəticə
Nəticə
Nəticə

Bütün bunların üzərində olduqca lazımlı kiçik bir çip var və onu zibilliyə yönəldilmiş köhnə bir elektronik parçasından çıxardığım üçün çox şadam ki, ekran sistemlərindən başqa başqa şeylər üçün də istifadə oluna bilər, amma hər kəs işıqları və görmənin dərhal rəyini sevir. nələr baş verir, I kimi vizual düşünənlər üçün son dərəcə faydalıdır. Zəhmət olmasa kodumu bağışlayın, yalnız oktyabrın üçüncü həftəsindən bəri arduino içmişəm və olduqca böyük bir qəza kursu idi. Ancaq sistemin üstün tərəfi budur, əgər oturub onunla işləsəniz, dünyanı 8 bitlik mikrokontrolörlə idarə etməyi olduqca asanlaşdıran səliqəli xüsusiyyətlərlə doludur. oxu, inşallah çox şey öyrənərsən

Tövsiyə: