Съдържание:

5x4 LED дисплейна матрица, използваща основен печат 2 (bs2) и Charlieplexing: 7 стъпки
5x4 LED дисплейна матрица, използваща основен печат 2 (bs2) и Charlieplexing: 7 стъпки

Видео: 5x4 LED дисплейна матрица, използваща основен печат 2 (bs2) и Charlieplexing: 7 стъпки

Видео: 5x4 LED дисплейна матрица, използваща основен печат 2 (bs2) и Charlieplexing: 7 стъпки
Видео: Светодиодный экран LED P3 для помещений 2024, Юли
Anonim
5x4 LED дисплейна матрица, използваща основен печат 2 (bs2) и Charlieplexing
5x4 LED дисплейна матрица, използваща основен печат 2 (bs2) и Charlieplexing

Имате ли основен печат 2 и някои допълнителни светодиоди наоколо? Защо не си поиграете с концепцията за charlieplexing и не създадете изход, като използвате само 5 пина.

За тази инструкция ще използвам BS2e, но всеки член на семейството BS2 трябва да работи.

Стъпка 1: Чарлиплекс: Какво, защо и как

Нека първо да отстраним защо. Защо да използваме charlieplexing с Basic Stamp 2? --- Доказателство за концепцията: Научете как работи charlieplexing и научете нещо за BS2. Това може да ми бъде полезно по-късно, като използвам по-бързи 8-пинови чипове (само 5 от тях ще бъдат i/o).-Полезна причина: По принцип няма такива. BS2 е твърде бавен за показване без забележимо трептене. Какво е charlieplexing? --- Charlieplexing е метод за задвижване на голям брой светодиоди с малък брой микропроцесорни входно-изходни щифтове. Научих за charlieplexing от www.instructables.com и вие също можете: Charlieplexing LEDs- теорията Как да управляваме много светодиоди от няколко пина на микроконтролера. Също така в wikipedia: CharlieplexingКак мога да карам 20 светодиода с 5 i/o пина? --- Моля, прочетете трите връзки под „Какво е charlieplexing?“. Това го обяснява по -добре от всякога. Charlieplexing се различава от традиционното мултиплексиране, което се нуждае от един входно -изходен щифт за всеки ред и всяка колона (това би било общо 9 i/o пина за 5/4 дисплей).

Стъпка 2: Хардуер и схема

Хардуер и схеми
Хардуер и схеми

Списък с материали: 1x - Основен печат 220x - светодиоди (светодиоди) от същия тип (цвят и спад на напрежението) 5x - резистори (вижте по -долу относно стойността на резистора) Спомагателни/По избор: Метод за програмиране на вашия BS2Моментален бутон като ключ за нулиране 6v -9v Захранване в зависимост от вашата версия на BS2 (прочетете вашето ръководство) Схемата: Тази схема е съставена заедно с механичното оформление. Вляво ще видите мрежата от светодиоди, това е ориентацията, за която е написан BS2 кодът. Забележете, че всяка двойка светодиоди има анод, свързан с катода на другия. След това те са свързани към един от петте входно -изходни пина. Стойности на резистора: Трябва да изчислите собствените си стойности на резистора. Проверете листа с данни за вашите светодиоди или използвайте настройката на светодиода на вашия цифров мултицет, за да намерите спада на напрежението на вашите светодиоди. Нека направим някои изчисления: Захранващо напрежение - Напрежение на напрежението / Желан ток = Стойност на резистора BS2 захранва 5v регулирана мощност и може да източи 20ma на ток. Моите светодиоди имат спад от 1.6v и работят при 20ma.5v - 1.6v /.02amps = 155ohms За да защитите вашия BS2, трябва да използвате следващата по -висока стойност на резистора от това, което получавате с изчислението, в този случай вярвам, че ще бъде 180ohms. Използвах 220 ома, защото моята платка за развитие има тази стойност на резистор, вградена в нея за всеки входно -изходен извод. ЗАБЕЛЕЖКА: Смятам, че тъй като на всеки щифт има резистор, това ефективно удвоява съпротивлението на всеки светодиод, тъй като единият щифт е V+, а другият е Gnd. Ако случаят е такъв, трябва да намалите наполовина стойностите на резистора. Неблагоприятният ефект от твърде високата стойност на резистора е димер с димер. Може ли някой да провери това и да ми остави PM или коментар, за да мога да актуализирам тази информация? Програмиране: Използвах платка за разработка, която има DB9 конектор за програмиране на чипа направо на дъската. Аз също използвам този чип на моята платка без спойка и съм включил заглавка In Circuit Serial Programming (ICSP). Заглавката е 5 пина, щифтове 2 до 5 се свързват с пинове 2-5 на сериен кабел DB9 (Pin 1 не се използва). Моля, обърнете внимание, че за да използвате този ICSP заглавен щифт 6 и 7 на кабела DB9 трябва да бъдат свързани помежду си. Нулиране: Бутонът за нулиране с кратко натискане не е задължителен. Това просто издърпва щифт 22 към земята при натискане.

Стъпка 3: Breadboarding

Breadboarding
Breadboarding
Breadboarding
Breadboarding

Сега е време да изградим матрицата върху макет. Използвах клемна лента за свързване на един крак от всяка двойка светодиоди заедно и малък джъмпер проводник за свързване на другите крака. Това е подробно описано в близката снимка и е обяснено в дълбочина тук: 1. Ориентирайте дъската, за да съответства на по -голямата картина2. Поставете LED 1 с анода (+) към вас и катода (-) далеч от вас. Поставете LED 2 в същата ориентация с анода (+) в свързващата клемна лента на LED 1 катода. Използвайте малък джъмпер проводник, за да свържете анода на LED 1 с катода на LED 2.5. Повтаряйте, докато всяка двойка светодиоди бъде добавена към платката. Използвам това, което обикновено би било лентите на захранващата шина на дъската за хляб като шини за BS2 I/O щифтове. Тъй като има само 4 шинни ленти, използвам клемна лента за P4 (петата I/O връзка). Това може да се види на по -голямата картинка по -долу. Свържете клемната лента за LED 1 катод към шината P0. Повторете за всеки нечетен светодиод, като замествате правилния P* за всяка двойка (вижте схемата). Свържете клемната лента за LED 2 катод към шината P1. Повторете за всеки нечетен светодиод, замествайки правилния P* за всяка двойка (вижте схемата). Свържете всяка шина към съответния I/O щифт на BS2 (P0-P4). Проверете всички връзки, за да се уверите, че отговарят на схемата. ЗАБЕЛЕЖКА: В близък план ще видите, че не изглежда, че съм следвал стъпка 7, тъй като връзката към втория I/O пин е на анода на нечетните светодиоди. Не забравяйте, че катодът на четните светодиоди е свързан към анода на светодиодите с нечетни номера, така че връзката е еднаква във всеки случай. Ако тази бележка ви обърква, просто я игнорирайте.

Стъпка 4: Основи на програмирането

За да работи charlieplexing, включвате само един светодиод наведнъж. За да работи това с нашия BS2, се нуждаем от две основни стъпки: 1. Задайте изходните режими за щифтовете с помощта на командата OUTS. Кажете на BS2 кои пинове да използвате като изходи с помощта на командата DIRS Това работи, защото на BS2 може да се каже кои пинове да се движат високо и ниско и ще изчака да го направи, докато не посочите кои пинове са изходи. Да видим дали нещата са свързани правилно от просто се опитвам да мига LED 1. Ако погледнете схемата, можете да видите, че P0 е свързан към катода (-) на LED 1 и P1 е свързан към анода на същия този светодиод. Това означава, че искаме да караме P0 ниско и P1 високо. Това може да стане по следния начин: „OUTS = % 11110“, което задвижва P4-P1 високо и P0 ниско. (% Показва, че трябва да се следва двоично число. Най-ниската двоична цифра винаги е вдясно. 0 = НИСКА, 1 = ВИСОКА) BS2 съхранява тази информация, но няма да действа по нея, докато не обявим кои изводи са изходи. Тази стъпка е ключова, тъй като само два извода трябва да бъдат изходи едновременно. Останалите трябва да са входове, които задават тези щифтове в режим на висок импеданс, така че те да не потъват ток. Трябва да управляваме P0 и P1, така че ще ги настроим на изходи, а останалите на входове по следния начин: "DIRS = % 00011". (% Показва, че трябва да следва двоично число. Най -ниската двоична цифра винаги е вдясно. 0 = INPUT, 1 = OUTPUT) Нека го съберем в някой полезен код: '{$ STAMP BS2e}' {$ PBASIC 2.5} DO OUTS = %11110 'Задвижване P0 ниско и P1-P4 високо DIRS = %00011' Задайте P0- P1 като изходи и P2-P4 като входове ПАУЗА 250 'Пауза, за да остане светодиода на DIRS = 0' Задайте всички пинове на вход. Това ще изключи LED PAUSE 250 'Пауза, за да остане LED изключен LOOP

Стъпка 5: Цикълът на развитие

Сега, когато видяхме, че един пин работи, за да се уверим, че всички те работят. Ще забележите, че след като всеки бутон свети, използвам "DIRS = 0", за да превърна всички пинове обратно във входове. Ако промените OUTS, без да изключвате изходните щифтове, може да получите някои "призраци", при които светодиод, който не трябва да свети, може да мига между циклите. Ако промените променливата W1 в началото на този код на "W1 = 1" там ще бъде само 1 милисекунда пауза между всяко LED мигане. Това ще предизвика ефект на персистиране на зрението (POV), който ще изглежда така, сякаш всички светодиоди светят. Това има ефект да направи светодиодите по -слаби, но това е същността на начина, по който ще показваме символи на тази матрица. Светодиоди в използваем модел. Този файл е първият ми опит. Ще видите, че в долната част на файла символите се съхраняват в четири реда от 5 -цифрен двоичен файл. Всеки ред се чете, анализира и се извиква подпрограма всеки път, когато трябва да светне светодиод. Този код работи, преминавайки през цифри 1-0. Ако все пак се опитате да го стартирате, забележете, че е измъчван от много бавна честота на опресняване, което кара символите да мигат почти твърде бавно, за да бъдат разпознати. Този код е лош по много причини. Първо, пет цифри на двоични файлове заемат точно толкова място в EEPROM, колкото 8 цифри на двоично, тъй като цялата информация се съхранява в групи от по четири бита. Второ, SELECT CASE, използван за решаване кой щифт трябва да се освети, изисква 20 случая. BS2 е ограничен до 16 случая на операция SELECT. Това означава, че трябваше да преодолея това ограничение с оператор IF-THEN-ELSE. Трябва да има по-добър начин. След няколко часа драскане по главата го открих.

Стъпка 6: По -добър преводач

Всеки ред от нашата матрица се състои от 4 светодиода, всеки може да бъде включен или изключен. BS2 съхранява информация в своя EEPROM в групи от четири бита. Тази връзка трябва да ни улесни много. В допълнение към този факт, четири бита съответстват на десетичните числа 0-15 за общо 16 възможности. Това прави или SELECT CASE много по-лесно. Ето цифрата 7, съхранена в EEPROM: „7 %1111, %1001, %0010, %0100, %0100, Всеки ред има десетичен еквивалент до 0-15, така че четем a въведете от паметта и я подайте директно към функцията SELECT CASE. Това означава, че четимата за хората двоична матрица, използвана за създаване на всеки знак (1 = включен, 0 = изключен) е ключът за интерпретатора. За да използвам един и същ SELECT CASE за всеки от 5 -те реда, използвах друг избран случай за да зададете DIRS и OUTS като променливи. Първо прочетох във всеки от пет реда на знака променливи ROW1-ROW5. След това основната програма извиква подпрограмата, за да покаже символа. Тази подпрограма заема първия ред и присвоява четирите възможни OUTS комбинации на променлива outp1-outp4 и двете възможни DIRS комбинации на direc1 & direc2. Светодиодите мигат, броячът на редовете се увеличава и същият процес се изпълнява за всеки от другите четири реда. Това е много по -бързо от първата програма за преводач. Като се има предвид това, все още има забележимо трептене. Разгледайте видеото, камерата прави трептенето да изглежда много по -лошо, но схващате идеята. Пренасянето на тази концепция към много по -бърз чип, като picMicro или AVR чип, би позволило показването на тези знаци без забележимо трептене.

Стъпка 7: Къде да отидете оттук

Нямам фреза за cnc или офорт, за да направя платки, така че няма да окабелявам този проект. Ако имате мелница и се интересувате от сътрудничество, за да продължите напред от тук, изпратете ми съобщение. С удоволствие бих платил за материали и изпращам още по -щастлив, за да покажа нещо като завършен продукт за този проект.

Други възможности: 1. Прехвърлете това към друг чип. Този матричен дизайн може да се използва с всеки чип, който разполага с 5 входно-изходни щифта, които са в състояние на три състояния (щифтове, които могат да бъдат високи, ниски или входни (висок импеданс)). 2. Използвайки по -бърз чип (може би AVR или picMicro) можете да увеличите мащаба. С 20 -пинов чип можете да използвате 14 пина за charlieplex 8x22 дисплей и да използвате останалите пинове за получаване на серийни команди от компютър или друг контролер. Използвайте още три 20-пинови чипа и можете да имате превъртащ се дисплей, който е 8x88 за общо 11 знака наведнъж (в зависимост от ширината на всеки знак, разбира се). Късмет забавлявай се!

Препоръчано: