Подскажите, как сделать таймер на TFT дисплее.

Elvir931
Offline
Зарегистрирован: 14.09.2016

Всем привет! Подскажите пожалуйста, как сделать таймер на TFT дисплее (3,95 дюйма).

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

1. Взять дисплей
2. Сесть за стол
3. Почесать репу
4. и сделать.

Elvir931
Offline
Зарегистрирован: 14.09.2016

Хороший совет! Я новечок, хотелось бы подробных описаний!

Elvir931
Offline
Зарегистрирован: 14.09.2016

Просто пока мне сложновато совместить это

#include <memorysaver.h>
#include <UTFT.h>
extern uint8_t SmallFont[];                            // подключаем маленький шрифт
extern uint8_t BigFont[];                              // подключаем большой шрифт
extern uint8_t SevenSegNumFont[];                      // подключаем цифровой шрифт
 
 UTFT myGLCD(TFT395UNO, A2,A1,A3,A4,A0);             // тип дисплея 3,95 UNO  (480x320 chip ILI9327)
 
void setup()
{
  myGLCD.InitLCD();                                    // инициируем дисплей
}
void loop()
{
 
  myGLCD.clrScr();                                     // стираем всю информацию с дисплея
  myGLCD.setFont(SmallFont);                           // устанавливаем маленький шрифт
  myGLCD.setColor(VGA_WHITE);                          // устанавливаем цвет текста
  myGLCD.print("iarduino.ru | SmallFont", CENTER, 50); // выводим текст на дисплей
  myGLCD.setFont(BigFont);                             // устанавливаем большой шрифт
  myGLCD.setColor(VGA_BLUE);                           // устанавливаем цвет текста
  myGLCD.print("BigFont", CENTER, 100);                // выводим текст на дисплей
  myGLCD.print("iarduino.ru", CENTER, 115);            // выводим текст на дисплей
  myGLCD.setFont(SevenSegNumFont);                     // устанавливаем цифровой шрифт
  myGLCD.setColor(VGA_FUCHSIA);                        // устанавливаем цвет текста
  myGLCD.print("1234567890", CENTER, 150);             // выводим текст на дисплей
  delay(20000);
}
Elvir931
Offline
Зарегистрирован: 14.09.2016

С этим

volatile unsigned long start = 0; //переменная для хранения начального значения millis
02 volatile unsigned long stop = 0; //переменная для хранения полученного промежутка времени
03 volatile int once = 0; //переменная для игнорирования повторного нажатия кнопки
04 unsigned long prev_ms = 0; //переменная для создания отрезков, чтобы не использовать delay
05 volatile int state = LOW;
06  
07 void setup() {
08 //нужно настроить порты на чтение, читаем как использовать кнопки, как настраивать порты.
09 pinMode(2, INPUT);
10 digitalWrite(2, HIGH);
11 pinMode(3, INPUT);
12 digitalWrite(3, HIGH);
13 attachInterrupt(0, begin, FALLING);
14 attachInterrupt(1, end, FALLING);
15 Serial.begin(9600);
16 }
17  
18 void loop() {
19     if ((millis() - prev_ms) >  500) { //вывод данных каждые 500мс
20         prev_ms = millis();
21         Serial.println(stop);
22     }
23 }
24  
25 void begin() {
26     if (once == 0) { //проверяем, нажималась ли уже кнопка старт
27         start = millis(); //получаем текущее значение millis
28         once = 1; //ставим метку "старт был нажат"
29         stop = 0; //обнуляем предыдущий замер, а можно и не обнулять :)
30     }
31 }
32  
33 void end() {
34     if (once == 1) { //проверяем, нажималась ли кнопка старт
35         stop = millis() - start; //вычисляем промежуток
36         once = 0; //убираем метку
37     }
38 }

 

Elvir931
Offline
Зарегистрирован: 14.09.2016

Хоть подскажите, в правильном ли я направлении.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А чего его совмещать? Сетапы просто слиь в один. А Лупе второго скетча вместо Serial.print Вставить преобразование к строке (ltoa называется) и потом myGLCD.print получившейся строки. Вот и всё.

Elvir931
Offline
Зарегистрирован: 14.09.2016

Спасибо большое! Попробую)