Агуулгын хүснэгт:
- Алхам 1: Өнгийг холих импульсийн өргөний модуляци
- Алхам 2: Shift регистр болон LED -тэй ярилцах
- Алхам 3: Схем
- Алхам 4: C ++ эх код
- Алхам 5: Гаджет дууссан
- Алхам 6: Програм: Perl ашиглан Линуксд зориулсан CPU -ийн ачааллын хяналт
- Алхам 7: Хэрэглээ: I²C ашиглан бусад модулиудтай ярилцах
- Алхам 8: Програм: "Game Cube":-)
- Алхам 9: Матриц дээрх дүрс / анимацийг харуулах - Quick Hack
- Алхам 10: Хадгалагдсан анимэйшнүүдийн интерактив хяналт
- Алхам 11: Шууд видео үзүүлэх
- Алхам 12: Илүү гэрэл бараг үнэгүй
Видео: 64 пиксел RGB LED дэлгэц - Өөр нэг Arduino клон: 12 алхам (зурагтай)
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:06
Энэхүү дэлгэц нь 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 -тэй ярилцах
Шилжүүлэлтийн бүртгэл нь өгөгдлийг цуваагаар ачаалах, зэрэгцээ гаралт хийх боломжтой төхөөрөмж юм. Эсрэг үйлдлийг зохих чип ашиглан хийх боломжтой бөгөөд 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 ++ дээр ихэвчлэн функцийг кодлохоос өмнө прототип хийх шаардлагатай байдаг.#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 ашиглан бусад модулиудтай ярилцах
Энэ бол зарчмын нотолгоо бөгөөд энэ ажлын хамгийн энгийн шийдэл биш юм2C нь 127 хүртэлх "боол" самбарыг шууд хаяглах боломжийг олгодог. Энд видеоны баруун талд байгаа самбар нь "мастер" (бүх дамжуулалтыг эхлүүлдэг), зүүн самбар нь боол (өгөгдөл хүлээж байгаа) юм. Би2C нь 2 дохионы шугам, ердийн цахилгаан шугам (+, -, SDA, SCL) хэрэгтэй. Энэ нь автобус учраас бүх төхөөрөмжүүд зэрэгцээ холбогдсон байдаг.
Алхам 8: Програм: "Game Cube":-)
Энэ бол танилцуулгын хуудсан дээр харуулсан модон хашлага юм. Энгийн тоглоом тоглоход ашиглаж болох 5 товчлууртай.
Алхам 9: Матриц дээрх дүрс / анимацийг харуулах - 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 дээр солино.
Зөвлөмж болгож буй:
UC -тай унтраах түгжээний хэлхээ. Нэг товчлуур. Нэг зүү. Тусдаа бүрэлдэхүүн хэсэг: 5 алхам
UC -тай унтраах түгжээний хэлхээ. Нэг товчлуур. Нэг зүү. Салангид бүрэлдэхүүн хэсэг: Сайн байцгаана уу, сүлжээнд асаах/унтраах хэлхээг хайж байсан. Миний олсон бүхэн миний хайж байсан зүйл биш байсан. Би өөртэйгөө ярьж байсан, үүнд хүрэх арга зам заавал байх ёстой. Энэ л надад хэрэгтэй байсан. -Асгах, унтраахад ганц товчлуур дарна. -Зөвхөн ашиглах ёстой
RGB LED пиксел сүүдэр: 17 алхам (зурагтай)
RGB LED пиксел сүүдэр: Сайн байцгаана уу, энэ зааварчилгаанд би танд LED пикселийн хос сүүдэр хэрхэн хийхийг зааж өгөх болно. Эхэндээ би эдгээрийг зул сарын баяр / шинэ жилээр байшингийн эргэн тойронд зөөврийн гоёл чимэглэл болгон өмсөх зорилгоор бүтээсэн боловч эцэст нь тэд арай илүү киберпанк болж хувирсан
Бүгдийг захирах нэг POV дэлгэц: 10 алхам (зурагтай)
Бүгдийг захирах нэг POV дэлгэц! Тэдгээрийг үзэх нь сонирхолтой төдийгүй тэдгээрийг хөгжүүлэх том сорилт юм. Энэ бол үнэхээр салбар дундын ажил юм. Танд маш их ур чадвар хэрэгтэй: механик, электроник, програмчлал
PIXELCADE - Нэгдсэн пиксел LED дэлгэц бүхий Mini Bartop аркад: 13 алхам (зурагтай)
PIXELCADE - Нэгдсэн пиксел LED дэлгэц бүхий мини бартоп аркада: **** нэгдсэн LED марктай сайжруулсан хувилбар **** энд сонгосон тоглоомтой нийцсэн нэгдсэн LED дэлгэцийн өвөрмөц онцлог бүхий бартоп аркад загвар. Засгийн газрын хажуугийн дүрүүдийн урлаг бол наалт биш лазераар хийсэн шигтгээ юм. Асар том
500 LED-пиксел RGB-тоосго: 9 алхам (зурагтай)
500 LED-пиксел RGB-тоосго: Хэсэг хугацааны өмнө би эдгээр WS2812 LED-ээр 10х10 хэмжээтэй LED-Coffetable бүтээсэн боловч хуучин сургуулийн тоглоом болох Могойг ухаалаг гар утсаараа тоглуулах боломжтой байсан ч би өөр зүйл хүсч байна. Онцгой. Тиймээс би үүнд ахиад хэдэн лед тавихаар шийдлээ, arra