Вопрос по русским буква для моно-дисплея
- Войдите на сайт для отправки комментариев
Пт, 25/12/2015 - 13:40
Добрый день!
Подскажите, пожалуйста, еще один момент по программированию
Так как на моно-дисплей можно выводить русские буквы только кодированием (как я понял), попытался написать небольшой код с переключением (кнопкой) двух простых слов.
Одно слово выводится нормально, а второе - не получается... Вместо второго слова выходит какая-то абракадабра, состоящая из букв предыдущего слова...
Вот сам код:
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); bool x; byte p[8] = { B11111, B10001, B10001, B10001, B10001, B10001, B10001, B10001, }; byte r[8] = { B11111, B10001, B11111, B10000, B10000, B10000, B10000, B10000, }; byte i[8] = { B10001, B10001, B10011, B10101, B11001, B10001, B10001, B10001, }; byte v[8] = { B11110, B10001, B10001, B11110, B10001, B10001, B10001, B11110, }; byte e[8] = { B11111, B10000, B10000, B11111, B10000, B10000, B10000, B11111, }; byte t[8] = { B11111, B00100, B00100, B00100, B00100, B00100, B00100, B00100, }; byte ij[8] = { B10001, B10001, B10001, B10001, B11101, B10101, B10101, B11101, }; byte j[8] = { B10101, B10001, B10011, B10101, B11001, B10001, B10001, B10001, }; byte ju[8] = { B10111, B10101, B10101, B11101, B10101, B10101, B10101, B10111, }; byte sh[8]= { B10101, B10101, B10101, B10101, B10101, B10101, B10101, B11111, }; byte c[8]= { B01110, B10001, B10000, B10000, B10000, B10000, B10001, B01110, }; byte k[8]= { B10001, B10010, B10100, B11000, B11000, B10100, B10010, B10001, }; byte a[8]= { B00100, B01010, B10001, B10001, B11111, B10001, B10001, B10001, }; int P=0; int R=1; int I=2; int V=3; int E=4; int T=5; int IJ=6; int J=7; int JU=8; int SH=9; int C=10; int K=11; int A=12; void setup() { lcd.begin(16, 2); lcd.createChar(0,p); lcd.createChar(1,r); lcd.createChar(2,i); lcd.createChar(3,v); lcd.createChar(4,e); lcd.createChar(5,t); lcd.createChar(6,ij); lcd.createChar(7,j); lcd.createChar(8,ju); lcd.createChar(9,sh); lcd.createChar(10,c); lcd.createChar(11,k); lcd.createChar(12,a); pinMode(7, INPUT); pinMode(8, INPUT); } void loop() { if (digitalRead (7)==HIGH) { x=true; } if (digitalRead (8)==HIGH) { x=false; } if (x==true) { lcd.setCursor(0, 0); lcd.clear(); lcd.write(K); lcd.write(C); lcd.write(JU); lcd.write(SH); lcd.write(A); } else { lcd.setCursor(0, 0); lcd.clear(); lcd.write(P); lcd.write(R); lcd.write(I); lcd.write(V); lcd.write(E); lcd.write(T); //lcd.print(" "); //delay(1000); } delay(1000); }
8-мь заказных символов возможно записать в индикатор
8 всего???
А какой тогда лучше использовать недорогой дисплей, чтоб русские символы были?
8 всего???
А какой тогда лучше использовать недорогой дисплей, чтоб русские символы были?
в дисплеях типа 1602 зашиты два шрифта, обычно латиница и любой другой на выбор заказчика-покупателя
т.е. купить дисплей с кириллицей.
попробуй печать "Привет мир" - внезапно, ты везучий.
забыл: библиотеку дисплея, поддерживающую кириллицу нужно пользовать.
или купи российский дисплей МЭЛТ - он с кириллицей, правда дорогой
Да я уже посмотрел у них, честно говоря, жаба немного душит 540 рублей отдать, когда на алиэкспрессе они по 100-150 рублей продаются. В общем, я приноровился, смешиваю доступные 8 символов с английскими буквами, вроде пока получается))
Спасибо за помощь, ребята! Выручаете прям очень!)
Kruppa, а что мешает перепрограммировать цифры по мере надобности? Так можно и весь алфавит выводить:)
А это как?)) Прям в теле функции Loop? Разве так можно/получится?))
Kruppa, ну я пока предположил, может и не получиться. Пробовать нужно..
Kruppa, ну я пока предположил, может и не получиться. Пробовать нужно..
была у меня библиотека-приблуда к LiquidCrystal псевдо графику рисующая по координатам - но, ограничение у неё было квадрат 4Х4 символа т.е. 8-мь
думаю, не взлетит больше 8-ми никак
Клапауций 321, одновременно больше 8 наверное да, никак. Но поочереди то можно. В общем при необходимости выкрутится можно) Счас попробую, дисплей под рукой..
Клапауций 321, одновременно больше 8 наверное да, никак. Но поочереди то можно. В общем при необходимости выкрутится можно) Счас попробую, дисплей под рукой..
я тоже так думал, но зачем та библиотека, если можно дисплей в графический пару строками превратить?
попробуй - я завтра подтянусь к дисплею
нашёл потеряшку - нафига я её удалял?
https://bitbucket.org/teckel12/arduino-lcd-bitmap/wiki/Home
Kruppa, в общем по-очереди можно выводить буфер из 8 знаков, вот пример на основе вашего массива букв.
Из особенностей -нужно инитить дисплей после создания символов, иначе они не попадают в память дисплея
Ого, спасибо!
Сейчас буду разбираться!!
Спасибо еще раз!)
Вместо русских букв можно использовать английские буквы, сходные по написанию. Например: в слове BTOPHИK нужно добавить лишь одну букву И, а CPEDA пишется полностью из английских букв.
А можно слово "ВТОРНИК" вместо "и" поставить английскую "u". Получиться "BTopHuk". Всё английскими.