LiquidCrystal вертикальный символы - Arduino

loker95
Offline
Зарегистрирован: 11.02.2017

Доброго времени суток, решил создать свои символы на LiquidCrystal по вертикали, нарисовал единичку показывает норм, рядом добавил пятерочку получил место 1->5 и место 5->разбитую 5 (можно на рисунке посмотреть)

вот полный код 

#include <BigCrystal.h>
#include <LiquidCrystal.h>
 
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
BigCrystal bigCrystal(&lcd);
 
/********************edinica********************/
byte edinica1[8] = {
  0b11111,
  0b11111,
  0b01111,
  0b00111,
  0b00011,
  0b00001,
  0b00000,
  0b00000
};
 
byte edinica2[8] = {
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b11111,
  0b11111,
  0b11111,
  0b11111
};
 
byte edinica3[8] = {
  0b11111,
  0b11111,
  0b10000,
  0b10000,
  0b10000,
  0b10000,
  0b10000,
  0b00000
};
 
byte edinica4[8] = {
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b11111,
  0b11111,
  0b11111,
  0b11111
};
 
byte edinica5[8] = {
  0b11111,
  0b11111,
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b00000
};
 
byte edinica6[8] = {
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b11111,
  0b11111,
  0b11111,
  0b11111
};
 
byte edinica7[8] = {
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b00000
};
 
byte edinica8[8] = {
  0b00000,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11111
};
/********************The End********************/
 
/******************** Pyat *********************/
byte pyat1[8] = {
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b01111,
  0b00111
};
 
byte pyat2[8] = {
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11111
};
 
byte pyat3[8] = {
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11111
};
 
byte pyat4[8] = {
  0b00000,
  0b00001,
  0b00011,
  0b00011,
  0b00011,
  0b00011,
  0b00011,
  0b00011
};
 
byte pyat5[8] = {
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b00000
};
 
byte pyat6[8] = {
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11111
};
 
byte pyat7[8] = {
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11111
};
 
byte pyat8[8] = {
  0b11100,
  0b11110,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11111
};
/********************* The End *********************/
 
/**/
 
/**/
 
void setup() {
  bigCrystal.begin(20, 4);
/********************edinica********************/
  lcd.createChar(1, edinica1);
  lcd.createChar(2, edinica2);
  lcd.createChar(3, edinica3);
  lcd.createChar(4, edinica4);
  lcd.createChar(5, edinica5);
  lcd.createChar(6, edinica6);
  lcd.createChar(7, edinica7);
  lcd.createChar(8, edinica8);
/********************The End********************/
 
/********************* Pyat *********************/
  lcd.createChar(9, pyat1);
  lcd.createChar(10, pyat2);
  lcd.createChar(11, pyat3);
  lcd.createChar(12, pyat4);
  lcd.createChar(13, pyat5);
  lcd.createChar(14, pyat6);
  lcd.createChar(15, pyat7);
  lcd.createChar(16, pyat8);
/********************* The End *********************/
 
/**/
 
/**/
}
 
void loop() {
/**/
  lcd.setCursor(19,0);
  lcd.write((uint8_t)16);
  lcd.setCursor(19,1);
  lcd.write((uint8_t)15);
 
  lcd.setCursor(18,0);
  lcd.write((uint8_t)14);
  lcd.setCursor(18,1);
  lcd.write((uint8_t)13);
 
  lcd.setCursor(17,0);
  lcd.write((uint8_t)12);
  lcd.setCursor(17,1);
  lcd.write((uint8_t)11);
 
  lcd.setCursor(16,0);
  lcd.write((uint8_t)10);
  lcd.setCursor(16,1);
  lcd.write((uint8_t)9);
/**/
 
/********************edinica********************/  
  lcd.setCursor(19,2);
  lcd.write((uint8_t)8);
  lcd.setCursor(19,3);
  lcd.write((uint8_t)7);
  
  lcd.setCursor(18,2);
  lcd.write((uint8_t)6);
  lcd.setCursor(18,3);
  lcd.write((uint8_t)5);
  
  lcd.setCursor(17,2);
  lcd.write((uint8_t)4);
  lcd.setCursor(17,3);
  lcd.write((uint8_t)3);
  
  lcd.setCursor(16,2);
  lcd.write((uint8_t)2);
  lcd.setCursor(16,3);
  lcd.write((uint8_t)1);
/******************** The End ********************/
 
 
}

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Если мне не изменяет память, создать можно не более 8 своих символов.

loker95
Offline
Зарегистрирован: 11.02.2017

а как то можно 8 символы в один массив запихать

bwn
Offline
Зарегистрирован: 25.08.2014

andriano пишет:

Если мне не изменяет память, создать можно не более 8 своих символов.

Можно сколько угодно, но не более 8 для одной отображаемой страницы. Так наверно правильнее.

T.Rook
Offline
Зарегистрирован: 05.03.2016

lcd.createChar с нуля начинайте , а не с 1. Т.е. используйте коды не 1...16, а 0...15. Потому как 16-й уже не user-code-symbol

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

loker95
Offline
Зарегистрирован: 11.02.2017

Спасибо за картиночку, это цифры состоит из 3-х столбцов и из 2-х строк (3х2), эти цифры у меня было в предедушем проекте, сечас переделываю ее на вертикальное отображение, точнее 2 столбца и 4 строки (2х4), вот до этого я не знал что LCD больше 8ми символов не принимает, узнал про это в форуме, случайно нету у вас вертикальные отображение цифры.

loker95
Offline
Зарегистрирован: 11.02.2017

наконецто сделал