Подключение Дисплея TFT LCD with HX8347

Andreyko
Offline
Зарегистрирован: 15.01.2017

Добрый  день всем  форумчанам.  Вот   зарегистрировался,  принимайте в ряды Ардуинщиков.

 

Несколько дней пытаюсь  подружить  дисплей, но  он   гораздо сложнее  тех что  идут в мастер кит.

Так вот сегодня   минимизировал код и сейчас  можно написать   Строку.

Код ниже.

 

Меня интересует несколько вопросов.

1) Строка void setup(void)     что она  означает я знаю, но зачем в нутри скобок указан void ?

2) Сейчас экран  просто  одет на ардуинку через Шилд.,   можт  будет лучше если   пропаять каждую ножку на шлейф, и подключить только то что надо?

3) Что  делает буква F   Serial.println(F("TFT LCD test"));

Если ставлю  B то не работат, не ясно.

 4)   tft.println("Goods Baay!");   Выводит  на  экран строку.

Как вывести разные данные,    например еще одну  строку, либо како нибудь таймер.

Создать unsigned long test2() {  

Это пока  для начала. Спасибо. 

 

#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_TFTLCD.h> // Hardware-specific library

#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_CD A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0

#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin

#define   BLACK   0x0000
#define   BLUE    0x001F
#define   RED     0xF800
#define   GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
 
void setup(void) {
  Serial.begin(9600);
  Serial.println(F("TFT LCD test"));
 
   tft.reset();
  uint16_t identifier = 0x7575;
 tft.begin(identifier);

//.................... Rotate screen 1=90. 2=180. 3=270 ...............................
  tft.setRotation(1);  //Указываем ориентцию текста на экране. Вертикально слева справа, горизонтально сверху с низу. от 1 и до 4 или больше
//.....................................................................................
 // Serial.print(F("Text"));//
 Serial.println(test());
 // delay(300); //Время обновления
}
 
 
 void loop(void) {}

unsigned long test() {
  tft.fillScreen(BLACK);
  unsigned long start = micros();
  tft.setCursor(0, 0);
  tft.setTextColor(GREEN);  
  tft.setTextSize(3);
  tft.println("Goods Baay!");
  return micros() - start;
}



 

 

 
 
 
 
Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

1) - если знаете, что значит, знаете, зачем и void в скобках. Подскажу, отсутствие аргументов функции.

2) Не понял вопроса

3) Макрос F помещает строку во флеш-память, она не будет занимать место в оперативке. Экономия немногочисленных объёмов ОЗУ.

4) 

    4.1) Не понял трудности - используйте уже известную вам функцию вывода строки. Вывести таймер - не понял

    4.2)

Цитата:
 Создать unsigned long test2() {  
Что вы хотели этим спросить?

Andreyko
Offline
Зарегистрирован: 15.01.2017

Yarik.Yar пишет:

1) - если знаете, что значит, знаете, зачем и void в скобках. Подскажу, отсутствие аргументов функции.

2) Не понял вопроса

3) Макрос F помещает строку во флеш-память, она не будет занимать место в оперативке. Экономия немногочисленных объёмов ОЗУ.

4) 

    4.1) Не понял трудности - используйте уже известную вам функцию вывода строки. Вывести таймер - не понял

    4.2)

Цитата:
 Создать unsigned long test2() {  
Что вы хотели этим спросить?

 

 

1)   Строка обычно идет  пустой void setup()  

Зачем добавлен Аргумент void  в скобки?

Может  есть где почитать  более подробно.

 

2)  У меня  есть экран. Он такой  https://forum.arduino.cc/index.php?topic=264068.0

Тоесть  с  платой,   Данная плата  одевается на ардуино, и используется.

При этом все пины  заняты платой. Вот я и спросил, не  будет ли  более гибким, использование данной платы, через шлейф, подсоеденив только нужные  ножки, к ардуино.

 

3) Спасибо понял.

4) Примерно понял, можно так.

Вывод строки 1
  tft.setTextColor(GREEN); 
     tft.setCursor(2,35);
  tft.println("Hello");
 
Вывод строки 2
   tft.setTextColor(MAGENTA);
   tft.setCursor(2,65);
  tft.println("World");
 
Хотя  возможно есть  более гибкий код.

 

По таймеру, я так понимаю   с помощью Скетча таймер не  сделать?

Необходимо Модуль для ардуинки?

 

Спасибо.

 

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

void вместо пустых скобок - признак аккуратно написанного кода по всем стандартам. Писать можно и без него, тут уж как хочется, но это - самое комильфо. Почитать подробнее - http://people.toiit.sgu.ru/Sinelnikov/PT/C/Kern_Ritch.pdf .

Можно вынести и на шлейфе, но есть риск помех на проводах.

Поясните, что вы понимаете под словом таймер (и зачем его с большой буквы пишете?).

 

TD27T
Offline
Зарегистрирован: 08.04.2016

А за счет чего будет экономия памяти в случае Serial.println(F("TFT LCD test"))? Мне казалось, что при объявлении константы на стеке компилятор не должен бы гонять её в оперативку лишний раз... Ну то есть, по моей логике - так, а как на самом деле?

 

Andreyko
Offline
Зарегистрирован: 15.01.2017

Скажите пожалуйста как выводит данные с свободного порта  на экран.

Хочу датчик  подключить и вывести.

 

на  порт 13 выводится, хотелось бы вывести на TFT Экран.