LCD1602 большие цифры

Изменил немного исходник этого титанического автора.



…но нет гармонии.

Это если нумератор этажа в лифте делать :slight_smile:

Как нет?

Вот, пожалуйста:

Так нет, 4 и 7 не тумбятся.

Фломастеры :slightly_smiling_face: А так было бы достаточно.

Всё таки 3 смотрится не очень, пришлось изменить.

Я понимаю, спортивный интерес и все такое, но, по-моему, это попытка впихнуть невпихуамое.

Ну не так оказывается всё грустно. Да не больше 8 знакомест своих, НО!, это же одновременно на дисплее. То-есть с теми же часами по классике 6 цифр через точки - можно напридумывать тем по стилю-размерам, забить данные в прогмем и просто их кнопкой перещёлкивать.


Отдельная тема русский текст. Впихнуть все буквы, а выводить бегущей строкой на 8 символов. Правда не пробовал, в симуляторе, насколько быстро бежит строка?

Взять LCD с русским шрифтом.

На китайцах, особенно на инверсных, достаточно неприятно(писал про шлейф).

Ну вот :), а в симуляторе хелло бодро бегает.

Не, тут другой принцип, не надо вшивать буквы. Буквы вообще не важны. Это графическая бегущая строка, она выводит как бы картинку, не важен алфавит и язык.
…не могу это кодом изобразить :slight_smile:


Вот мой вариант предварительный гигацифр на 6 знакомест. Если видите лучше, укажите.

Попробуйте вручную(на листке ручкой) написать ноль, шесть и девять. :slightly_smiling_face: Но, может это ИМХОшное, а не вдолбленное :roll_eyes: Это то, что я вкладываю в понятие читабельность.

Страдальцы)

А чего удалят?
Люблю я просто комбинации перебирать…и чётки.
Кстати


Можно попробовать. Только в симуляторе дисплей не ворочается ведь?

А я по принципу отбежал и смотришь, различаешь цифры - хорошо значит.

Спойлер
//макет часов LCD1602
#include <Wire.h>
#include "LiquidCrystal_I2C.h"

// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);

byte fragm_1[] = {
  B11000,
  B10100,
  B10010,
  B10010,
  B10010,
  B10010,
  B10100,
  B11000 
};
byte fragm_2[] = {
  B00011,
  B00101,
  B01001,
  B01001,
  B01001,
  B01001,
  B00101,
  B00011  
};
byte fragm_3[] = {
  B01111,
  B01001,
  B01001,
  B01001,
  B01001,
  B01001,
  B01001,
  B01111
};
byte fragm_4[] = {
  B11111,
  B10001,
  B11111,
  B00000,
  B00000,
  B00000,
  B00000,
  B11111
};
byte fragm_5[] = {
  B11111,
  B01101,
  B00011,
  B00000,
  B00000,
  B00000,
  B00000,
  B00000 
};
byte fragm_6[] = {
  B11111,
  B00000,
  B00000,
  B00000,
  B00000,
  B11111,
  B10001,
  B11111 
};
byte fragm_7[] = {
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
  B00011,
  B01101,
  B11111  
};
byte fragm_8[] = {
  B11000,
  B10100,
  B11100,
  B01100,
  B00100,
  B00000,
  B00000,
  B00000 
};
 struct { 
    byte *bitmap;
  }
 fragm_1_8[]={fragm_1,fragm_2,
              fragm_3,fragm_4,
              fragm_5,fragm_6,
              fragm_7,fragm_8,
              };
  byte perehodnik[]={1,4,0,1,6,0,      //0
                     6,2,254,254,2,254,//1
                     4,3,0,2,5,6,      //2 
                     4,3,0,6,5,0,      //3
                     1,6,2,254,254,2,  //4
                     2,3,4,6,5,0,      //5
                     1,3,7,1,5,0,      //6
                     4,3,0,254,1,254,  //7
                     1,3,0,1,5,0,      //8
                     1,3,0,6,5,0       //9 
                     }; 
int tschas=23;//
int minuta=50;//
int sekundi=0;//                                
///
void setup() {
  lcd.init();
  lcd.backlight();
 for(byte i=0;i<8;i++){
 lcd.createChar(i,fragm_1_8[i].bitmap );
  }
 //исходная отрисовка 
zifra(1,0);zifra(3,3); 
lcd.setCursor(6, 0);lcd.write(161);lcd.setCursor(6, 1);lcd.write(161);
zifra(5,7);zifra(9,10);
lcd.setCursor(13, 1);lcd.write(58);
lcd.setCursor(14, 1);lcd.write(4+48);
lcd.setCursor(15, 1);lcd.write(7+48);
}

void loop() {
 sekundi++;
if(sekundi>=60||sekundi<0){sekundi=0;minuta++;}
if(minuta>=60||minuta<0){minuta=0;tschas++;}
if(tschas>=24||tschas<0){tschas=0;}
zifra(tschas/10,0);//
zifra(tschas%10,3);//
zifra(minuta/10,7);//
zifra(minuta%10,10);//
lcd.setCursor(14, 1);lcd.write(sekundi/10+48);
lcd.setCursor(15, 1);lcd.write(sekundi%10+48);
delay(1000);//подбор опытным путём  
  } 

///////////////////////
void zifra(byte zif,byte poz){// функция вывода цифры по позиции
lcd.setCursor(poz, 0);
lcd.write(perehodnik[6*zif]);
lcd.setCursor(poz+1, 0);
lcd.write(perehodnik[6*zif+1]);
lcd.setCursor(poz+2, 0);
lcd.write(perehodnik[6*zif+2]);
lcd.setCursor(poz, 1);
lcd.write(perehodnik[6*zif+3]);
lcd.setCursor(poz+1, 1);
lcd.write(perehodnik[6*zif+4]);
lcd.setCursor(poz+2, 1);
lcd.write(perehodnik[6*zif+5]);    
}
///////////////////////

А какое? Я вот такое нашёл, но не очень оно аналогично LCD 1602, ещё меньше в размере, а стоит дороже.


Не нашёл в симуляторе кнопки поворот рабочего поля на 90 градусов.
Немного пузатые получаются, хотя модно вроде так



…надо наверное на 3 знакоместа нарисовать цифры.

@lilik чисто эстетическая просьба - не дублируйте линий одновременно в двух знакоместах - вот как тут


на это уродство смотреть невозможно


Не знаю, есть в них что -то из 70-х, стекло, алюминий, бетон, прямые углы.
…вот вариант без дубляжа на 3 знакоместа.

с буквой Хэ из вшитого набора.

Вообще конечно тема самописных символов весьма спорна с точки зрения читабельности - эстетики, но границ совершенства нет. Вот в журнале нашёл вариант кириллицы на семи сегментные индикаторы


а вот тема больших русских букв для 1602
Крупный русский шрифт на ЖК дисплее LCD1602 | Аппаратная платформа Arduino