#define pinX A0
#define pinY A1
#include <LiquidCrystal.h> // Подключаем стандартную библиотеку LiquidCrystal
// Инициализируем объект-экран, передаём использованные
// для подключения контакты на Arduino в порядке:
// RS, E, D4, D5, D6, D7
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
const int sel = 2;
int x, y;
bool selPressed;
int last;
char letter;
int letter_num = 65; //по ASCII A-Z от 65 до 90;
int horz = 0;
int vert = 0;
int debounce(int last, int buttonNum){
int current = analogRead(buttonNum);
if(last != current){
delay(5);
current = analogRead(buttonNum);
}
return current;
}
void setup()
{
pinMode(pinX, INPUT);
pinMode(pinY, INPUT);
pinMode(sel, INPUT_PULLUP);
digitalWrite(sel, LOW);
// устанавливаем размер (количество столбцов и строк) экрана
lcd.begin(16, 2);
lcd.cursor();
lcd.setCursor(0, 0);
// Выводим сообщение в первой строчке
lcd.write(letter);
}
void loop()
{
x = debounce(last, pinX);
y = debounce(last, pinY);
selPressed = debounce(last, sel);
selPressed = digitalRead(sel);// == LOW;
x = analogRead(pinX);
y = analogRead(pinY);
if(x>=1020){
if(horz == 0){
horz = 15;
}else{
horz--;
}
}
if(x<=10){
if (horz == 15){
horz = 0;
}else{
horz++;
}
}
if(y>=1020){
if(letter_num == 90){
letter_num = 65;
} else {
letter_num++;
}
}
if(y<=10){
if(letter_num == 65){
letter_num = 90;
}else{
letter_num--;
}
}
if(selPressed == 0){
if(vert == 0){
vert = 1;
} else {
vert = 0;
}
}
lcd.setCursor(horz, vert);
letter = letter_num;
lcd.write(letter);
delay(100);
}