Агуулгын хүснэгт:

74HC164 ээлжийн бүртгэл ба таны Arduino: 9 алхам
74HC164 ээлжийн бүртгэл ба таны Arduino: 9 алхам

Видео: 74HC164 ээлжийн бүртгэл ба таны Arduino: 9 алхам

Видео: 74HC164 ээлжийн бүртгэл ба таны Arduino: 9 алхам
Видео: LDmicro 18: GPS-будильник Ublox NEO-6M (программирование лестничной схемы ПЛК микроконтроллера с помощью LDmicro) 2024, Арванхоёрдугаар сар
Anonim
74HC164 ээлжийн бүртгэл ба таны Arduino
74HC164 ээлжийн бүртгэл ба таны Arduino
74HC164 ээлжийн бүртгэл ба таны Arduino
74HC164 ээлжийн бүртгэл ба таны Arduino

Shift бүртгэл нь дижитал логикийн маш чухал хэсэг бөгөөд тэдгээр нь зэрэгцээ ба цуваа ертөнцийн хооронд цавуу болж ажилладаг. Тэд утасны тоо, зүү ашиглалтыг багасгаж, өгөгдлөө хадгалах боломжтой бөгөөд өөр өөр хэмжээтэй, өөр өөр зориулалттай, өөр өөр онцлогтой, өөр өөр шинж чанартай байдаг. Өнөөдөр миний хэлэлцэх зүйл бол 74HC164 8 бит, зэрэгцээ гарсан, түгжээгүй, ээлжийн бүртгэл юм. Яагаад? Нэгдүгээрт, энэ бол хамгийн энгийн ээлжийн бүртгэлүүдийн нэг бөгөөд үүнийг сурахад хялбар болгодог, гэхдээ энэ нь надад байсан цорын ганц тохиолдол байсан юм (хэхэ!), мөн дээжийн ноорог, удирдсан хэлхээг багтаасан arduino -той интерфэйс хий. Та бүхэнд таалагдана гэж найдаж байна!

Алхам 1: Тэгэхээр ээлжийн бүртгэл гэж юу вэ?

Тэгэхээр ээлжийн бүртгэл гэж юу вэ?
Тэгэхээр ээлжийн бүртгэл гэж юу вэ?

Өмнө дурьдсанчлан тэд өөр өөр амттай байдаг бөгөөд би 74HC164 8 битийн 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 битийн цуваа хүртэл зэрэгцэн гарах боломжтой бөгөөд энэ нь таны arduino өгөгдлийг цуваагаар (импульсыг ээлжлэн унтраах) илгээдэг бөгөөд ээлжийн бүртгэл бүрийг зөв гаралтын зүү дээр байрлуулдаг гэсэн үг юм. Энэ загварт зөвхөн 2 утсыг удирдах шаардлагатай байдаг тул та arduino дээр 2 дижитал тээглүүр ашиглаж, 2 -оос 8 хүртэлх дижитал гаралтыг салгаж болно, бусад загварууд нь цуваа гаралттай зэрэгцэн оршдог боловч тэд ижил зүйлийг хийдэг боловч arduino -ийн оролт юм. (жишээ нь NES тоглоомын самбар) түгжээгүй Энэ нь танд хэрэгтэй бол энэ чипний уналт байж магадгүй юм. Өгөгдөл ээлжийн бүртгэлд цуваагаар ороход энэ нь эхний гаралтын зүү дээр гарч ирдэг бөгөөд цагны импульс ороход эхний бит нь 1 газар шилжиж гаралт дээр гүйлгэх эффект үүсгэдэг, жишээлбэл 00000001 гаралт дээр гарч ирнэ. 10100100010000100000100000000100000001 Хэрэв та нэг цагийг хуваалцдаг бусад логик төхөөрөмжүүдтэй ярилцаж, үүнийг хүлээж байгаагүй бол энэ нь асуудал үүсгэж болзошгүй юм. Нэвтрүүлсэн ээлжийн бүртгэлүүд нь нэмэлт санах ойтой тул өгөгдлийг бүртгэлд оруулсны дараа та шилжүүлэгчийг эргүүлж, гаралтыг харуулах боломжтой боловч өөр утас, програм хангамж, дагаж мөрдөх зүйлсийг нэмж оруулах боломжтой болно. Бид LED дэлгэцийг хянаж байна, гүйлгэх нөлөө нь маш хурдан гарч ирдэг тул та үүнийг харахгүй болно (та чипийг анх асаахаас бусад тохиолдолд), байт ээлжийн бүртгэлд орсны дараа гүйлгэх шаардлагагүй болно Бид 7 удаа сегментийн график хэлбэрийг хянах болно., мөн энэ чип, програм хангамж бүхий 16LED 4x4 цэг матриц, arduino дээр зөвхөн 2 дижитал тээглүүр (+ цахилгаан ба газардуулга) ашигладаг.

Алхам 2: Үндсэн утас ба ажиллагаа

Үндсэн утас ба ашиглалт
Үндсэн утас ба ашиглалт
Үндсэн утас ба ашиглалт
Үндсэн утас ба ашиглалт

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

Алхам 3: Төслүүд

Төслүүд
Төслүүд

За, хангалттай лекц, онол, энэ чипээр хөгжилтэй зүйл хийцгээе! Энэхүү зааварчилгаанд туршиж үзэх 3 төсөл байгаа бөгөөд эхний 2 нь хялбар бөгөөд хэдхэн минутын дотор талхлах боломжтой. Гурав дахь нь 4х4 хэмжээтэй LED матриц нь цахилгаан утаснаас шалтгаалан бүтээхэд илүү их цаг хугацаа шаардагддаг. Төслийн 1: '2 утас' bargraph LED дэлгэц хянагч 1 * 74HC164 Shift бүртгэл1 * гагнуургүй талх 1 * arduino, эсвэл arduino нийцтэй (5v) 1 * 330 ом 1/4 ваттын эсэргүүцэл 8 * ердийн гаралтын улаан LED -ийн 12 * холбогч утас Төсөл 2: '2 Утас' 7 сегментийн дэлгэц хянагч 1 * 74HC164 ээлжийн бүртгэл1 * гагнуургүй талхны самбар1 * arduino, эсвэл arduino нийцтэй (5v) 1 * 330 ом 1/4 ваттын эсэргүүцэл 1 * нийтлэг катодын долоон сегмент дэлгэц 9 * холбогч утас Төсөл 3: '2 Утас' 4x4 LED матриц дэлгэц 1 * 74HC164 Shift бүртгэл1 * arduino, эсвэл arduino нийцтэй (5v) 4 * 150 ом 1 1/4 ваттын резистор 8 * 1Кохм 1/8 ваттын эсэргүүцэл (эсвэл түүнээс дээш) 8 * NpN транзистор (2n3904 ба түүнээс дээш) 16 * ердийн гаралтын улаан LED нь түүнийг бүтээх хэрэгсэл бөгөөд 160 вольтын хүчийг зохицуулж чадах 5 вольтын хүчийг зохицуулдаг. тоормосны гэрэл шиг бүх LED -ийг нэгэн зэрэг асаагаарай)

Алхам 4: Төсөл 1 [pt 1]: '2 утас' Bargraph LED дэлгэц хянагчийн техник хангамж

Төсөл 1 [pt 1]: '2 утас' Bargraph LED дэлгэц хянагчийн техник хангамж
Төсөл 1 [pt 1]: '2 утас' Bargraph LED дэлгэц хянагчийн техник хангамж
Төсөл 1 [pt 1]: '2 утас' Bargraph LED дэлгэц хянагчийн техник хангамж
Төсөл 1 [pt 1]: '2 утас' Bargraph LED дэлгэц хянагчийн техник хангамж

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

Алхам 5: Төсөл 1 [pt 2]: '2 утас' Bargraph LED дэлгэц хянагчийн програм хангамж

Төсөл 1 [pt 2]: '2 утас' Bargraph LED дэлгэц хянагчийн програм хангамж
Төсөл 1 [pt 2]: '2 утас' Bargraph LED дэлгэц хянагчийн програм хангамж
Төсөл 1 [pt 2]: '2 утас' Bargraph LED дэлгэц хянагчийн програм хангамж
Төсөл 1 [pt 2]: '2 утас' Bargraph LED дэлгэц хянагчийн програм хангамж

Жишээ 1: arduino IDE доторх "_164_bas_ex.pde" файлыг нээнэ үү. Энгийн ноорог нь танд дисплей дээрх LED -ийг асаах, унтраах боломжийг олгодог Эхний 2 мөр нь өгөгдөл, цагийг ашиглах зүү дугаарыг тодорхойлдог. const бүхэл тоон дээр #define ашиглаарай, үүнийг санах нь илүү хялбар байдаг бөгөөд нэг удаа эмхэтгэсэн нэгэнд нь давуу тал байхгүй #өгөгдлийг тодорхойлох 2 #цагийг тодорхойлох 3 дараа нь хоосон тохируулгын функц байдаг, энэ нь зөвхөн нэг удаа ажилладаг тул arduino эргэдэг. асаалттай, ээлжийн бүртгэлийг тохируулдаг бөгөөд өөр хийх зүйлгүй болно. Хоосон тохиргооны функц дотор бид цаг ба өгөгдлийн зүүг OUTPUT тээглүүр болгож, дараа нь shiftOut функцийг ашиглан өгөгдлийг ээлжийн бүртгэлийн хоосон тохиргоонд илгээдэг () {pinMode (цаг, OUTPUT); // цагийн зүүг гаралтын pinMode болгох (өгөгдөл, OUTPUT); // өгөгдлийн зүүг гаралтын shiftOut болгох (өгөгдөл, цаг, LSBFIRST, B10101010); // энэ хоёртын утгыг ээлжийн бүртгэл рүү илгээх} shiftOut функц дээр та өгөгдөл нь өгөгдлийн зүү, цаг бол цагны зүү болохыг LSBFIRST нь хоёртын тэмдэглэгээ (Bxxxxxxxx) дээр бичихдээ ямар дарааллыг харуулдаг болохыг харж болно. B -ийн өмнөх элемент нь хамгийн бага тэмдэглэгээ юм Нэгдүгээрт, энэ нь эхний ээлжинд тэжээгддэг тул бүх 8 битийг нийлүүлсний дараа хамгийн сүүлчийн гаралт дээр дууснаB10101010 бол ээлжийн бүртгэлд илгээгдэх хоёртын утга бөгөөд сондгой гэрэл бүрийг асаах болно., өөр өөр хэв маягийг асаах эсвэл унтраахын тулд өөр өөр утгатай тоглож үзээрэй, эцэст нь хоосон хоосон хүрд (учир нь үүнийг ашиглахгүй байсан ч танд хэрэгтэй) void loop () {} // хоосон гогцоо Жишээ 2: эхний 8 мөр нь Эхний жишээний эхний 8 мөртэй адил, үнэндээ бусад төслүүдийн хувьд тэдгээр нь өөрчлөгдөхгүй тул өгөгдлийг #тодорхойлох 2 #цагийг тодорхойлох 3void тохиргоо () {pinMode (цаг, OUTPUT); // цагийн зүүг гаралтын pinMode болгох (өгөгдөл, OUTPUT); // өгөгдлийн зүүг гаралт болгох Гэхдээ одоо хүчин төгөлдөр бус тохиргоонд 8 давталтын тоолуур байгаа бөгөөд энэ нь хоосон байт авч, 1 битийг хамгийн зүүнээс эхлээд баруун тийш шилжүүлж байна. Энэ нь эхний жишээнээс ухарсан зүйл бөгөөд бид хамгийн баруун тийш нь эхлүүлж, зүүн тийш нь ажиллуулж байсан боловч MSBFIRST -ийг ашиглан өгөгдлийг зөв замаар илгээдэг. Мөн бид for циклд хоцролтыг нэмж өгдөг бөгөөд энэ нь харагдахуйц байхаар удаашруулдаг. for (int i = 0; i <8; ++ i) // for 0 - 7 do {shiftOut (өгөгдөл, цаг, MSBFIRST, 1 << i); // bit логикийг дээд (1) утгыг i delay (100) -аар шилжүүлэх; // 100ms хоцрох, эс тэгвээс та үүнийг харах боломжгүй болно}} void loop () {} // хоосон гогцоо одоохондоо скриптийг байршуулж байгаа бөгөөд та одоо барграф гэрэл тус бүрийг нэг нэгээр нь гэрэлтүүлж байгааг харах ёстой.

Алхам 6: Төсөл 2: '2 утас' 7 сегментийн дэлгэц хянагч

Төсөл 2: '2 утас' 7 сегментийн дэлгэц хянагч
Төсөл 2: '2 утас' 7 сегментийн дэлгэц хянагч
Төсөл 2: '2 утас' 7 сегментийн дэлгэц хянагч
Төсөл 2: '2 утас' 7 сегментийн дэлгэц хянагч

7 сегментийн дэлгэцийнхээ үзүүрийг хараарай (надад зөвхөн хос дэлгэц байсан, гэхдээ талыг нь л ашигладаг), доорх зургийг ашиглан сегмент бүрийг ээлжийн регистрийн зөв бит рүү холбоно уу 1 = зүү 3 бит 2 = зүү 4 бит 3 = зүү 5 бит 4 = зүү 6 бит 5 = зүү 10 бит 6 = зүү 11 бит 7 = зүү 12 бит 8 = зүү 13 (хэрэв аравтын бутархай цэг ашиглахыг хүсвэл) 330 ом эсэргүүцэлээр дамжуулж дэлгэцийн катод болон цахилгаан хангамжийг эхлүүлэхийн тулд seven_seg_demo.pde arduino IDE -д эхлээд та өгөгдөл, цагны зүүг хаана тодорхойлохыг олж мэдэх болно #өгөгдлийг тодорхойлох 2 #цагийг тодорхойлох 3 Дараа нь бид дүрмийн бүх загварыг хоёртын хэлбэрээр тохируулдаг, энэ нь маш энгийн, хэрэв танд дунд хэсэг хэрэгтэй бол доорх зургийг үзнэ үү. нэгийг нь бичээрэй, дараа нь танд дээд сегмент хэрэгтэй болно, хэрэв өөр сегмент оруулбал 8 сегментийг хамрах хүртэл үүнийг үргэлжлүүлээрэй, миний хамгийн баруун талын бит (бит 8) үргэлж 0 байна, ингэснээр би хэзээ ч аравтын бутархайг асаадаггүй. цэг байт тэг = B01111110; нэг байт = B00000110; хоёр байт = B11011010; гурван байт = B11010110; дөрвөн байт = B10100110; таван байт = B11110100; байт зургаан = B11111100; байт долоон = B01000110; байт найман = B11111110; байт найман = B11111110; дараа нь хүчин төгөлдөр бус тохиргоо хийхдээ бид өгөгдөл, цагийн зүүгээ void setup () {pinMode (цаг, OUTPUT) гаралтанд тохируулдаг; // цагийн зүүг гаралтын pinMode болгох (өгөгдөл, OUTPUT); // өгөгдлийн зүүг гаралт болгоно} 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 утастай' 4x4 Led матрицын дэлгэц

Төсөл 3 [pt 1]: '2 утастай' 4x4 Led матрицын дэлгэц
Төсөл 3 [pt 1]: '2 утастай' 4x4 Led матрицын дэлгэц
Төсөл 3 [pt 1]: '2 утастай' 4x4 Led матрицын дэлгэц
Төсөл 3 [pt 1]: '2 утастай' 4x4 Led матрицын дэлгэц

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

Алхам 8: Төсөл 3 [pt 2]: '2 утастай' 4x4 Led матрицын дэлгэц

Төсөл 3 [pt 2]: '2 утастай' 4x4 Led матрицын дэлгэц
Төсөл 3 [pt 2]: '2 утастай' 4x4 Led матрицын дэлгэц
Төсөл 3 [pt 2]: '2 утас' 4x4 Led матрицын дэлгэц
Төсөл 3 [pt 2]: '2 утас' 4x4 Led матрицын дэлгэц
Төсөл 3 [pt 2]: '2 утастай' 4x4 Led матрицын дэлгэц
Төсөл 3 [pt 2]: '2 утастай' 4x4 Led матрицын дэлгэц

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

Алхам 9: Дүгнэлт

Дүгнэлт
Дүгнэлт
Дүгнэлт
Дүгнэлт
Дүгнэлт
Дүгнэлт

Энэ бүхэнд маш жижигхэн чип байгаа бөгөөд үүнийг хогийн сав руу оруулдаг хуучин электрон хэрэгслээс хог руу хаясандаа баяртай байна. Үүнийг дэлгэцийн системээс гадна бусад зүйлд ашиглаж болно, гэхдээ хүн бүхэн гэрэл, харах шуурхай санал хүсэлтийг сонсох дуртай. Юу болж байгаа нь I гэх мэт харааны сэтгэгчдэд маш их тустай. Мөн миний кодыг уучлаарай, би зөвхөн аравдугаар сарын гурав дахь долоо хоногоос эхлэн arduino -тай болсон бөгөөд энэ нь маш том ослын курс байсан. Гэхдээ энэ бол системийн хамгийн агуу зүйл юм, хэрэв та түүнтэй хамт суугаад ажиллавал 8 битийн микроконтроллер ашиглан дэлхийг удирдахад хялбар, цэвэрхэн онцлог шинж чанартай. Асуулт, сэтгэгдлийг хүлээж авахад үргэлж бэлэн байдаг. уншиж байна, та маш их зүйлийг сурсан гэж найдаж байна

Зөвлөмж болгож буй: