Мазмуну:

74HC164 Shift реестри жана сиздин Arduino: 9 кадам
74HC164 Shift реестри жана сиздин Arduino: 9 кадам

Video: 74HC164 Shift реестри жана сиздин Arduino: 9 кадам

Video: 74HC164 Shift реестри жана сиздин Arduino: 9 кадам
Video: Урок програмування на Arduino №26 " Знайомство із регістром зсуву" 2024, Ноябрь
Anonim
74HC164 Shift реестри жана Сиздин Arduino
74HC164 Shift реестри жана Сиздин Arduino
74HC164 Shift реестри жана Сиздин Arduino
74HC164 Shift реестри жана Сиздин Arduino

Shift реестрлери санариптик логиканын абдан маанилүү бөлүгү, алар параллелдүү жана сериялык дүйнөлөрдүн ортосунда клей катары иштешет. Алар зымдардын санын кыскартат, пин колдонууну, ал тургай, маалыматтарды сактоого жөндөмдүү болуп, cpuңуздун жүгүн түшүрүүгө жардам берет. Бүгүн мен талкуулай турган бул 74HC164 8 бит, параллелдүү, бекилбеген, нөөмөт реестри. Биринчиден, бул ал жердеги эң негизги сменалык регистрлердин бири, бул жөнүндө үйрөнүүнү жеңилдетет, бирок менде жалгыз болгон (lol!), жана аны ардуино менен интерфейс, анын ичинде кээ бир үлгү эскиздер жана схемалар жетектейт.

1 -кадам: Ошентип, Shift реестрлери деген эмне?

Ошентип, Shift реестрлери деген эмне?
Ошентип, Shift реестрлери деген эмне?

Жогоруда айтылгандай, алар ар кандай даамдарда келет, мен дагы 74HC164 8 битти колдонуп жатканымды айттым, параллелдүү, бекилбеген, сменалык регистр, мунун баары эмнени билдирет?!? Биринчиден, 74 аты-74xx логикалык үй-бүлөсүнүн бир бөлүгүн билдирет жана анын логикасы өтө көп токту башкара албагандыктан (жалпы чип үчүн 16-20ма кеңири таралган), ал сигналдарды айланып өтөт, бирок бул дегенди билдирбейт Бул сигнал жогору турган жүктү алмаштыра турган транзисторго өтпөйт. HC анын жогорку ылдамдыктагы смос түзмөгүн билдирет, бул жөнүндө төмөндөгү шилтемеден окуй аласыз, бирок негизинен бул жөнүндө билишиңиз керек болгон нерсе төмөн күч түзмөгү жана 2ден 5 вольтко чейин иштейт (андыктан 3,3 вольттуу arduino колдонсоңуз) Ошондой эле ал жогорку ылдамдыкта туура иштей алат, бул чиптин 78 мГц кадимки ылдамдыгы бар, бирок сиз жай же ылдам бара аласыз (ал чуркай баштаганда) сиз каалагандай www.kpsec.freeuk.com/components/74series.htm164 - бул чиптин модель номери, wikipediaen.wikipedia.org/wiki/List_of_7400_series_integrated_circuits Кийинки, 8 бит Сменалык реестр флип -флоп -схемалардан турат, флип -флоп - 1 бит эс, бул бир га s 8 (же 1 байт эс). Бул эстутум болгондуктан, реестрди жаңыртуунун кажети жок болсо, аны менен "сүйлөшүүнү" токтотуп койсоңуз болот жана аны кайра "сүйлөшмөйүнчө" же кубаттуулукту баштапкы абалга келтирмейинче, сиз аны кандай абалда калтырсаңыз да ошол бойдон калат. башка 7400 логикалык сериялы жылдыруунун регистрлери параллелдүү түрдө 16 биттик серияга чейин кете алат, бул сиздин ардуиноңузду маалыматтарды сериялык түрдө жөнөтөт (импульстар биринин артынан бири) жана которуу реестри ар бир битти туура чыгаруу пинине коет. Бул модель көзөмөлдөө үчүн 2 зымды гана талап кылат, андыктан сиз arduinoдо 2 санарип казыкты колдонсоңуз болот жана башка 2ден 8ге чейин башка санариптик чыгымдарды сындырсаңыз болот, кээ бир башка моделдер сериялык түрдө параллель болуп саналат, алар ошол эле нерсени жасашат, бирок arduinoго кириш катары (мисалы, NES геймпады) жабылбаган Бул сизге керек болсо, бул чиптин кулашы болушу мүмкүн. Маалыматтар нөөмөт реестрине сериал аркылуу киргенде, ал биринчи чыгуучу пинде көрүнөт, сааттын импульсу киргенде, биринчи бит 1 орунга жылат, натыйжада жылдыруучу эффект жаратат, мисалы 00000001 чыгууда көрүнөт Эгер 101001000100001000001000000100000001 Эгерде сиз бир эле саатты бөлүшүп жаткан жана аны күтпөгөн башка логикалык түзмөктөр менен сүйлөшсөңүз, анда ал көйгөйлөрдү жаратышы мүмкүн. Тартылган сменалык регистрлерде кошумча эстутум топтому бар, андыктан маалыматтар реестрге киргенден кийин сиз которгучту которуп, чыгууларды көрсөтө аласыз, бирок ал башка зымды, программалык камсыздоону жана башка нерселерди кошот. Биз LED дисплейлерди башкарып жатабыз, жылдыруу эффекти ушунчалык тез болот, аны көрө албайсыз (чипти биринчи жолу күйгүзгөнүңүздү кошпогондо) жана байт нөөмөт реестринде болгондон кийин жылдыруу болбойт, биз барграфтын түрүн көзөмөлдөйбүз, 7 сегмент жана 16LED 4x4 чекиттүү матрицасы, бул чип жана arduino программасы менен 2 гана санарип казык (+ кубат жана жер)

2 -кадам: Негизги зым жана иштетүү

Негизги зымдар жана иштөө
Негизги зымдар жана иштөө
Негизги зымдар жана иштөө
Негизги зымдар жана иштөө

Кабелдик 74HC164 - бул 14 пин чип, анда 4 кирүү казыгы, 8 чыгуучу казык, күч жана жер бар, ошондуктан жогору жактан баштайлы. Пиндер 1 жана 2 экөө тең сериялык кириштер, алар логикалык ЖАНА дарбаза катары орнотулган, башкача айтканда Битти 1 катары көрүү үчүн экөө тең логикалуу болушу керек (б.а. 5 вольт), экөөнүн тең абалы төмөн (0 вольт) нөлгө тең болот. Бизге бул чынында эле кереги жок жана программалык камсыздоону оңой чечүү керек, андыктан бирин тандап, аны V+ менен байлап коюңуз, андыктан ал дайыма жогору окулат. Мен 1 -пинден 14 -пинге чейин секиргичти колдонууну тандамакмын (V+), анткени сиз чиптин үстүнө эле нан секирүүчү секире аласыз. Калган бир сериялык киргизүү (менин схемаларымда пин 2) ардуинонун 2 санариптик пини болот. 74HC164 -тин 3, 4, 5 жана 6 -пиндери чыгаруунун биринчи 4 байты Пин 7 жерге туташат Оңго секирүү, пин 8 сааттын пини, бул кезектеги регистр кийинки сериялык битти окууга даяр экенин ушундайча билет, бул ардуинодогу цифралык 3 -пинге туташтырылышы керек. Пин 9, эгер ал төмөн түшүп калса, бир эле учурда бардык реестрди тазалоо керек., сизде аны колдонуу мүмкүнчүлүгү бар, бирок бул эч нерсеге жетпейт, андыктан аны V+казыктарына байлаңыз 10, 11 12 жана 13 - бул pinpin акыркы 4 байты 14 микросхемалардын кубаттуулугу Операция Алгач сиз сериялык киргизүүнү орнотушуңуз керек реестрдин (ардуинодогу санариптик 2 -пин) бийик же төмөн, андан кийин сааттын пинин (санариптик пин 3) төмөндөн жогору карай оодаруу керек, сменалык реестр сериялык киргизүү боюнча маалыматтарды окуйт жана чыккычтарды жылдырат 1, 8 жолу кайталаңыз жана сиз бардык 8 чыгарууну койдуңуз. Бул ардуино IDEде циклдар жана санарип жазуулар үчүн кол менен жасалышы мүмкүн, бирок т. бул абдан кеңири таралган аппараттык деңгээлдеги байланыштар (SPI), алар сиз үчүн муну аткаруучу бир функцияга ээ. shiftOut (dataPin, clockPin, bitOrder, value) Жөн гана маалыматтын жана сааттардын пиндери arduino менен кайда туташканын, маалыматты кандай жол менен жөнөтүү керектигин жана анын камкордугун айтыңыз (колдо)

3 -кадам: Долбоорлор

Долбоорлор
Долбоорлор

Макул, лекция жана теория жетиштүү, бул чип менен кызыктуу нерселерди кылалы! Бул үйрөтүлө турган 3 долбоор бар, биринчи 2си оңой жана аларды бир нече мүнөттүн ичинде бөлүп алууга болот. Үчүнчүсү, 4x4 LED матрицасы, өткөргүч зымдардын эсебинен көбүрөөк убакытты жана ойлонууну талап кылат. Бөлүктөрдүн тизмеси Проект 1: '2 Wire' bargraph LED дисплей контроллери 1 * 74HC164 Shift register1 * solderless breadboard1 * arduino, же arduino шайкеш (5v) 1 * 330 ом 1/4 ватт каршылыгы 8 * нормалдуу чыгаруу кызыл LEDдын 12 * секирүүчү зымдары Долбоор 2: '2 Wire' 7 сегменттин дисплей контроллери 1 * 74HC164 Shift register1 * solderless breadboard1 * arduino же arduino туура келет (5v) 1 * 330 ом 1/4 ватт каршылыгы 1 * жалпы катод жети сегменттүү дисплей 9 * секиргич зымдар Долбоор 3: '2 Wire' 4x4 алып келген матрицалык дисплей 1 * 74HC164 Shift register1 * arduino, же arduino туура келген (5v) 4 * 150 ohm 1 1/4 ватт резистор 8 * 1Kohm 1/8 ватт резистор (же чоңураак) 8 * NpN транзистору (2n3904 же андан жакшы) 16 * кадимки кызыл кызыл LED аны куруунун каражаты жана 160 вольтту башкара ала турган 5 вольттуу кубаттуулукка ээ (сиз тормоздук свет сыяктуу бардык светодиоддорду бир убакта күйгүзүү)

4 -кадам: Долбоор 1 [pt 1]: '2 Wire' Bargraph LED Display Controller Hardware

1 -долбоор [pt 1]: '2 Wire' Bargraph LED Display Controller Hardware
1 -долбоор [pt 1]: '2 Wire' Bargraph LED Display Controller Hardware
1 -долбоор [pt 1]: '2 Wire' Bargraph LED Display Controller Hardware
1 -долбоор [pt 1]: '2 Wire' Bargraph LED Display Controller Hardware

Схемага ылайык arduino жана нөөмөттүн регистрин илип коюңуз, менде панельде колдонууга даяр 10 сегменттүү bargraph дисплейи бар жана муну сиз сүрөттө көрөсүз, бирок сиз жеке эле LEDлер менен жасай аласыз Экинчи бетте Мен булар драйвердик түзүлүштөр эмес экенин, логикалык түзүлүштөр экенин, анча чоң эмес токтун алар аркылуу өтө тургандыгын айттым. 8 диодду иштетүү үчүн, схеманы жөнөкөй кармап, нөөмөт реестрин бышырбоо үчүн, токту бир аз чектөөнү талап кылабыз. Алар 330 Омдук резистор аркылуу өтүшү керек, бардык светодиоддор 10мага чейин колдоно турган токтун жалпы көлөмүн чектешет (5 вольтто). Бул мисал, светодиоддорду өз убагында иштетүү үчүн, транзисторду киргизүү керек болот, анда сменалык регистр жогорку токтун булагын күйгүзүп / өчүрө алат (3 -долбоорду караңыз) Сменалык регистрдин маалымат пини (пин 2) керек Ардуино санариптик PIN # 2ге туташуу үчүн нөөмөт регистринин саат пини (пин 8) arduino санариптик пин # 3 менен туташуусу керек

5 -кадам: 1 -долбоор [pt 2]: '2 Wire' Bargraph LED Display Controller программасы

1 -долбоор [pt 2]: '2 Wire' Bargraph LED Display Controller программасы
1 -долбоор [pt 2]: '2 Wire' Bargraph LED Display Controller программасы
1 -долбоор [pt 2]: '2 Wire' Bargraph LED Display Controller программасы
1 -долбоор [pt 2]: '2 Wire' Bargraph LED Display Controller программасы

Мисал 1: "_164_bas_ex.pde" файлын ачыңыз arduino IDE ичинде, Анын жөнөкөй эскизи, дисплейде LEDди күйгүзүүгө же өчүрүүгө мүмкүндүк берет. Биринчи 2 сап биз маалымат жана саат үчүн колдоно турган пин номерлерин аныктайт. const бүтүн сандарына караганда #define колдонуңуз, мен аны эстөөнү оңой табам жана бирде бирөөнүн эч кандай артыкчылыгы жок #define data 2 #аныктоо сааты 3 кийинки боштукту орнотуу функциясы, ал бир гана жолу иштейт, ошондуктан arduino айланат күйгүзүп, нөөмөт реестрин орнотот жана башка кылаарга иши жок. Боштукту орнотуу функциясынын ичинде биз саатты жана маалымат төөнөгүчтөрүн OUTPUT казыктары кылып коебуз, андан кийин shiftOut функциясын колдонуп, маалыматтарды нөөмөт регистрине боштукту орнотууга жөнөтөбүз () {pinMode (clock, OUTPUT); // саат пинин чыгаруу pinMode (маалыматтар, ЧЫГУУ) кылуу; // маалымат пинин чыгаруу shiftOut кыл (маалыматтар, саат, LSBFIRST, B10101010); // бул бинардык маанини нөөмөт реестрине жөнөтүү} shiftOut функциясында анын аргументтерин көрө аласыз: маалыматтар - бул пин, саат - LSBFIRST экилик нотада (Bxxxxxxxx) жазууда, анын кандай тартипте экенин билдирет В өткөн элемент - бул эң аз Белгилүү Бит Биринчиден, бул биринчи жолу берилет, андыктан ал 8 битти кошкондон кийин акыркы өндүрүштө бүтөт10101010 - бул сменалык реестрге жөнөтүлүүчү бинардык маани жана ал ар бир так жарык күйгүзүлөт, ар кандай үлгүлөрдү күйгүзүү же өчүрүү үчүн ар кандай баалуулуктар менен ойноп көрүңүз жана акыры бош боштуктун цикли (анткени сиз аны колдонбосоңуз дагы сизге керек) void loop () {} // бош цикл азыр 2 -мисал: биринчи 8 сап биринчи мисалдын биринчи 8 сабы сыяктуу эле, чындыгында алар башка долбоорлордун эч биринде өзгөрбөйт, андыктан #define data 2 #clock 3void setup () {pinMode (clock, OUTPUT); // саат пинин чыгаруу pinMode (маалыматтар, ЧЫГУУ) кылуу; // маалыматтарды пин чыгаруу үчүн чыгаруу Бирок азыр боштукту орнотууда циклдин 8 саны бар, ал бош байтты алат жана 1 битти эң сол жактагыдан баштап оңго жылат. Бул эң биринчи биттен башталган жана сол жакта иштеген биринчи мисалдан артка, бирок MSBFIRSTтин жардамы менен жылдыруу функциясы берилиштерди туура жолдо жөнөтөт Ошондой эле биз for циклине кечигүүнү кошобуз, ошондуктан ал көрүнүү үчүн жетишерлик жайлайт. for (int i = 0; i <8; ++ i) // for 0 - 7 do {shiftOut (маалыматтар, саат, MSBFIRST, 1 << i); // бит логикалык жогорку (1) маанини i кечиктирүү менен которуу (100); // кечигүү 100 мс, же сиз аны көрө албай каласыз}} void loop () {} // бош цикл азырынча сценарийди жүктөп бериңиз, эми сиз барграфты ар бир жарыкта бирден жарык кылганын көрүшүңүз керек

6 -кадам: Долбоор 2: '2 Wire' 7 Segment Display Controller

Долбоор 2: '2 Wire' 7 Segment Display Controller
Долбоор 2: '2 Wire' 7 Segment Display Controller
Долбоор 2: '2 Wire' 7 Segment Display Controller
Долбоор 2: '2 Wire' 7 Segment Display Controller

7 сегменттүү дисплейиңиздин чокусун караңыз (менде эки гана бар болчу, бирок жарымын гана колдонуп жатам) жана төмөндөгү чиймени колдонуп, ар бир сегменттин сменалык регистрдеги туура битке туташуусу үчүн 1 бит = пин 3 бит 2 = пин 4 бит 3 = пин 5 бит 4 = пин 6bit 5 = pin 10bit 6 = pin 11bit 7 = pin 12bit 8 = pin 13 (эгерде ондук чекитти колдонууну кааласаңыз) Жана дисплейдин катоду 330ohm резистор аркылуу жана электр менен камсыздоо үчүн жерди ачыңыз seven_seg_demo.pde arduino IDEдеБиринчиден, биз маалыматтарды жана саат казыктарын кайдан аныктап жатканыбызды көрөбүз #маалыматтарды аныктоо 2 #саатты аныктоо 3 Кийинкиде биз бардык харатер үлгүлөрүн экиликке орнотконбуз, бул абдан оңой, төмөнкү чиймеге караңыз, эгер сизге орто сегмент керек болсо бирин териңиз, андан кийин сизге эң жогорку сегмент керекпи, эгер башкасын киргизиңиз, муну 8 сегменттин баарын жаап бүтмөйүнчө улантыңыз, менин оң жагымдагы битти байкап көрүңүз (бит 8) дайыма 0, ошондуктан мен ондукту эч качан күйгүзбөйм чекит. байт нөл = B01111110; байт бир = B00000110; байт эки = B11011010; байт үч = B11010110; байт төрт = B10100110; байт беш = B11110100; байт алты = B11111100; байт жети = B01000110; байт сегиз = B11111111; байт сегиз = B11111110; Кийинчерээк жараксыз орнотууда биз маалыматтарыбызды жана сааттардын түйүндөрүн void setup () {pinMode (clock, OUTPUT); // саат пинин чыгаруу pinMode (маалыматтар, ЧЫГУУ) кылуу; // маалымат пинин чыгаруу3}, андан кийин боштук циклинде биз shiftOut колдонуп, ар бир үлгү (сан) көрсөтүү үчүн секундуна 1/2 күтө турабыз жана 0дон 9га чейинкисин көрсөтөбүз, анткени ал боштук цикл функциясында аткарылгандыктан, ал эсепке алынат. 0-9 жана түбөлүк кайталанат. void loop () {shiftOut (маалымат, саат, LSBFIRST, нөл); кечигүү (500); shiftOut (маалыматтар, саат, LSBFIRST, бир); кечигүү (500); shiftOut (маалыматтар, саат, LSBFIRST, эки); кечигүү (500); shiftOut (маалыматтар, саат, LSBFIRST, үч); кечигүү (500); shiftOut (маалыматтар, саат, LSBFIRST, төрт); кечигүү (500); shiftOut (маалыматтар, саат, LSBFIRST, беш); кечигүү (500); shiftOut (маалыматтар, саат, LSBFIRST, алты); кечигүү (500); shiftOut (маалыматтар, саат, LSBFIRST, жети); кечигүү (500); shiftOut (маалыматтар, саат, LSBFIRST, сегиз); кечигүү (500); shiftOut (маалыматтар, саат, LSBFIRST, тогуз); кечигүү (500);}

7 -кадам: Долбоор 3 [pt 1]: '2 Wire' 4x4 Led Matrix Display

Долбоор 3 [pt 1]: '2 Wire' 4x4 Led Matrix Display
Долбоор 3 [pt 1]: '2 Wire' 4x4 Led Matrix Display
Долбоор 3 [pt 1]: '2 Wire' 4x4 Led Matrix Display
Долбоор 3 [pt 1]: '2 Wire' 4x4 Led Matrix Display

4x4 LED матрицасынын долбоору бир аз татаалыраак, бирок ал дээрлик баардык курулушта, мен шахтаны перфорборго ширетүүнү туура көрөм, бирок аны нан тактасында копировать кылуу керек. Сменалык реестр түзмөктү башкарбай турганы менен айырмаланат, тескерисинче нөөмөт регистринин чыгымдары 1Kohm резистору аркылуу NpN транзисторунун базасына жөнөтүлөт, биттин чыгышы жогору болгондо, ал жетиштүү токту жана чыңалууну өткөргүчкө өткөрөт. транзистор коллектор менен эмиттердин ортосундагы байланышты которуштуруу үчүн, коллекторлор "бекем" жөнгө салынган 5 вольтко байланган. Транзисторлордун эмитенттери 150 омдук резисторлорго туташтырылган жана резисторлор 4 леддин анноддоруна байланган жана катарды 20мага чейин чектейт, бирок дисплейде сүрөттөрдү тартууда бир убакта бир гана LED күйүп турат, демек толук жарыктыкка жакын (анткени алар бүт сүрөттү түзүү үчүн чындап тез күйүп жана өчөт) 4 катар жана 4 бар мамычалар, ар бири катар резистор менен транзисторду алат, ар бир мамычада LEDдин катоддору байланган, транзистордун коллекторуна кирип кеткен, анын базасы нөөмөт реестри тарабынан көзөмөлдөнөт жана акыры жерге түшөт. Схемалык чоң версия www.instructables.com/files/orig/F7J/52X0/G1ZGOSRQ/F7J52X0G1ZGOSRQ.jpg

8 -кадам: Долбоор 3 [pt 2]: '2 Wire' 4x4 Led Matrix Display

Долбоор 3 [pt 2]: '2 Wire' 4x4 Led Matrix Display
Долбоор 3 [pt 2]: '2 Wire' 4x4 Led Matrix Display
Долбоор 3 [pt 2]: '2 Wire' 4x4 Led Matrix Display
Долбоор 3 [pt 2]: '2 Wire' 4x4 Led Matrix Display
Долбоор 3 [pt 2]: '2 Wire' 4x4 Led Matrix Display
Долбоор 3 [pt 2]: '2 Wire' 4x4 Led Matrix Display

Смена реестри LEDдын анодун жана катоддорун YX форматында көзөмөлдөйт, төмөндөгү битти караңыз 1 = мамыча 1 (эң оң жакта) бит 2 = мамыча 2 бит 3 = мамыча 3 бит 4 = мамы 4bit 5 = катар 1 (эң үстүкү) бит 6 = 2bit 7 = 3bit 8 = 4 катар 4 Сүрөттү жасоо үчүн графикалык кагазга 4х4 квадрат чийип, кайсынысын көрсөтүүнү кааласаңыз, андан кийин YX таблицасын түзүңүз. Төмөндө сиз окшоштуктун картасын көрөсүз, ошондой эле эң мыктысы 4х4 "пикселдерде" жасай алат, ар бир бөлүмгө толтуруу үчүн, ал кайсы тилкеде (Y), андан кийин кайсы катарда (X) бар экенин жазам _4x4.pde файлы arduino IDEде сиз биздин эски 2 досубузду көрөсүз #дайындарды аныктоо 2 #саатты аныктоо 3 анда int img = {1, 1, 4, 1, 1, 3, 4, 3, 2, 4, 3, 4}; Эгерде сиз менин YX координаттарымдын тизмесин карап көрсөңүз, анда бул баалуулуктарды колго айландыруу чоң азап болмок жана бизде компьютер бар … муну жасоого уруксат бериңиз! биздин саат жана маалымат казыктары OUTPUTS void setup () {pinMode (clock, OUTPUT); // саат пинин чыгаруу pinMode (маалыматтар, ЧЫГУУ) кылуу; // маалымат пинин чыгаруу3 int X; байт чыгаруу; Андан кийин for цикли, бул цикл img массивиндеги жазуулардын суммасына чейин болушу керек, бул сүрөттө мен 6 пикселди гана колдонгонмун, бул 12 YX координатын түзөт. Мен i += 2 аркылуу башка номерлерди өткөрүп жиберем, анткени биз бир цикл үчүн 2 координатты окуйбуз (int i = 0; i <12; i += 2) // img массивиндеги пункттардын саны, бул учурда 12 {Эми биз Y enteryны массивдеги ден окуйбуз жана анын маанисинен бирди алып таштайбыз, анткени байттар бирден башталбайт, алар нөлдөн башталат, бирок биз 1ден санадык // YX шнурунун биринчи түгөйүн алабыз Y = (img - 1); // битти эсептөө 0дөн башталгандан бери бирди алып салгыла Кийинки биз массивдеги [i + 1] боюнча X enteryди окуйбуз жана анын маанисинен бирди алып салабыз, себеби X = (img [i + 1] - 1); Биз пикселдин YX баалуулуктарына ээ болгондон кийин, биз кичине же математиканы жана солго жылууну жасайбыз. Биринчиден, биз X маанисин окушубуз керек, жана анын мааниси кандай болсо да, аны көп жерлерге + 4 калтырды, эгерде X 4 болсо жана 4тү кошуңуз, ал 8 -бит (MSB), диаграмманы кайра карап … бит 1 = 1 -колонна (эң оң жактагы) бит 2 = мамыча 2 бит 3 = мамыча 3 бит 4 = мамы 4bit 5 = катар 1 (эң үстү) бит 6 = катар 2 бит 7 = катар 3bit 8 = катар 4Bit 8 акыркы катар Кийинки Y мааниси да солго жылат, бул жолу эч нерсе кошулбайт. Акырында экөө 2 жарым байттын ордуна 1 байтка бириктирилет. (nibbles), bitwise же (символ |) менен эки байтты алат жана аларды негизинен кошот, X = 10000000Y = 00000001 -------------------- ЖЕ = 10000001row 4 мамыча 1 чыгып = 1 << (X + 4) | 1 << Y; Акыры shiftOut учурдагы сүрөттү көрсөтүү үчүн, жана бизде массивде маалымат жок болгонго чейин муну уланта бериңиз … биз маалыматты солго жылдырып жаткандыктан, MSB акыркы чыгаруу пининде болушу керек болгондуктан, бир көз ирмемди кечиктирип, түбөлүккө айландырыңыз. аны биринчи кезекте нөөмөт реестри жөнөтөт. shiftOut (маалыматтар, саат, MSBFIRST, сыртка); // байтты биздин реестрдин кечигүүсүнө жылдыруу (1); // аны кечиктирип коюңуз, ошондо ал сиздин көзүңүзгө жарык так калтырууга мүмкүнчүлүгү бар. Өзүңүздүн сүрөттөрүңүздү жана эффекттериңизди тартынбаңыз, 3 үлгүдөгү файлдар, смайлик жана шахмат тактасы бар (ал сызыктарга окшош), жана акыры кокусунан жаркырап чыгаруучу

9 -кадам: Жыйынтык

Жыйынтык
Жыйынтык
Жыйынтык
Жыйынтык
Жыйынтык
Жыйынтык

Мунун баары абдан ыңгайлуу кичинекей чип, жана мен аны таштандыга кеткен электрониканын эски бөлүгүнөн алып салганыма кубанычтамын, аны дисплей системасынан башка нерселер үчүн колдонсо болот, бирок баарына жарыктар жана көрүүнүн заматта айтылган пикири жагат. эмне болуп жатат, мен сыяктуу визуалдык ойчулдар үчүн абдан пайдалуу. Ошондой эле, менин кодумду кечирип коюңуз, менде октябрдын үчүнчү жумасынан бери гана arduino болгон жана ал абдан чоң кыйроо курсу болгон. Бирок бул система жөнүндө эң сонун нерсе, эгер сиз отуруп, аны менен иштесеңиз, анда дүйнөнү 8 биттик микроконтроллер менен башкарууга жардам берген тыкан өзгөчөлүктөр толтура. окуу, мен көп нерсени үйрөндүм деп үмүттөнөм

Сунушталууда: