
Мазмұны:
- 1 -қадам: Түстерді араластыруға арналған импульстік ен модуляциясы
- 2 -қадам: Shift регистрлері мен светодиодтармен сөйлесу
- 3 -қадам: схемалық
- 4 -қадам: C ++ бастапқы коды
- 5 -қадам: Аяқталған гаджет
- 6 -қадам: Қолданба: Perl көмегімен Linux үшін CPU жүктеу мониторы
- 7 -қадам: Қолдану: I²C көмегімен басқа модульдермен сөйлесу
- 8-қадам: Қолданба: «Game Cube»:-)
- 9 -қадам: Матрицада кескіндерді / анимацияларды көрсету - Quick Hack
- 10 -қадам: Сақталған анимацияларды интерактивті басқару
- 11 -қадам: тікелей бейне көрсету
- 12 -қадам: Қосымша жарық дерлік ақысыз
2025 Автор: John Day | [email protected]. Соңғы өзгертілген: 2025-01-23 14:51
Бұл дисплей 8x8 RGB жарықдиодты матрицасына негізделген. Тексеру мақсатында ол 4 ауысымдық регистрлерді қолдана отырып, стандартты Arduino тақтасына (Diecimila) қосылды. Жұмысқа кіріскеннен кейін мен оны жалғанған ПХД -ға енгіздім. Ауысу регистрлерінің ені 8-разрядты және SPI протоколымен оңай байланысады. Түстерді араластыру үшін импульстік ен модуляциясы қолданылады, бұл туралы кейінірек. MCU жедел жадының бір бөлігі суретті ұстап тұру үшін кадрлық буфер ретінде қолданылады. Бейне ЖЖҚ фонда үзіліс тәртібімен талданады, сондықтан пайдаланушы компьютермен сөйлесу, батырмаларды оқу және потенциометр сияқты басқа пайдалы әрекеттерді жасай алады. «Arduino» туралы қосымша ақпарат: www.arduino.cc
1 -қадам: Түстерді араластыруға арналған импульстік ен модуляциясы
Импульстің ені модулі - бұл импульстің ені модуляциясы - бұл электр құрылғысына берілетін қуатты тез қосуға және өшіруге. Қолданылатын қуат бір период аралығында алынған шаршы толқындық функцияның математикалық орташа мәнінен туындайды. Функция ҚОСУ күйінде неғұрлым ұзақ тұрса, соғұрлым көп қуат аласыз. PWM светодиодтардың жарықтығына айнымалы шамдардағы диммер сияқты әсер етеді. Алда тұрған міндет - 64 RGB светодиодтарының жарықтылығын жеке бақылау (= 192 бір светодиодты! түстер спектрі. Ең дұрысы, жыпылықтау немесе басқа мазалайтын әсерлер болмауы керек. Бұл жерде адам көзі көрсететін жарықтылықтың сызықтық емес қабылдануы ескерілмейді (мысалы, 10% мен 20% арасындағы жарықтық 90% мен 100% арасындағы «үлкен» болып көрінеді). (1) сурет жұмыс принципін көрсетеді PWM алгоритмі. Жарық диодының жарықтығы үшін кодқа 7 мәні берілгенін айтыңыз (0, 0). Сонымен қатар, жарықтылықта максималды N қадамы бар екенін біледі. Код барлық жолдардағы жарық диодты жарықтандырудың барлық мүмкін болатын деңгейлері үшін N ілмектерін және барлық қажетті ілмектерді іске қосады. Жарықтық цикліндегі x циклінің есептегіші 7 -ден кіші болса, жарық диоды қосылады. Егер ол 7 -ден үлкен болса, жарық диоды өшеді. Бұл барлық жарық диодты жарықтылық деңгейлері мен негізгі түстер (RGB) үшін өте тез жасай отырып, әрбір жарықдиодты қажетті түсті көрсету үшін жеке реттеуге болады. Осциллограф көмегімен өлшеу көрсеткендей, дисплейдің жаңарту коды процессордың шамамен 50% уақытты алады. Қалғандарын компьютермен сериялық байланыс жасауға, түймелерді оқуға, RFID оқу құралымен сөйлесуге, I жіберуге пайдалануға болады2C модульдері басқа модульдерге…
2 -қадам: Shift регистрлері мен светодиодтармен сөйлесу
Ауысу регистрі - бұл деректерді тізбектей жүктеуге және параллель шығуға мүмкіндік беретін құрылғы. Сәйкес микросхемамен керісінше операция да мүмкін. Arduino веб-сайтында ауысымдық регистрлер туралы жақсы оқулық бар. Жарық диодтары 74HC595 типті 8 разрядты ауысымдық регистрлермен басқарылады. Әр порт шамамен 25 мА ток көзін шығара алады. Бір микросхеманың ток күші 70 мА аспауы керек. Бұл чиптер өте арзан, сондықтан бір данаға 40 центтен артық төлемеңіз. Жарықдиодты шамалар экспоненциалды ток / кернеу сипаттамасына ие болғандықтан, Ом заңын қолдана отырып: R = (V - Vf) / IR = шектеу резисторы, V = 5V, Vf = жарық диодының тікелей кернеуі, I = қалаған ток шамамен 1,8 В тура кернеуі бар, көк және жасыл диапазоны 2,5 В -тан 3,5 В -қа дейін. Түсті дұрыс шығару үшін адам көзінің спектрлік сезімталдығы (қызыл/көк: нашар, жасыл: жақсы), жарық диодының белгілі бір толқын ұзындығында және ток кезінде тиімділігін анықтау үшін қарапайым мультиметрді қолданыңыз. Іс жүзінде біреуі 3 потенциометрді алып, жарықдиодты ақ түсті ақ жарық шыққанша реттейді. Әрине, максималды жарық диодты токтан аспауы керек. Сонымен қатар, қатарларды басқаратын ауысымдық регистр 3х8 жарықдиодты токпен қамтамасыз етуі керек, сондықтан токты тым жоғары көтермеу керек. Мен барлық светодиодтар үшін 270 Ом шектеулі резисторлармен табысқа жеттім, бірақ бұл әрине жарық диодты матрицаның жасалуына байланысты болады. SPI = Сериялық перифериялық интерфейс (Сурет (1)). ДК -дегі сериялық порттардан айырмашылығы (асинхронды, сағаттық сигнал жоқ), SPI -ге сағаттық желі қажет (SRCLK). Содан кейін құрылғыға деректер жарамды болған кезде сигнал беретін желі бар (чип таңдау / ысырма / RCLK). Ақырында екі деректер желісі бар, олардың бірі MOSI деп аталады (master out slave in), екіншісі MISO (master in slave out). SPI интегралды схемалардың интерфейсі үшін қолданылады, дәл мен сияқты2C. Бұл жобаға MOSI, SRCLK және RCLK қажет. Сонымен қатар, қосу сызығы (G) де қолданылады. SPI циклы RCLK сызығын LOW күйіне тарту арқылы басталады (Сурет (2)). MCU өз деректерін MOSI желісінде жібереді. Оның логикалық күйі SRCLK желісінің көтерілу жиегіндегі ауысым регистрімен таңдалады. Цикл RCLK сызығын қайтадан жоғарыға тарту арқылы тоқтатылады. Енді деректер шығуларда қол жетімді.
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) {/ * түсініктеме */ } Arduino IDE бұл қадамды қажет етпейді, өйткені функциялардың прототиптері автоматты түрде жасалады. Бұл жерде көрсетілген кодта функцияның прототиптері көрсетілмейді. Image (1): setup () functionImage (2): spi_transfer () функциясы ATmega168 чипінің аппараттық SPI көмегімен (тезірек жұмыс істейді) Сурет (3): кадрлық буфер коды таймер1 толып кетуі. Жаңадан бастаушылар үшін сәл құпия көрінетін код бөліктері while (! (SPSR & (1 << SPIF)))}} MCU регистрлерін тікелей пайдаланады. Бұл мысал: «SPSR регистрінде SPIF-бит орнатылмаған болса, ештеңе істемейді». Мен стандартты жобалар үшін аппараттық құралдармен тығыз байланысты мәселелермен айналысудың қажеті жоқ екенін баса айтқым келеді. Жаңадан бастаушылар бұған қорықпауы керек.
5 -қадам: Аяқталған гаджет
Барлық мәселелерді шешіп, кодты іске қосқаннан кейін маған ПХД макетін жасап, оны керемет үйге жіберу керек болды. Бұл әлдеқайда таза көрінеді:-) Сурет (1): толық толтырылған контроллер тақтасы Сурет (2): жалаңаш PCB суреті (2): артқы жағы ATmega168/328 чипінің PORTC және PORTD және 5V/GND ажырататын қосқыштары бар. Бұл порттарда сериялық RX, TX желілері, I бар2C сызықтары, цифрлық енгізу -шығару жолдары және 7 ADC желілері. Бұл қалқандарды тақтаның артқы жағына қоюға арналған. Аралық перформат тақтасын (0,1 дюйм) қолдануға жарамды. Жүктеушіні ICSP тақырыбының көмегімен жыпылықтауға болады (adafruit USBtinyISP жұмыс істейді). Бұл аяқталғаннан кейін стандартты FTDI USB/TTL сериялық адаптерін немесе сол сияқты қолданыңыз. Мен сондай-ақ автоматты түрде қалпына келтіруді өшіретін қосқышты қостым. Мен сондай-ақ FTDI кабельдерімен автоматты түрде қалпына келтіруге мүмкіндік беретін Perl сценарийін дайындадым (менің блогымды қараңыз), әдетте қораптан шықпайды (RTS және DTR желісі). Бұл Linux -те жұмыс істейді, мүмкін MAC -те. Менің блогымда басылған платалар мен бірнеше DIY жиынтықтары бар. SMD дәнекерлеу қажет! Жарықдиодты матрицаларға арналған құрылыс нұсқаулары мен көздері үшін PDF файлдарын қараңыз.
6 -қадам: Қолданба: Perl көмегімен Linux үшін CPU жүктеу мониторы
Бұл тарих сюжеті бар өте қарапайым жүктеме мониторы. Ол iostat көмегімен жүйенің «жүктеме орташа мәнін» әр 1 секунд сайын жинайтын Perl сценарийіне негізделген. Деректер әр жаңартуда ауысатын массивте сақталады. Тізімнің жоғарғы жағына жаңа деректер қосылады, ең ескі жазба шығарылады. Толығырақ ақпарат пен жүктеулер (код …) менің блогымда қол жетімді.
7 -қадам: Қолдану: I²C көмегімен басқа модульдермен сөйлесу
Бұл принциптің дәлелі және бұл жұмыстың ең қарапайым шешімі емес2C 127 «құл» тақтасына тікелей адрестеуге мүмкіндік береді. Бұл жерде бейнедегі оң жақтағы тақта - «мастер» (ол барлық аударымдарды бастайды), сол жақ тақта - құл (деректерді күту). Мен2С -ға 2 сигналдық желі және әдеттегі электр желілері қажет (+, -, SDA, SCL). Бұл автобус болғандықтан, оған барлық құрылғылар параллель қосылған.
8-қадам: Қолданба: «Game Cube»:-)
Бұл таңқаларлық ой, бұл кіріспе бетте көрсетілген ағаш қоршауға сәйкес келеді. Оның артында қарапайым ойын ойнауға болатын 5 түйме бар.
9 -қадам: Матрицада кескіндерді / анимацияларды көрсету - Quick Hack
Ол тек 8x8 пиксель мен бірнеше түстерге қол жетімді. Алдымен Gimp сияқты нәрсені қолданып, сүйікті суретті дәл 8x8 пиксельге дейін кішірейтіп, оны «.ppm» өңделмеген форматында сақтаңыз (ASCII емес). PPM Perl сценарийінде оңай оқылады және өңделеді. ImageMagick пен «түрлендіру» пәрмен жолы құралы дұрыс жұмыс істемейді. Жаңа arduino кодын жүктеңіз, содан кейін контроллерге жүктеу үшін Perl сценарийін қолданыңыз. Жыпылықтау - бұл жарық диодты жаңарту мен камераның кадр жиілігінің сәйкес келмеуі. Кодты сәл жаңартқаннан кейін, ол тез жұмыс істейді. Барлық суреттер сіз көріп тұрғандай сериялы түрде беріледі. Ұзақ анимациялар сыртқы EEPROM-де сақталуы мүмкін, ол әр түрлі тақталарда орындалады.
10 -қадам: Сақталған анимацияларды интерактивті басқару
Неліктен микроконтроллер көңілді жүрсін? Цифрлық түрлендіргіштің 8 аналогтық кірісінің біреуін пайдалану мұны өте қарапайым етеді.
11 -қадам: тікелей бейне көрсету
Perl сценарийі мен бірнеше модульдерді қолдану X11 жүйелерінде квази тікелей бейнелерді көрсетуді айтарлықтай жеңілдетеді. Ол Linux-те кодталған және MAC-те жұмыс істей алады. Ол келесідей жұмыс істейді:- тінтуір меңзерінің орналасуын алу- курсордың ортасында орналасқан NxN пиксель қорабын алу- суретті 8х8 пиксельге дейін- оны жарықдиодты тақтаға жіберу- қайталау
12 -қадам: Қосымша жарық дерлік ақысыз
Тек екі қадаммен жарықты біршама жоғарылатуға болады. 270Ω резисторды 169Ω резисторға және 74HC595 ауысымдық регистрін IC5 -ке ауыстырыңыз.
Ұсынылған:
Жарықдиодты-жарықдиодты-жарықдиодты: 7 қадам (суреттермен)

Жарықдиодты-жарықдиодты/жарықдиодты шамдар: мектептің ең жақсы жобасы геплоидты плексиглаздың көмегімен жүзеге асады, содан кейін ол мейрамхананың мейрамханасынан басталады. , кафе, … де о
Микроскоптарға арналған жарықдиодты жарықдиодты жарықдиодты жарықдиодты тақта!: 6 қадам (суреттермен)

Микроскоптар үшін DIY жарықдиодты жарықдиодты PCB! Мен электрониканы қолдануға арналған екінші микроскопты сатып алдым және сіз
Ретро аркадты өнері бар LED пиксельдік арт жақтауы, қолданба басқарылады: 7 қадам (суреттермен)

Қолданбалы бақыланатын ретро -аркадтық өнері бар жарықдиодты пиксельдік шпангоут: 1024 светодиодты қолданатын LED бақылаушы жарықдиодты жиектеме жасаңыз, пиксель жасаушылар жиынтығы - $ 59Adafruit 32x32 P4 светодиод матрицасы - $ 49.9512x20 дюйм/8 дюймдік акрил қабық. дюйм қалыңдығы - Кран пластиктен мөлдір жеңіл түтін
132 пиксельдік сағат: 5 қадам (суреттермен)

132 Пиксельді сағат: Менде есімде, жарық диодтар мен уақытқа байланысты болды. Бұл жобада мен шырша тақтасы арқылы орнатылған және жарқырайтын 132 неопиксельді жарықдиодты пайдаланып ағымдағы уақытты көрсететін үлкен қабырға сағатын жасадым. Бұл цифрлық гибридті аналогты
42 RGB LED пиксельдік көркем кескіндеме: 5 қадам

42 RGB LED пиксельдік көркем кескіндеме: Эй, сондықтан мектеп тапсырмасы үшін " Егер бұл болса, онда бұл " Мен Arduino Uno стартеркитінің көмегімен интерактивті // бірдеңе // жасауым керек болды (және басқалары өздерін сатып алғысы келетін нәрсені). Мен өнер мен технологияны зерттеп жатқанымды қалаймын