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

64 пиксел RGB LED дэлгэц - Өөр нэг Arduino клон: 12 алхам (зурагтай)
64 пиксел RGB LED дэлгэц - Өөр нэг Arduino клон: 12 алхам (зурагтай)

Видео: 64 пиксел RGB LED дэлгэц - Өөр нэг Arduino клон: 12 алхам (зурагтай)

Видео: 64 пиксел RGB LED дэлгэц - Өөр нэг Arduino клон: 12 алхам (зурагтай)
Видео: P2 Blynk NodeMCU - The Code - PSU Series (Subtittled) 2024, Арваннэгдүгээр
Anonim
64 пиксел RGB LED дэлгэц - Өөр нэг Arduino клон
64 пиксел RGB LED дэлгэц - Өөр нэг Arduino клон
64 пиксел RGB LED дэлгэц - Өөр нэг Arduino клон
64 пиксел RGB LED дэлгэц - Өөр нэг Arduino клон
64 пиксел RGB LED дэлгэц - Өөр нэг Arduino клон
64 пиксел RGB LED дэлгэц - Өөр нэг Arduino клон

Энэхүү дэлгэц нь 8x8 RGB LED матриц дээр суурилсан болно. Туршилтын зорилгоор 4 ээлжийн бүртгэлийг ашиглан стандарт Arduino самбар (Diecimila) -тай холбосон. Үүнийг ажилдаа орсны дараа би үүнийг PCB дээр суулгасан. Шилжүүлэгч регистрүүд нь 8 битийн өргөнтэй бөгөөд SPI протоколтой хялбархан холбогддог. Импульсийн өргөн модуляцийг өнгийг холиход ашигладаг бөгөөд дараа нь энэ талаар дэлгэрэнгүй ярих болно. MCU -ийн RAM -ийн нэг хэсгийг дүрсийг хадгалах хүрээ бэхэлгээ болгон ашигладаг. Видео RAM -ийг цаана нь тасалдах горимоор задалдаг тул хэрэглэгч компьютертэй ярилцах, товчлуур унших, потенциометр гэх мэт бусад хэрэгтэй зүйлсийг хийх боломжтой. "Arduino" тухай дэлгэрэнгүй мэдээлэл: www.arduino.cc

Алхам 1: Өнгийг холих импульсийн өргөний модуляци

Өнгийг холих импульсийн өргөний модуляци
Өнгийг холих импульсийн өргөний модуляци

Импульсийн өргөний модуляци нь үндсэндээ цахилгаан төхөөрөмжид өгдөг хүчийг хурдан асааж, унтраах явдал юм. Ашиглах хүч нь нэг хугацааны интервалд авсан квадрат долгионы функцийн математик дундажаас хамаарна. Функц ON байрлалд удаан байх тусам илүү их хүч авах болно. ХОУХН нь LED -ийн гэрэлтүүлэгт хувьсах гүйдлийн гэрлийг бууруулдагтай адил нөлөө үзүүлдэг. Дараагийн үүрэг бол 64 RGB LED -ийн (= 192 дан LED) гэрэлтүүлгийг тус тусад нь хямд, хялбар аргаар хянах явдал юм. өнгөний спектр. Гялалзсан болон бусад сэтгэл түгшээсэн нөлөө үзүүлэхгүй байх нь дээр. Хүний нүдэнд үзүүлж буй гэрэл гэгээгийн шугаман бус ойлголтыг энд харгалзахгүй (жишээ нь, 10% -20% -ийн тод байдлын ялгаа нь 90% -иас 100% -аас "том" мэт санагддаг). ХОУХ -ны алгоритм. LED -ийн тод байдлын хувьд кодыг 7 гэсэн утгатай гэж хэлээрэй (0, 0). Цаашилбал, гэрэлтүүлгийн хувьд хамгийн ихдээ N алхам байдаг гэдгийг мэддэг. Код нь бүх гэрэлтүүлгийн түвшний N гогцоог ажиллуулж, бүх эгнээнд LED тус бүрийг ажиллуулахад шаардлагатай бүх гогцоонуудыг ажиллуулдаг. Гэрэл гэгээ дэх x давталтын тоолуур 7 -оос бага байвал LED асаалттай байна. Хэрэв энэ нь 7 -оос их бол LED унтрах болно. Үүнийг бүх LED, тод байдлын түвшин, үндсэн өнгө (RGB) -ийн хувьд маш хурдан хийдэг тул LED тус бүрийг хүссэн өнгөөр нь тохируулах боломжтой. Үлдсэн хэсгийг PC -тэй цуваа холбоо барих, товчлуур унших, RFID уншигчтай ярилцах, I илгээхэд ашиглаж болно2C модулийг бусад модульд…

Алхам 2: Shift регистр болон LED -тэй ярилцах

Shift регистр болон LED -тэй ярилцаж байна
Shift регистр болон LED -тэй ярилцаж байна
Shift регистр болон LED -тэй ярилцаж байна
Shift регистр болон LED -тэй ярилцаж байна

Шилжүүлэлтийн бүртгэл нь өгөгдлийг цуваагаар ачаалах, зэрэгцээ гаралт хийх боломжтой төхөөрөмж юм. Эсрэг үйлдлийг зохих чип ашиглан хийх боломжтой бөгөөд arduino вэбсайт дээр ээлжийн бүртгэлийн талаар сайн заавар байдаг бөгөөд LED нь 74HC595 төрлийн 8 битийн ээлжийн бүртгэлээр удирддаг. Порт бүр ойролцоогоор 25 мА гүйдлийн эх үүсвэр эсвэл живэх боломжтой. Нэг чип тутамд живсэн эсвэл эх үүсвэрийн нийт гүйдэл 70 мА -аас хэтрэхгүй байх ёстой. Эдгээр чипс нь маш хямд тул нэг ширхэг тутамд 40 центээс илүү төлж болохгүй. LED нь экспоненциал гүйдэл / хүчдэлийн шинж чанартай байдаг тул гүйдлийн хязгаарлагч резистор байх шаардлагатай. Омын хуулийг ашиглах: R = (V - Vf) / IR = хязгаарлах эсэргүүцэл, V = 5V, Vf = LED -ийн урагшлах хүчдэл, I = хүссэн гүйдэл ойролцоогоор 1.8V урагш хүчдэлтэй, 2.5V -аас 3.5V хүртэл цэнхэр, ногоон өнгөтэй байна. Үүнийг тодорхойлохын тулд энгийн мултиметр ашиглаарай. Өнгийг зөв зохистой үйлдвэрлэхийн тулд хүний нүдний спектрийн мэдрэмж (улаан/цэнхэр: муу, ногоон: сайн), тодорхой долгионы урт ба гүйдлийн LED -ийн үр ашиг зэргийг анхаарч үзэх хэрэгтэй. Практик дээр 3 потенциометрийг авч, LED нь зохих цагаан гэрлийг харуулах хүртэл тохируулдаг. Мэдээжийн хэрэг LED гүйдлийн хамгийн дээд хэмжээнээс хэтэрч болохгүй. Энд бас чухал зүйл бол эгнээ жолоодож буй ээлжийн бүртгэл нь 3x8 LED -ээр гүйдэл өгөх ёстой тул гүйдлийг хэт өндөр түлхэхгүй байх нь дээр. Би бүх LED -ийн 270Ohm эсэргүүцэлийг амжилттай ашиглаж чадсан боловч энэ нь мэдээжийн хэрэг LED матрицын бүтцээс хамаарна. SPI = Цуваа захын интерфэйс (Зураг (1)). Компьютер дээрх цуваа портуудаас ялгаатай нь (асинхрон, цагийн дохиогүй) SPI -д цагийн шугам хэрэгтэй (SRCLK). Дараа нь өгөгдөл хүчин төгөлдөр болох үед төхөөрөмжийг хэлдэг дохионы шугам байдаг (чип сонгох / түгжээ / RCLK). Эцэст нь хоёр өгөгдлийн шугам байдаг бөгөөд нэгийг нь MOSI (master out to slave in), нөгөөхийг нь MISO (slave out дахь мастер) гэж нэрлэдэг. SPI нь яг л над шиг нэгдсэн хэлхээг холбоход хэрэглэгддэг2C. Энэ төсөлд MOSI, SRCLK, RCLK хэрэгтэй. Үүнээс гадна идэвхжүүлэх шугамыг (G) бас ашигладаг. RCLK шугамыг LOW руу татах замаар SPI мөчлөгийг эхлүүлнэ (Зураг (2)). MCU нь өгөгдлөө MOSI шугам дээр илгээдэг. Үүний логик төлөвийг SRCLK шугамын өсөн нэмэгдэж буй ирмэг дэх ээлжийн бүртгэлээр түүвэрлэв. RCLK шугамыг HIGH руу буцааж татах замаар мөчлөг дуусгавар болно. Одоо өгөгдлийг гаралт дээр авах боломжтой.

Алхам 3: Схем

Схем
Схем
Схем
Схем

Зураг (1) нь ээлжийн регистрүүд хэрхэн утастай болохыг харуулж байна. Тэд гинжлэгдсэн байдаг тул өгөгдлийг энэ сүлжээнд шилжүүлэх боломжтой. Тиймээс ээлжийн бүртгэл нэмж оруулах нь хялбар байдаг.

Зураг (2) нь MCU, холбогч, кварцын бусад схемийг харуулав … Хавсаргасан PDF файл нь хэвлэхэд хамгийн тохиромжтой бүх бүтээлийг агуулдаг.

Алхам 4: C ++ эх код

C ++ эх код
C ++ эх код
C ++ эх код
C ++ эх код
C ++ эх код
C ++ эх код

C/C ++ дээр ихэвчлэн функцийг кодлохоос өмнө прототип хийх шаардлагатай байдаг.#Int int (void); void do_something (void); int main (void) {do_something ();} void do_something (void) {/ * comment */оруулах } Arduino IDE нь энэ алхамыг шаарддаггүй, учир нь функцын прототипийг автоматаар үүсгэдэг. Тиймээс функцын прототипүүд энд үзүүлсэн кодонд харагдахгүй болно. таймер1 халих тасалдал. Эхлэгчдэд бага зэрэг нууцлаг харагддаг кодын хэсэг while (! (SPSR & (1 << SPIF)))}} MCU -ийн бүртгэлийг шууд ашигладаг. Энэ жишээ нь: "SPSR-ийн бүртгэл дэх SPIF-битийг тохируулаагүй байхад юу ч хийх ёсгүй". Стандарт төслүүдийн хувьд техник хангамжтай маш нягт холбоотой эдгээр асуудлыг шийдвэрлэх шаардлагагүй гэдгийг би онцлон хэлмээр байна. Эхлэгч нар үүнээс айх ёсгүй.

Алхам 5: Гаджет дууссан

Гаджет дууссан
Гаджет дууссан
Гаджет дууссан
Гаджет дууссан
Гаджет дууссан
Гаджет дууссан

Бүх асуудлыг шийдэж, кодыг ажиллуулсны дараа би ПХБ -ийн зохион байгуулалт хийж, гайхалтай байшин руу илгээх шаардлагатай болсон. Энэ нь илүү цэвэрхэн харагдаж байна:-) Зураг (1): бүрэн хүн амтай хянагчийн самбар Зураг (2): нүцгэн PCB-ийн урд тал Зураг (2): ар талд ATmega168/328 чип болон 5V/GND-ийн PORTC ба PORTD-ийг салгадаг холбогчууд байдаг.. Эдгээр портууд нь цуваа RX, TX шугам, I -ийг агуулдаг2C шугам, дижитал I/O шугам ба 7 ADC шугам. Энэ нь самбарын ар талд бамбай тавих зориулалттай. Зай нь perfboard (0.1in) ашиглахад тохиромжтой. Ачаалагчийг ICSP толгой ашиглан анивчих боломжтой (adafruit's USBtinyISP дээр ажилладаг). Үүнийг хиймэгц стандарт FTDI USB/TTL цуваа адаптер эсвэл үүнтэй төстэй зүйлийг ашиглаарай. Би мөн автоматаар дахин тохируулах-идэвхгүй болгох холбогчийг нэмсэн. Би мөн бага зэрэг Perl скрипт хийсэн (миний блогийг үзнэ үү), энэ нь ихэвчлэн хайрцагнаас гардаггүй FTDI кабелиар автоматаар тохируулах боломжийг олгодог (RTS ба DTR шугам). Энэ нь Linux дээр, магадгүй MAC дээр ажилладаг. Хэвлэгдсэн хэлхээний самбар болон цөөн хэдэн DIY иж бүрдэл миний блог дээр байдаг. SMD гагнуур хийх шаардлагатай байна! LED матрицын барилгын заавар, эх сурвалжийг PDF файлуудаас үзнэ үү.

Алхам 6: Програм: Perl ашиглан Линуксд зориулсан CPU -ийн ачааллын хяналт

Энэ бол түүхийн схем бүхий ачааллын хамгийн энгийн хяналт юм. Энэ нь iostat ашиглан 1 секунд тутамд системийн "ачааллын дундаж" -ийг цуглуулдаг Perl скрипт дээр үндэслэсэн болно. Мэдээлэл нь шинэчлэлт бүрт шилжих массивт хадгалагддаг. Жагсаалтын эхэнд шинэ өгөгдлийг нэмж оруулах бөгөөд хамгийн эртний оруулгыг хуулж авдаг. Илүү дэлгэрэнгүй мэдээлэл, татан авалтыг (код…) миний блог дээрээс авах боломжтой.

Алхам 7: Хэрэглээ: I²C ашиглан бусад модулиудтай ярилцах

Програм: I²C ашиглан бусад модулиудтай ярилцах
Програм: I²C ашиглан бусад модулиудтай ярилцах

Энэ бол зарчмын нотолгоо бөгөөд энэ ажлын хамгийн энгийн шийдэл биш юм2C нь 127 хүртэлх "боол" самбарыг шууд хаяглах боломжийг олгодог. Энд видеоны баруун талд байгаа самбар нь "мастер" (бүх дамжуулалтыг эхлүүлдэг), зүүн самбар нь боол (өгөгдөл хүлээж байгаа) юм. Би2C нь 2 дохионы шугам, ердийн цахилгаан шугам (+, -, SDA, SCL) хэрэгтэй. Энэ нь автобус учраас бүх төхөөрөмжүүд зэрэгцээ холбогдсон байдаг.

Алхам 8: Програм: "Game Cube":-)

Өргөдөл
Өргөдөл

Энэ бол танилцуулгын хуудсан дээр харуулсан модон хашлага юм. Энгийн тоглоом тоглоход ашиглаж болох 5 товчлууртай.

Алхам 9: Матриц дээрх дүрс / анимацийг харуулах - Quick Hack

Матриц дээрх дүрс / анимацийг харуулах - Quick Hack
Матриц дээрх дүрс / анимацийг харуулах - Quick Hack
Матриц дээрх дүрс / анимацийг харуулах - Quick Hack
Матриц дээрх дүрс / анимацийг харуулах - Quick Hack
Матриц дээрх дүрс / анимацийг харуулах - Quick Hack
Матриц дээрх дүрс / анимацийг харуулах - Quick Hack
Матриц дээрх дүрс / анимацийг харуулах - Quick Hack
Матриц дээрх дүрс / анимацийг харуулах - Quick Hack

Тиймээс энэ нь зөвхөн 8x8 пиксел, цөөн хэдэн өнгөний сонголттой бөгөөд эхлээд дуртай зургаа яг 8x8 пиксел болгон томруулж, ".ppm" түүхий форматаар хадгалах боломжтой (ASCII биш). PPM нь Perl скриптээр унших, боловсруулахад хялбар байдаг. ImageMagick болон "хөрвүүлэх" командын мөрийн хэрэгсэл зөв ажиллахгүй байна. Шинэ arduino кодыг байршуулаад дараа нь хянагч руу оруулахын тулд Perl скриптийг ашиглана уу. Гялалзсан гэрэл нь LED шинэчлэлт болон миний камерын хүрээний хурдтай таарахгүй байна. Кодыг жаахан шинэчилсний дараа энэ нь маш хурдан ажилладаг. Бүх зургийг цувралаар шууд дамжуулдаг бөгөөд илүү урт анимацийг гадаад EEPROM-д хадгалах боломжтой.

Алхам 10: Хадгалагдсан анимэйшнүүдийн интерактив хяналт

Ардуино тахин шүтэх нь зөвхөн физик тооцоолол, харилцан үйлчлэлд зориулагдсан тул потенциометр нэмж, хяналтаа аваарай! 8 аналог тоон хөрвүүлэгч оролтын аль нэгийг ашиглах нь үүнийг маш энгийн болгодог.

Алхам 11: Шууд видео үзүүлэх

Perl скрипт болон цөөн хэдэн модулийг ашиглах нь X11 систем дээр бараг шууд видеог үзүүлэхэд хялбар болгодог. Энэ нь линукс дээр кодлогдсон бөгөөд MAC дээр ажиллах боломжтой бөгөөд энэ нь дараах байдлаар ажилладаг:- хулганы курсорын байрлалыг авах- курсор дээр төвтэй NxN пикселийн хайрцгийг авах- зургийг 8х8 пиксел хүртэл авах- LED самбар руу илгээх- давтах

Алхам 12: Илүү гэрэл бараг үнэгүй

Илүү гэрэл бараг үнэгүй
Илүү гэрэл бараг үнэгүй

Зөвхөн хоёр алхамаар гэрэлтүүлгийг бага зэрэг нэмэгдүүлэх боломжтой. 270Ω резисторыг 169Ω -ээр сольж, 74HC595 ээлжийн өөр регистрийг IC5 дээр солино.

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