Дисплей 2X16 VFD (Arduino)

Дисплей VDF1602 (16T202DA1E) выполнен на базе вакуумно-люминесцентного индикатора, который может отображать ASCII символы в 2 строки (16 знаков в 1 строке) каждый символ в виде матрицы 5х7 пикселей.

Дисплей 16T202DA1E программно полностью совместим с дисплеем LCD1602 контроллере HD44780, поэтому использует стандартную библиотеку LiquidCrystal которая интегрирована в Arduino IDE.

Для правильной работы базе вакуумно-люминесцентного индикатора требуется два источника питания, это питание сеток и анодов напряжением 12-27 В и питание катода (нити накала) переменным напряжением от 1,2 до 5 В (в зависимости от типа ВЛИ). В дисплее 16T202DA1E все необходимые источники для правильной работы ВЛИ уже встроены в плату, поэтому для питания дисплея Вам понадобится только одно напряжение в 5 В. Так же в отличии от LCD1602 в дисплее 16T202DA1E нет вывода Vo (регулировка контрастности), что делает подключение дисплея к Arduino Nano еще проще.

Распиновка дисплея

Как ранее отмечалось дисплей полностью совместим с библиотекой LiquidCrystal, но в дисплее имеется дополнительно программная регулировка яркости свечения индикатора которую так же можно использовать при помощи библиотеки LiquidCrystal

Ниже показан тестовый скетч который поддерживает ступенчатую регулировку яркости (25, 50, 75, 100 %).

#include <LiquidCrystal.h> /* подключаем встроенную в Arduino IDE библиотеку для дисплея LCD 16x2 */
 
LiquidCrystal lcd(12, 11, 5, 6, 7, 8); /* номер вывода дисплея(вывод Arduino):
                                       RS(12),E(11),D4(5),D5(6),D6(7),D7(8) */
 
 
void setup() {
  lcd.begin(16, 2);// указываем тип дисплея LCD 16X2
  Brightness(100);
  lcd.setCursor(1,0); // положение курсора - нулевая строка, первый символ
  lcd.print("HELLO!!!");// вывод на экран
  delay(1000);
  lcd.noDisplay();
  delay(1000);
  lcd.display();
}
 
void loop() {
  lcd.setCursor(0,0); // положение курсора - нулевая строка, первый символ
  lcd.print("RCL-RADIO.RU");// вывод на экран
  lcd.setCursor(0,1);// положение курсора - первая срока, первый символ
  lcd.print("ARDUINO ");// ввод на экран
 
 
  delay(500);// пауза 500 мс
  for (int n=25;n<=100;n+=25){
  lcd.setCursor(9,1); lcd.print("BR ");lcd.print(n);lcd.print("% ");  
  Brightness(n);delay(1000);
  }
}
 
void Brightness(byte brig){
  switch(brig){
    case 25 : lcd.command(0b00101011);break;
    case 50 : lcd.command(0b00101010);break;
    case 75 : lcd.command(0b00101001);break;
    case 100 : lcd.command(0b00101000);break;
    }
  }

Для регулировки яркости используется дополнительная функция управления дисплеем:

Brightness(byte brig);

Переменная brig  может иметь значение 25, 50, 75 и 100 (% яркости)

 

Форум — http://forum.rcl-radio.ru/viewtopic.php?id=508


Примеры использования дисплея 16T202DA1E

Простые часы DS3231

#include <LiquidCrystal.h> /* подключаем встроенную в Arduino IDE библиотеку для дисплея LCD 16x2 */
#include <Wire.h>
#include <DS3231.h>// http://rcl-radio.ru/wp-content/uploads/2022/08/DS3231.zip
 
LiquidCrystal lcd(12, 11, 5, 6, 7, 8); /* номер вывода дисплея(вывод Arduino):RS(12),E(11),D4(5),D5(6),D6(7),D7(8) */
DS3231 clock;RTCDateTime DateTime;
 
void setup() {
  Wire.begin(); 
  clock.begin();
 // clock.setDateTime(__DATE__, __TIME__); // установка времени по времени компиляции
  lcd.begin(16, 2);// указываем тип дисплея LCD 16X2
  Brightness(25);
}
 
void loop() {
  DateTime=clock.getDateTime();
  int hh = DateTime.hour;
  int mm = DateTime.minute;
  int ss = DateTime.second;
  int dd = DateTime.day;
  int mn = DateTime.month;
  int yy = DateTime.year;
  lcd.setCursor(4,0); 
  lcd.print(hh / 10);lcd.print(hh % 10);lcd.print(":");
  lcd.print(mm / 10);lcd.print(mm % 10);lcd.print(":");
  lcd.print(ss / 10);lcd.print(ss % 10);
  lcd.setCursor(3,1); 
  lcd.print(dd / 10);lcd.print(dd % 10);lcd.print("-");
  lcd.print(mn / 10);lcd.print(mn % 10);lcd.print("-");
  lcd.print(yy);
  delay(200);
}
 
void Brightness(byte brig){
  switch(brig){
    case 25 : lcd.command(0b00101011);break;
    case 50 : lcd.command(0b00101010);break;
    case 75 : lcd.command(0b00101001);break;
    case 100 : lcd.command(0b00101000);break;
    }
  }

Простые часы DS3231 с кнопками коррекции времени

 

#include <LiquidCrystal.h> /* подключаем встроенную в Arduino IDE библиотеку для дисплея LCD 16x2 */
#include <Wire.h>
#include <DS3231.h>// http://rcl-radio.ru/wp-content/uploads/2022/08/DS3231.zip
 
LiquidCrystal lcd(12, 11, 5, 6, 7, 8); /* номер вывода дисплея(вывод Arduino):RS(12),E(11),D4(5),D5(6),D6(7),D7(8) */
DS3231 clock;RTCDateTime DateTime;
 
int menu;
int tic;
 
void setup() {
  Wire.begin(); clock.begin();
  pinMode(2,INPUT_PULLUP); // SET TIME
  pinMode(3,INPUT_PULLUP); // UP
  pinMode(4,INPUT_PULLUP); // DW
 // clock.setDateTime(__DATE__, __TIME__); // установка времени по времени компиляции
  lcd.begin(16, 2);// указываем тип дисплея LCD 16X2
  Brightness(25);
}
 
void loop() {
  DateTime=clock.getDateTime();
  int hh = DateTime.hour;
  int mm = DateTime.minute;
  int ss = DateTime.second;
  int dd = DateTime.day;
  int mn = DateTime.month;
  int yy = DateTime.year;
  lcd.setCursor(4,0); 
  if(tic>0 && menu==1){lcd.print("  ");}else{lcd.print(hh / 10);lcd.print(hh % 10);}lcd.print(":");
  if(tic>0 && menu==2){lcd.print("  ");}else{lcd.print(mm / 10);lcd.print(mm % 10);}lcd.print(":");
  if(tic>0 && menu==3){lcd.print("  ");}else{lcd.print(ss / 10);lcd.print(ss % 10);}
  lcd.setCursor(3,1); 
  if(tic>0 && menu==4){lcd.print("  ");}else{lcd.print(dd / 10);lcd.print(dd % 10);}lcd.print("-");
  if(tic>0 && menu==5){lcd.print("  ");}else{lcd.print(mn / 10);lcd.print(mn % 10);}lcd.print("-");
  if(tic>0 && menu==6){lcd.print("    ");}else{lcd.print(yy);}
 
  if(digitalRead(2)==LOW){menu++;if(menu>6){menu=0;}}
 
  if(menu==1){
    if(digitalRead(3)==LOW){ hh++;if(hh>23){hh=23;}clock.setDateTime(yy, mn, dd, hh, mm, ss);delay(200);}
    if(digitalRead(4)==LOW){ hh--;if(hh<0){hh=0;}clock.setDateTime(yy, mn, dd, hh, mm, ss);delay(200);}
    }
  if(menu==2){
    if(digitalRead(3)==LOW){ mm++;if(mm>59){mm=59;}clock.setDateTime(yy, mn, dd, hh, mm, ss);delay(200);}
    if(digitalRead(4)==LOW){ mm--;if(mm<0){mm=0;}clock.setDateTime(yy, mn, dd, hh, mm, ss);delay(200);}
    }  
  if(menu==3){
    if(digitalRead(3)==LOW){ ss=0;clock.setDateTime(yy, mn, dd, hh, mm, ss);delay(200);}
    if(digitalRead(4)==LOW){ ss=0;clock.setDateTime(yy, mn, dd, hh, mm, ss);delay(200);}
    } 
  if(menu==4){
    if(digitalRead(3)==LOW){ dd++;if(dd>31){dd=31;}clock.setDateTime(yy, mn, dd, hh, mm, ss);delay(200);}
    if(digitalRead(4)==LOW){ dd--;if(dd<0){dd=0;}clock.setDateTime(yy, mn, dd, hh, mm, ss);delay(200);}
    }  
  if(menu==5){
    if(digitalRead(3)==LOW){ mn++;if(mn>12){mn=12;}clock.setDateTime(yy, mn, dd, hh, mm, ss);delay(200);}
    if(digitalRead(4)==LOW){ mn--;if(mn<0){mn=0;}clock.setDateTime(yy, mn, dd, hh, mm, ss);delay(200);}
    }   
  if(menu==6){
    if(digitalRead(3)==LOW){ yy++;if(yy>2050){yy=2050;}clock.setDateTime(yy, mn, dd, hh, mm, ss);delay(200);}
    if(digitalRead(4)==LOW){ yy--;if(yy<2022){yy=2022;}clock.setDateTime(yy, mn, dd, hh, mm, ss);delay(200);}
    }  
  tic++;if(tic>1){tic=0;}
 
  delay(200);
}
 
void Brightness(byte brig){
  switch(brig){
    case 25 : lcd.command(0b00101011);break;
    case 50 : lcd.command(0b00101010);break;
    case 75 : lcd.command(0b00101001);break;
    case 100 : lcd.command(0b00101000);break;
    }
  }

Простые часы DS3231 с большими цифрами и кнопками коррекции времени

#include <LiquidCrystal.h> /* подключаем встроенную в Arduino IDE библиотеку для дисплея LCD 16x2 */
#include <Wire.h>
#include <DS3231.h>// http://rcl-radio.ru/wp-content/uploads/2022/08/DS3231.zip
 
LiquidCrystal lcd(12, 11, 5, 6, 7, 8); /* номер вывода дисплея(вывод Arduino):RS(12),E(11),D4(5),D5(6),D6(7),D7(8) */
DS3231 clock;RTCDateTime DateTime;
 
int menu;
int tic;
 byte v1[8] = {0x07,0x07,0x07,0x07,0x07,0x07,0x07,0};
 byte v2[8] = {0x07,0x07,0x00,0x00,0x00,0x00,0x00,0};      
 byte v3[8] = {0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0};
 byte v4[8] = {0x1F,0x1F,0x00,0x00,0x00,0x00,0x1F,0};
 byte v5[8] = {0x1C,0x1C,0x00,0x00,0x00,0x00,0x1C,0};
 byte v6[8] = {0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0};
 byte v7[8] = {0x00,0x00,0x00,0x00,0x00,0x00,0x07,0};
 byte v8[8] = {0x1F,0x1F,0x00,0x00,0x00,0x00,0x00,0};
 byte d1,d2,d3,d4,d5,d6,e1,e2,e3,a[6],x;
 
void setup() {
  Wire.begin(); clock.begin();
  lcd.createChar(1, v1);lcd.createChar(2, v2);lcd.createChar(3, v3);lcd.createChar(4, v4);
  lcd.createChar(5, v5);lcd.createChar(6, v6);lcd.createChar(7, v7);lcd.createChar(8, v8);
  pinMode(2,INPUT_PULLUP); // SET TIME
  pinMode(3,INPUT_PULLUP); // UP
  pinMode(4,INPUT_PULLUP); // DW
 // clock.setDateTime(__DATE__, __TIME__); // установка времени по времени компиляции
  lcd.begin(16, 2);// указываем тип дисплея LCD 16X2
  Brightness(25);
}
 
void loop() {
  DateTime=clock.getDateTime();
  int hh = DateTime.hour;
  int mm = DateTime.minute;
  int ss = DateTime.second;
  int dd = DateTime.day;
  int mn = DateTime.month;
  int yy = DateTime.year;
 
  if(menu==0){
     a[0]=hh/10;
     a[1]=hh%10;
     a[2]=mm/10;
     a[3]=mm%10;
   for(x=0;x<4;x++){
    switch(x){
        case 0: e1=0;e2=1,e3=2;break;
        case 1: e1=4,e2=5,e3=6;break;
        case 2: e1=8,e2=9,e3=10;break;
        case 3: e1=11,e2=12,e3=13;break;
 
   }digit();}
   lcd.setCursor(7,1);lcd.print(".");lcd.setCursor(7,0);lcd.print(" ");
   lcd.setCursor(14,1);lcd.print(ss / 10);lcd.print(ss % 10);
  }
 
  if(menu>0){
  lcd.setCursor(4,0); 
  if(tic>0 && menu==1){lcd.print("  ");}else{lcd.print(hh / 10);lcd.print(hh % 10);}lcd.print(":");
  if(tic>0 && menu==2){lcd.print("  ");}else{lcd.print(mm / 10);lcd.print(mm % 10);}lcd.print(":");
  if(tic>0 && menu==3){lcd.print("  ");}else{lcd.print(ss / 10);lcd.print(ss % 10);}
  lcd.setCursor(3,1); 
  if(tic>0 && menu==4){lcd.print("  ");}else{lcd.print(dd / 10);lcd.print(dd % 10);}lcd.print("-");
  if(tic>0 && menu==5){lcd.print("  ");}else{lcd.print(mn / 10);lcd.print(mn % 10);}lcd.print("-");
  if(tic>0 && menu==6){lcd.print("    ");}else{lcd.print(yy);}
  }
 
  if(digitalRead(2)==LOW){menu++;if(menu>6){menu=0;}lcd.clear();}
 
  if(menu==1){
    if(digitalRead(3)==LOW){ hh++;if(hh>23){hh=23;}clock.setDateTime(yy, mn, dd, hh, mm, ss);delay(200);}
    if(digitalRead(4)==LOW){ hh--;if(hh<0){hh=0;}clock.setDateTime(yy, mn, dd, hh, mm, ss);delay(200);}
    }
  if(menu==2){
    if(digitalRead(3)==LOW){ mm++;if(mm>59){mm=59;}clock.setDateTime(yy, mn, dd, hh, mm, ss);delay(200);}
    if(digitalRead(4)==LOW){ mm--;if(mm<0){mm=0;}clock.setDateTime(yy, mn, dd, hh, mm, ss);delay(200);}
    }  
  if(menu==3){
    if(digitalRead(3)==LOW){ ss=0;clock.setDateTime(yy, mn, dd, hh, mm, ss);delay(200);}
    if(digitalRead(4)==LOW){ ss=0;clock.setDateTime(yy, mn, dd, hh, mm, ss);delay(200);}
    } 
  if(menu==4){
    if(digitalRead(3)==LOW){ dd++;if(dd>31){dd=31;}clock.setDateTime(yy, mn, dd, hh, mm, ss);delay(200);}
    if(digitalRead(4)==LOW){ dd--;if(dd<0){dd=0;}clock.setDateTime(yy, mn, dd, hh, mm, ss);delay(200);}
    }  
  if(menu==5){
    if(digitalRead(3)==LOW){ mn++;if(mn>12){mn=12;}clock.setDateTime(yy, mn, dd, hh, mm, ss);delay(200);}
    if(digitalRead(4)==LOW){ mn--;if(mn<0){mn=0;}clock.setDateTime(yy, mn, dd, hh, mm, ss);delay(200);}
    }   
  if(menu==6){
    if(digitalRead(3)==LOW){ yy++;if(yy>2050){yy=2050;}clock.setDateTime(yy, mn, dd, hh, mm, ss);delay(200);}
    if(digitalRead(4)==LOW){ yy--;if(yy<2022){yy=2022;}clock.setDateTime(yy, mn, dd, hh, mm, ss);delay(200);}
    }  
  tic++;if(tic>1){tic=0;}
 
  delay(200);
}
 
void digit(){
  switch(a[x]){
    case 0: d1=1,d2=8,d3=6,d4=1,d5=3,d6=6;break;
    case 1: d1=32,d2=2,d3=6,d4=32,d5=32,d6=6;break;
    case 2: d1=2,d2=8,d3=6,d4=1,d5=4,d6=5;break;
    case 3: d1=2,d2=4,d3=6,d4=7,d5=3,d6=6;break;
    case 4: d1=1,d2=3,d3=6,d4=32,d5=32,d6=6;break;
    case 5: d1=1,d2=4,d3=5,d4=7,d5=3,d6=6;break;
    case 6: d1=1,d2=4,d3=5,d4=1,d5=3,d6=6;break;
    case 7: d1=1,d2=8,d3=6,d4=32,d5=32,d6=6;break;
    case 8: d1=1,d2=4,d3=6,d4=1,d5=3,d6=6;break;
    case 9: d1=1,d2=4,d3=6,d4=7,d5=3,d6=6;break;
    case 10:d1=150,d2=150,d3=150,d4=150,d5=150,d6=150;break;
    }
lcd.setCursor(e1,0);lcd.write((uint8_t)d1);
lcd.setCursor(e2,0);lcd.write((uint8_t)d2);lcd.setCursor(e3,0);lcd.write((uint8_t)d3);lcd.setCursor(e1,1);
lcd.write((uint8_t)d4);lcd.setCursor(e2,1);lcd.write((uint8_t)d5);lcd.setCursor(e3,1);lcd.write((uint8_t)d6);}
 
void Brightness(byte brig){
  switch(brig){
    case 25 : lcd.command(0b00101011);break;
    case 50 : lcd.command(0b00101010);break;
    case 75 : lcd.command(0b00101001);break;
    case 100 : lcd.command(0b00101000);break;
    }
  }

Простые часы DS3231 + BMP280 (с кнопками коррекции времени)

Обратите внимание на то, что датчик давления BMP280 может иметь I2C адрес отличающийся от указанного в библиотеке, для определения адреса и корректировке библиотеки прочитайте статью  http://rcl-radio.ru/?p=47046. Так же датчик может иметь на плате стабилизатор 3,3 В и имеет питание 5 В.

#include <LiquidCrystal.h> /* подключаем встроенную в Arduino IDE библиотеку для дисплея LCD 16x2 */
#include <Wire.h>
#include <DS3231.h>// http://rcl-radio.ru/wp-content/uploads/2022/08/DS3231.zip
#include <Adafruit_BMP280.h> // http://rcl-radio.ru/wp-content/uploads/2018/08/Adafruit_BMP280.zip
#include <Adafruit_Sensor.h> // http://rcl-radio.ru/wp-content/uploads/2018/08/Adafruit_Sensor.zip 
LiquidCrystal lcd(12, 11, 5, 6, 7, 8); /* номер вывода дисплея(вывод Arduino):RS(12),E(11),D4(5),D5(6),D6(7),D7(8) */
DS3231 clock;
RTCDateTime DateTime;
Adafruit_BMP280 bmp;
 
unsigned long times=10000;
 
 
void setup() {
  Wire.begin(); 
  clock.begin();
  bmp.begin();
 // clock.setDateTime(__DATE__, __TIME__); // установка времени по времени компиляции
  lcd.begin(16, 2);// указываем тип дисплея LCD 16X2
  Brightness(25);
}
 
void loop() {
  DateTime=clock.getDateTime();
  int hh = DateTime.hour;
  int mm = DateTime.minute;
  int ss = DateTime.second;
  int dd = DateTime.day;
  int mn = DateTime.month;
  int yy = DateTime.year;
  lcd.setCursor(0,0); 
  lcd.print(hh / 10);lcd.print(hh % 10);lcd.print(":");
  lcd.print(mm / 10);lcd.print(mm % 10);lcd.print(":");
  lcd.print(ss / 10);lcd.print(ss % 10);
  lcd.setCursor(0,1); 
  lcd.print(dd / 10);lcd.print(dd % 10);lcd.print("-");
  lcd.print(mn / 10);lcd.print(mn % 10);lcd.print("-");
  lcd.print(yy-2000);
 /// bmp280 
 
  if(millis()-times>10000){times=millis();lcd.setCursor(10,0);lcd.print(bmp.readTemperature(),1);lcd.print(char(223)); lcd.print("C ");
  lcd.setCursor(10,1);lcd.print(bmp.readPressure()/133.3224);
  }
 
  delay(200);
}
 
void Brightness(byte brig){
  switch(brig){
    case 25 : lcd.command(0b00101011);break;
    case 50 : lcd.command(0b00101010);break;
    case 75 : lcd.command(0b00101001);break;
    case 100 : lcd.command(0b00101000);break;
    }
  }

Индикатор уровня звукового сигнала (VU метр)

#define GAIN 14 // усиление 0...50
#define STEP 2  // плавность полос 0...20
#define RL 0    // RL - горизонт, вертикаль 0...1
 
#include <LiquidCrystal.h> /* подключаем встроенную в Arduino IDE библиотеку для дисплея LCD 16x2 */
#include <Wire.h>
LiquidCrystal lcd(12, 11, 5, 6, 7, 8); /* номер вывода дисплея(вывод Arduino):RS(12),E(11),D4(5),D5(6),D6(7),D7(8) */
 
  byte z,z0,z1;
  int ur,ul,urr,ull,urrr,ulll;
  int x,i,u_maxr,u_maxl;
  int u_l0[20],u_r0[20];
 
 
void setup() {
  byte znak_r[8]={0b00000,0b00000,0b11111,0b00101,0b00101,0b11010,0b00000,0b00000};
  byte znak_l[8]={0b00000,0b00000,0b11111,0b10000,0b10000,0b10000,0b00000,0b00000};
 
  byte a1[8] = {0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
  byte a2[8] = {0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
  byte a3[8] = {0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000};
  byte a4[8] = {0b0011,0b0011,0b0011,0b0011,0b0011,0b0011,0b0011,0b00000};
  byte a5[8] = {0b11000,0b11000,0b11000,0b11000,0b11000,0b11000,0b11000,0b00000};
  lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);lcd.createChar(6,a4);lcd.createChar(7,a5);
 
  lcd.createChar(4,znak_r); 
  lcd.createChar(5,znak_l);
  lcd.begin(16, 2);// LCD 16X2
 // analogReference(INTERNAL);  // если очень маленький уровень сигнала
  pinMode(A0,INPUT);// A0 - аналоговый вход R
  pinMode(A1,INPUT);// A1 - аналоговый вход L
  Brightness(75);
}
 
void loop() {
 
  urr = log(analogRead(0))*GAIN;if(urr>41){urr=41;}
  ull = log(analogRead(1))*GAIN;if(ull>41){ull=41;}
 
  if(RL==0){lcd.setCursor(0,0);lcd.write((uint8_t)4);lcd.setCursor(0,1);lcd.write((uint8_t)5);}
  if(RL==1){lcd.setCursor(0,1);lcd.print("L");lcd.setCursor(0,0);lcd.print("R");}
 
   if(urr<ur){ur=ur-1;delay(STEP);}else{ur = urr;}
  for(z=0,z0=0,z1=0;z<=ur;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+1,1);lcd.write((uint8_t)0);lcd.setCursor(z0+2,1);if(ur<39){lcd.print(" ");}}}
   if(z1==3){lcd.setCursor(z0+1,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+1,1);lcd.write((uint8_t)2);}
 
   if(ull<ul){ul=ul-1;delay(STEP);}else{ul = ull;}
  for(z=0,z0=0,z1=0;z<=ul;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+1,0);lcd.write((uint8_t)0);lcd.setCursor(z0+2,0);if(ul<39){lcd.print(" ");}}}
   if(z1==3){lcd.setCursor(z0+1,0);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+1,0);lcd.write((uint8_t)2);}
 
//////////////////////////////////////////////////////////
 
i++;if(i<19){u_l0[i]=abs(ull);u_r0[i]=abs(urr);}else{i=1;}
  if(i==18){u_maxr=0;u_maxl=0;
    for(x=1;x<=15;x++){
      u_maxl=max(u_maxl,u_l0[x]);
      u_maxr=max(u_maxr,u_r0[x]);}}
 
  if(u_maxl<ulll){ulll=ulll-1;}else{ulll = u_maxl;}
  if(u_maxr<urrr){urrr=urrr-1;}else{urrr = u_maxr;}
 
  if(u_maxl<=ul){u_maxl=ull+1;} 
  if(u_maxr<=ur){u_maxr=urr+1;}
 
  lcd.setCursor(ulll/3+1,0);if(ulll/3>2){if(ulll/10%2==1){lcd.write((uint8_t)7);}if(ulll/10%2==0){lcd.write((uint8_t)6);}}lcd.print("     ");
  lcd.setCursor(urrr/3+1,1);if(urrr/3>2){if(urrr/10%2==1){lcd.write((uint8_t)7);}if(urrr/10%2==0){lcd.write((uint8_t)6);}}lcd.print("     "); 
  delay(3);
}
 
void Brightness(byte brig){
  switch(brig){
    case 25 : lcd.command(0b00101011);break;
    case 50 : lcd.command(0b00101010);break;
    case 75 : lcd.command(0b00101001);break;
    case 100 : lcd.command(0b00101000);break;
    }
  }

 

Добавить комментарий

Войти с помощью: