Написахте в програмата за Arduino нещо като:
lcd.print ("Здравей, свят!")
Бордът послушно изпълни командата и текстът се появи на дисплея. Но как едно устройство „каза“ нещо, а второто „чуе“ и „разбере“? Това е като да поискаш от художника да ти направи портрет, но да не видиш как работи върху него. Авторът на Instructsbles, по прякор Indogeek, излезе със стойка, която ще ви помогне да се почувствате в обувките на „живия Arduino“ и да управлявате HD44780 на ниско ниво. В един от конкурсите това домашно приготвени продукти спечели първата награда.
Нуждае се от малко подробности: всеки модул (LCD, VLI или PMOLED) на контролера или съвместим с HD44780, осем превключвателя, бутон без затваряне, плъзгащ превключвател, резистор с променлив 1 kΩ, платка с микро USB гнездо и калъф.
От това, което не е показано на снимката, се нуждаем от: резистор от 10 kOhm и кондензатор от 100 μF и най-малко 6.3 V.
Самият Indoorgeek взе модул от най-често срещания тип: LCD, 16 знака на ред, два реда. Останалите модули обаче имат същия принцип на управление, само изравняването може да се различава леко, така че не бъдете много мързеливи, за да погледнете в листа с данни.
Във всички случаи връзката към общия проводник съответства на логическа нула, а връзката към шината за мощност +5 волта съответства на единство.
Игли 1 и 2 са за захранване на модула. Първият от тях винаги е свързан с общ проводник, а вторият - винаги с захранваща шина.
Пин 3 е за регулиране на контраста. Когато към него се прилага напрежение от 0 до 5 волта спрямо общия проводник, контрастът се променя от нула до максимум.
Pin 4 ви позволява да избирате между регистър на данните и регистър на инструкциите. Ние даваме логическа нула - избира се регистърът на инструкциите (с други думи, команди), единицата е регистърът на данните.
Инструкциите могат да бъдат например следните: инициализирайте контролера, изчистете екрана и т.н., а данните включват знаци, които ще покажете на индикатора.
Напротив, можете да четете данни от някакъв регистър. За да направите това, трябва да приложите високо ниво към пин 5 и дисплеят ще премине в режим на извеждане на информация обратно към вашия микроконтролер. За да започнете отново да записвате данни от вашия микроконтролер към контролера на дисплея, трябва да изпратите ниско ниво 5 до пин 5. Доста често режимът на четене изобщо не се използва, както например в този домашен продукт.
Според пинове 7 до 14, дисплеят може да обменя команди и данни при 8-битово кодиране. Най-ниското ниво съответства на щифт 7, най-високото - 14.
Пин 6 е необходим за подстригване.Бавно задавате данни на пинове 7 до 14, но докато щифт 6 е логическа нула, модулът изобщо не реагира на това. След това, без да променяте състоянието на щифтове 7 до 14, изпращате краткосрочен импулс на високо ниво на пин 7 - и данните се предават.
Изводи 15 и 16 - хранене на подсветката, ако има такава. 15 - плюс, 16 - минус.
Достъпно за indorgeek, калъфът се оказа с размери 200x150x40 милиметра. Този случай беше взет от друга, разглобена домашна и вече имаше дупки в нея. Майсторът ги използва в новия дизайн максимално, за да направи възможно най-малко допълнителни.
Той постави осем превключвателя за промяна на състоянието на линиите за данни / командна шина, превключвател за избор между регистри (виж по-горе), бутон за решетка, променлив резистор за непрекъснато регулиране на контраста.
Вградената дъска с Micro USB жак има удобни щифтове, които улесняват свързването на проводниците. Тук са необходими само два от тях: +5 V и общ проводник. Ако нямате такава платка и Micro USB гнездо, споено от някъде, изглежда неудобно за запояване, можете просто да вземете кабел с USB конектор. Във всеки случай, нека повторим след мастера и спойка такава схема:
Контактите на превключвателите, съответстващи на горната позиция, indorgeek се свързват заедно и подават плюс върху тях. Той направи същото с контактите на превключвателите, съответстващи на долната позиция, само че им даде минус. Той свърза подвижните контакти на превключвателите не един с друг, а със заключенията на командите на шината / модула на данни в съответствие с "теглото" на двете (D0 - щифт 7 - нисък ред, D7 - щифт 14 - висок). Ако майсторите не бяха ухапали разярените резистори в детска възраст, той щеше да може да използва по-прости превключватели - не превключващи, но нормално отворени.
Но същите резистори, но в веригите на потискане на скачането на контакт, той никога не е бил обиден. Тук тази схема е необходима, така че контролерът на дисплея да не предприема едно натискане на бутона за стробиране за няколко. Другите контроли не изискват потискане на бърборене, тъй като докато не се получат стробни импулси, данните на останалите редове могат да се променят много пъти, колкото искате. Основното нещо е да не докосвате превключвателите и превключвателя с натиснат бутон. И така, с резистор от 10 kOhm, майсторът издърпа щифт 6 към общата жица и с бутона към шината плюс. Тъй като съпротивлението на бутона е много по-ниско, при натискане той „влачи“. Когато се освободи, съпротивлението му става близо до безкрайността и резисторът вече го „дърпа“. 100 uF кондензатор (не е показан на диаграмата), свързан с плюс към плюс шината и с минус към резистора и шестия изход на дисплея, потиска бърборенето. По-добре е, разбира се, да подтиснете чатането с бутон за превключване и RS-тригер.
При плъзгащия превключвател изходите на неподвижните контакти са свързани по същия начин, както за превключвателите, а подвижният превключвател е свързан към изхода на модула 6. Ето, разработчикът отново показа страх от издърпващи резистори. Този превключвател е необходим за избор между режимите на предаване на команди (нула) и данни (единица).
Indoorgeek свърза изхода на променливия резистор, съответстващ на минималния контраст към общата жица, противоположната на шината плюс, а средната (двигателя) към третия изход на модула.
Заключения 1, 5 и 16 (съответно минус мощност, запис / четене и минус подсветка) главният свързан към общ проводник, така че режимът на запис се избира непрекъснато. Изводи 2 и 15 (съответно плюс мощност и плюс подсветка), той се свърза с петволтовата шина. В модула на дисплея е интегриран резистор за ограничаване на тока през светодиодите на подсветката.
Ако сте събрали всичко това, пред вас сега - нещо подобно:
Предният панел е проектиран така, че да можете да направите същото:
Можете да научите командите на контролера HD44780 и как да ги управлявате фиш, Можете също така да видите готови примери за скриптове за тренажор, Като за начало ще повторим стъпките зад закрит контур, за да се покаже HELLO!
Включете устройството. Подсветката ще светне. Преместете плъзгача в положение, съответстващо на логическа нула, така че индикаторът да премине в режим на получаване на команди. Задайте двоичния номер 00001111 на командата / шината за данни с превключвателите на превключвателя и натиснете за кратко бутона за стробоскоп. Тази команда означава: включете дисплея, направете курсора видим и мига, което ще се случи. По същия начин ще издадем командата 00110000, което означава: получаване на данни във 8-битов формат, избор на първия ред и шрифт 5 на 8 пиксела. Визуално нищо няма да се случи, но някъде вътре в контролера на дисплея ще се появят необходимите превключватели. Можете да прехвърляте данни. Превеждаме слайд превключвателя в положение, съответстващо на логическата единица, сега индикаторният модул е готов да ги приеме. Задайте ASCII кода на буквата Н, т.е. 01001000, включете превключвателите на шината и натиснете бутона за стробоскоп. На екрана се появява съответната буква и курсорът се премества в една позиция вдясно. По същия начин ще предадем буквите E, L, L, O и удивителен знак: 01000101, 01001100, 01001100, 01001111, 00100001. Ако сте направили същото, няма значение на стенда, който току-що сте сглобили или в симулатора, ще видите надписа HELLO ! Ето така:
Ето как разбрахте колко прави Arduino, за да покаже само няколко знака. И има екипи, които да изпълняват по-сложни действия, овладявайки които, можете да получите интересни ефекти, да определите нестандартни знаци ...
Екскурзията ви до „кухнята“ на библиотеката на Arduino LiquidCrystal едва започва и нека ви е забавно!