Това е малко нетрадиционна статия за този сайт, тъй като сме в него сме се ориентирали предимно към софтуера, но въпреки това реших да я пусна, защото все пак ще стане въпрос и за софтуер, и то свободен…

За да не се чудите за какво става въпрос, ще кажа от сега – крайният резултат ще представлява едно „устройство“ с матрица от 5×8 светодиода, върху които ще можете да покажете произволен скролиращ се текст. Ето как горе-долу ще изглежда:

Ето и снимки (на които се вижда цялостния вид на устройството):

В общи линии, цялата джаджа се състои от една матрица от светодиоди, свързани в 5 колони по 8 реда, и един микроконтролер PIC16F84A, към чиито изходи матрицата е свързана директно. За незапознатите ще обясня че PIC16F84A представлява една „интегрална схема“ с 18 крака, която всъщност е миниатюрен процесор, в който може да бъде заредена проста програма. Програмата от своя страна, управлява изходите му, към които са свързани самите светодиоди.

Кръстил съм устройството K-PICXIE.

Какво ви е необходимо за да го направите? Нужни са следните компоненти/материали:

– малко парче едностранно фолиран текстолит за платки

– пак толкова голямо парче универсална платка (на нея ще монтирате светодиодите, ако не ви се разправя да правите двустранна платка за тях)

– един микроконтролер PIC16F84A с PDIP (DIP) корпус (можете да си поръчате до 4 броя АБСОЛЮТНО БЕЗПЛАТНО) от http://sample.microchip.com/, и ще пристигне за 2-3 седмици.

– две батерийки тип AA (може и AAA или какъвто и да е източник на 3V до 5V напрежение).

– един кварцов резонатор 4 MHz

– един 18-пинов DIP цокъл

– държач за батерии (опционално)

– малко кабели – аз разфасовах един стар 40-жилен IDE кабел, но става всякакъв по-мек многожилен кабел.

– 40 светодиода – колкото по-маломощни са – толкова по-дълго време ще може да работи устройството с едни батерии. Не се изсилвайте да използвате мощни светодиоди с повишено излъчване, тъй като микроконтролера най-вероятно няма да може да ги захрани с достатъчно ток. В текущия си вариант, моето консумира от 1 до 5 mA, в зависимост от конкретния брой сведотиоди които светят едновременно. Може да пресметнем че с такава консумация, и едни акумулаторни батерии 700 mA/h може да работи горе-долу 140 часа (че дори и повече)…

– два кондезатора по 10 pF

– МНОГО ТЪРПЕНИЕ (особено при запояването на светодиодите)

– известно количество мозък

– хубава музика (за да не издивеете тотално по време на запояването на 40-те светодиода)

Няма да се спирам на процеса на правене на печатната платка, тъй като ако нямате възможност да си направите, може да използвате и универсална платка.
Също така, трябва да отбележа, че е необходим и програматор за PIC16F84A – за да можете да запишете крайната програмка върху микроконтролера. И на направата на програматор няма да се спирам (засега) – в мрежата има доста схеми на прости програматори за PIC16F84A, а може и да се възползвате от услугите на някой ваш познат който се занимава с такива неща… (ако някой проявява интерес, ще пусна тук и схемата на моят програматор, която е доста проста между другото…).

И така, ето схемата за управление на светодиодите:

Както (може би) виждате от нея, изходите на микроконтролера RA0 до RA4 определят колоната, а RB0 до RB7 – реда.

Можете да свалите схемата и в Eagle формат (ако искате да я променяте): k-picxie.sch

От тук пък можете да свалите дизайна на платка в PDF и Protel-ски формат: K-Picxie-PCB.zip (благодарение на Пепо от коментарите долу)
Сорс-кодът на програмата която управлява устройството е достъпен от тук: k-picxie.c
Компилираният (готов за записване в микроконтролера) .hex-файл, можете да свалите от тук: k-picxie.hex (настроен е да изписва надписа „използвайте свободен софтуер“).

А сега малко иструкции, относно показването на собствен текст. За целта е необходимо да редактирате (примерно с Notepad) файлът k-picxie.c и да го компилирате.
Редакцията става на ред 29 от сорса, там където пише

const unsigned char* text = "използвайте свободен софтуер!";

Заменете текстът в кавичките с вашият текст (на кирилица, с малки букви).

За да компилирате файла, е нужно да си инсталирате HI-TECH PICC-Lite компилатор. Той е безплатен и е достъпен за сваляне от тук. След като сте го инсталирали, стартирайте един Command Prompt от Start->Programs->Accessories->Command Prompt, и в него напишете:

D:
cd download\k-picxie
picl.exe --chip=16F84A -G k-picxie.c

където D: е устройството върху което сте свалили сорс-кода (т.е. файла k-picxie.c), а download\k-picxie е директорията в която сте го свалили.
Ако сте направили всичко както трябва, файлът ще се компилира без грешки, и в същата директория ще се появи файл с име k-picxie.hex (заедно с още няколко други, които не ви интересуват). Той всъщност е файлът който ще трябва да бъде записан в микроконтролера. Имайте предвид че текстът който можете да изпишете не е безкраен, и ако по време на компилацията излезе надпис подобен на

(593) can't find 0x6 words (0x6 withtotal) for psect "text4" in segment "CODE" то значи текстът е по-дълъг, отколкото може да побере свободната памет на процесорчето. В настоящия вид на програмата, максималната дължина на текста е около 373 символа.

При желание, можете да редактирате и таблицата със символи, така че да може да покажете собствени символи (например – текст на латиница), или дори кратка анимацийка от 30-40 кадъра… (за анимацийката е нужно съвсем още малко да промените кода, но това оставям на ентусиастите).

За създаване на символи съм направил специална програмка с помоща на AutoIt, с която можете лесно да генерирате необходимият ви код, който след това само трябва да копирате.
Свалете я от тук: kpicxie-charedit.exe
Ако искате, може да свалите и AutoIt кода на програмката: kpicxie-charedit.au3
Работата с нея е пределно проста, ето как изглежда:

В лявата част на прозореца задавате символа който искате да се генерира, а в дясната се вижда генерираният код. След като сте направили символа, трябва там където пише

case '':

да вмъкнете вашият символ. Примерно, ако сте направили символа за буквата R, трябва да напишете там

case 'R':

След това, маркирате целия генериран код копирате го, и го поставяте в основния код (в k-picxie.c), след мястото където пише

// поставяйте вашите нови символи след този текст

В общи линии, това е. Естествено, по темата за PIC микроконтролерите може да се изпише и изговори много, но не това е целта ми. Идеята за този проект се роди съвсем спонтанно, тъй като преди него не се бях занимавал с микроконтролери, или с програмиране за микроконтролери (въпреки че имах желание).
Държа да отбележа, че схемата и софтуера са изцяло разработени от мен (от нулата, за около две седмици), въпреки че в мрежата има доста подобни проекти. Смея да твърдя обаче, че не успях да попадна на проект с LED матрица с PIC16F84A, който да е с толкова много светодиоди и същевременно с толкова малко допълнителни компоненти. На практика светодиодите се свързват директно към изходите на микроконтролера.

Още, искам да отбележа, че кодът ми може и да не е най-опитимизиран… Всъщност, не е оптимизиран изобщо. Но така или иначе, работи безпроблемно. Ако сред вас има желаещи да го променят и оптимизират, така че да заема по-малко памет в процесора (и по този начин да се освободи място за по-дълъг текст), нека го направят (и да ме уведомят).

Успех на всички желащи да опитат късмета си с този сравнително прост PIC проект!