Здравствуйте!
Эта статья содержит код программы, который использовался в десятой серии сериала «Не спали свою Ардуинку». Его можно использовать для изучения, и или как заготовку для своего будущего меню, а так же ниже я оставил схему подключения TFT дисплея 1.8 160х128 пикселей, к Arduino Mega 2560, чтобы вы сразу смогли собрать и проверить работоспособность кода.
Вот и сам код программы. Он полностью состоит из условий, то есть без использования циклов. Такой способ программирования называют ветвлением, и он более простой в сравнении если бы меню содержало циклы.
Данный код позволяет выводить на TFT дисплей четыре странички меню, взяв его за основу можно изменять количество страничек как в меньшую так и в большую сторону. Каждую из страничек меню можно использовать для вывода различных значений, элементов оформления, да чего угодно.
Данный код написан для платы Arduino Mega, но это не помешает его использовать и для других плат, надо всего лишь указать в коде другие контакты для подключения дисплея к шине SPI.
Можете загрузить его на плату, и собрать все согласно схемы на фото которое ниже.
//Начало скетча
#include "TFT.h"
#include "SPI.h"
TFT TFTscreen = TFT(53, 49, 50);//CS, DC, RESET
int page = 0;
boolean flag = 1;
boolean flag_button = 1;
unsigned long saveMillis = 0;
const int pin_OK = 6;
const int pin_EXIT = 7;
const int pin_UP = 8;
const int pin_DOWN = 9;
void setup()
{
TFTscreen.begin();
TFTscreen.background(0,0,0);
TFTscreen.setTextSize(2);
TFTscreen.stroke(255, 255, 255);
pinMode(pin_OK, INPUT_PULLUP);
pinMode(pin_EXIT, INPUT_PULLUP);
pinMode(pin_UP, INPUT_PULLUP);
pinMode(pin_DOWN, INPUT_PULLUP);
}
void loop() {
if (millis() - saveMillis > 500) { flag_button = 1;}
if(flag_button == 1){
if(digitalRead(pin_DOWN) == LOW){
page++; if(page > 3){ page = 0;}
flag = 1; flag_button = 0; saveMillis = millis();
}
if(digitalRead(pin_UP) == LOW){
page--; if(page < 0){ page = 3;}
flag = 1; flag_button = 0; saveMillis = millis();
}
}
/* if(digitalRead(pin_DOWN)){
page++;
flag = 1; delay(500);
}*/
if(page == 0){
if(flag == 1){
flag = 0;
TFTscreen.background(0,0,0);
TFTscreen.text("PAGE 0", 10, 55);
}
}
if(page == 1){
if(flag == 1){
flag = 0;
TFTscreen.background(0,0,0);
TFTscreen.text("PAGE 1", 10, 55);
}
}
if(page == 2){
if(flag == 1){
flag = 0;
TFTscreen.background(0,0,0);
TFTscreen.text("PAGE 2", 10, 55);
}
}
if(page == 3){
if(flag == 1){
flag = 0;
TFTscreen.background(0,0,0);
TFTscreen.text("PAGE 3", 10, 55);
}
}
}
//Конец скетча
Схема подключения кнопок и SPI TFT дисплея 1.8 160х128 пикселей, к Arduino Mega 2560.