/*
Эта программа - демонстрация работы LCD-дисплея 1602.
Для запуска необходимо запустить симуляцию. Далее программа
использует заявленный код для перемещения пикселом по экрану.
*/
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
const int M = 16;
const int N = 2;
byte pixel[M-N][M/2] = {{B10000, B00000, B00000, B00000, B00000, B00000, B00000, B00001},
{B01000, B00000, B00000, B00000, B00000, B00000, B00000, B00010},
{B00100, B00000, B00000, B00000, B00000, B00000, B00000, B00100},
{B00010, B00000, B00000, B00000, B00000, B00000, B00000, B01000},
{B00001, B00000, B00000, B00000, B00000, B00000, B00000, B10000},
{B00001, B00000, B00000, B00000, B00000, B00000, B00000, B10000},
{B00000, B00001, B00000, B00000, B00000, B00000, B10000, B00000},
{B00000, B00000, B00001, B00000, B00000, B10000, B00000, B00000},
{B00000, B00000, B00000, B00001, B10000, B00000, B00000, B00000},
{B00000, B00000, B00000, B10000, B00001, B00000, B00000, B00000},
{B00000, B00000, B10000, B00000, B00000, B00001, B00000, B00000},
{B00000, B10000, B00000, B00000, B00000, B00000, B00001, B00000},
{B10000, B00000, B00000, B00000, B00000, B00000, B00000, B00001}};
void setup() {
lcd.begin(16, 2);
lcd.clear();
Serial.begin(9600);
}
int i = 0;
int j = 0;
int k = 0;
bool flag = false;
void loop() {
lcd.createChar(k, pixel[k]);
lcd.setCursor(i, j);
lcd.write(char(k));
k++;
if (k == M - N) {
lcd.clear();
k = 0;
if (flag == true) {
i--;
if (i == 0) {
j = 0;
flag = false;
}
} else {
i++;
}
if (i == M - 1) {
j++;
flag = true;
if (j == N) {
i = 0;
j = 0;
}
}
}
delay(30);
}