Симулятор UnoArduSim 10 серия. Простое меню для TFT дисплея на Arduino.

Здравствуйте!

Эта статья содержит код программы, который использовался в десятой серии сериала «Не спали свою Ардуинку». Его можно использовать для изучения, и или как заготовку для своего будущего меню, а так же ниже я оставил схему подключения TFT дисплея 1.8 160х128 пикселей, к Arduino Mega 2560, чтобы вы сразу смогли собрать и проверить работоспособность кода.

Простое меню на Arduino с TFT дисплеем 1.8 160х128 пикселей.

Вот и сам код программы. Он полностью состоит из условий, то есть без использования циклов. Такой способ программирования называют ветвлением, и он более простой в сравнении если бы меню содержало циклы.

Данный код позволяет выводить на 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.

Схема подключения кнопок и SPI TFT дисплея 1.8 160х128 пикселей, к Arduino Mega 2560



Подробное видео “ Симулятор UnoArduSim 10 серия. Простое меню для TFT дисплея на Arduino.”


Симулятор UnoArduSim 10 серия. Простое меню для TFT дисплея на Arduino.