Arduino UNO R3 + LCD 2.4 TFT

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Что именно вам непонятно из соообщения:

tftpaint_shield:14: error: #error "This sketch is intended for use with the TFT LCD Shield. Make sure that USE_ADAFRUIT_SHIELD_PINOUT is #defined in the Adafruit_TFTLCD.h library file."

??? Там всё человечьим языком написано, если вы внимательно всё прочитаете - сразу поймёте, в чём проблема.

З.Ы. Говорят, что у Google Translate сегодня выходной. Но я - не верю этому.

Vln
Offline
Зарегистрирован: 17.12.2015
sbhid
Offline
Зарегистрирован: 22.01.2014

Некоторое время искал библиотеки под подобный шилд, только на 3.2 дюйма (320х480).

Нашел. "Mcufriend_kvb"

позже сделал выводы, что дисплей может тормозить из-за медленного 8-битного вывода.

так и есть... перенаправил выводы на полностью доступный порт, на своей MEGA2560.

Результат - тест с прорисовкой радиальных линий [было: 37.3 сек][стало - 8.8 сек]

по моему - оно того стоит))) более чем в 4 раза!)

на UNO - разводка другая - ускорение будет не таким значительным, т.к. разводка UNO другая, ее проще и быстрее обрабатывать. (см картинки)

немного поясню, и, возможно, повторюсь...

на UNO и на MEGA цифровые выводы с одним обозначением подключаются к разным физическим портам!

в библиотеках что делается - чтобы ускорить? - пишется код на ассемблере для вывода байта данных.

Либо пишется сложный набор из "|=", "&=", ">>","<<","|","&","~". Что они их себя представляют - каждый, кто занимается Ардуино - должен знать!
пример:

#define write_8(x)   {  PORTH &= ~HMASK; PORTG &= ~GMASK; PORTE &= ~EMASK; \
                        PORTH |= (((x) & (3<<0)) << 5); \
                        PORTE |= (((x) & (3<<2)) << 2); \
                        PORTG |= (((x) & (1<<4)) << 1); \
                        PORTE |= (((x) & (1<<5)) >> 2); \
                        PORTH |= (((x) & (3<<6)) >> 3); \
			 }

было заменено на:

#define write_8(x)   {PORTC =x;}

Аналогично проделано для этих функций:

#define read_8()      (PINC)
#define setWriteDir() { DDRC = 255;  }
#define setReadDir()  { DDRC = 0;  }

Зачастую библиотеки пробуют разных и далеко не самых свжих версий. Из-за этого возможны "нераспознавания" контроллеров. Код все время пополняется.

В качестве справки по пинам (модерам - не разобрался как картинки в спойлер запихнуть):

Vln
Offline
Зарегистрирован: 17.12.2015

sbhid пишет:

Нашел. "Mcufriend_kvb"

Тоже скачивал.

Mcufriend_kvb_v_2.5 graphictest_kbv не заработал. А на v_2.9 graphictest_kbv работает! Шустрая!

Под свой 2.4 LCD SPFD5408 ili9328 в примерах менял значения в строке (где она есть) на свои:

UTFTGLUE myGLCD(0x9328, A2, A1, A3, A4, A0);

и для тача:

#define YP A3
#define YM 9
#define XM A2
#define XP 8

 

flat
Offline
Зарегистрирован: 05.02.2015

Подскажите пожалуйста. 

В проекте не требуется сенсор и сд карта. 

Какие пины можно не подключать чтобы использовать его только как экран? 

По сд карте понятно. 

а вот пины чисто для сенсора? 

И можно ли освободить пин D2. ибо нужен для прерываний

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

flat пишет:
пины чисто для сенсора?

если для этого то любые цифровые.

flat
Offline
Зарегистрирован: 05.02.2015

я про пины на 2.4 дисплейчеке который обсуждается в теме. мне как раз сенсор на нем надо отключить чтобы порты высвободившиеся использовать

slider
Offline
Зарегистрирован: 17.06.2014

flat пишет:

я про пины на 2.4 дисплейчеке который обсуждается в теме. мне как раз сенсор на нем надо отключить чтобы порты высвободившиеся использовать

на шилде с первого сообщения пины сенсора параллельны управляющим сигналам для работы дисплея, а от них так просто вы никак не избавитесь.

1.  пины microSD просто используйте не вставляя  карту microSD , получаете +4 пина цифровых.

2. используйте вариант платы UNO где выведены A6 A7 ,   получаете +2 пина аналоговых

3. подправьте библиотеку , по удалению RESET, CS, RD  (reset подключить к reset ардуино, CS - лог0 , RD-лог1 ) и выпаять их с шилда ,          получаете +3 пина аналогово/цифровых .  примеры что это реализуемо http://ard  и http://ardu (в сумме 12 пинов свободных

И того дополнительно получаете +9 пинов свободных ( в сумме это  12пинов свободных), если надо еще больше свободных, то берите шилд с SPI TFT LCD 2.4" , или уже плату ардуину мегу.  

maxim05gromov
Offline
Зарегистрирован: 26.05.2017

купил экран 2.4 TFTLCD. в самом низу экрана (на месте кнопок) нарисованы дом, книга, письмо, фотоаппарат, плёнка. фото делать возможности нет, но надеюсь на нахождение рабочей библиотеке.

obuhus
Offline
Зарегистрирован: 26.05.2017

Доброго здравия всем. Имеется Arduino Mega 2560 и 2,4" TFT, обсуждаемый здесь. С графикой порядок, даже русские шрифты, благодаря этому форуму... Но.

Запонадобилось соорудить диммер с графическим экраном и, соответственно, внешним прерыванием по переходу через ноль. Без выше обсуждаемого экрана всё чудесно, всё работает. Подключаю к ардуине экран, затем втыкаю пин 21 (прерывание 2) - белый экран. Перепробовал все доступные прерывания - одно и то же. Прерывания 0 и 1 сразу в белый экран без подключения живого провода перехода через ноль.

Может кто-то сталкивался? В каком углу и что курить? Аппаратная несовместимость? Отсутствие знаний? Замена экрана на другую модель, позволяющую прерывания? 

Буду благодарен за любую информацию и совет. Заранее спасибо.

DAFdriver
Offline
Зарегистрирован: 12.08.2016

У меня этот дисплей работает с библиотекой LGDP 4535 . Запускается сразу и все работает.

 Но хоотелось бы выводить на нем Русский текст . Уважаемые гуру подскажите как это сделать .

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Я так понимаю, экран графический.

Значит, выводиться будет тот фонт, который Вы к нему подключите. Проблема может быть только одна - библиотеки для Ардуино, как правило, заточены на отображение не более 95 разных символов - с кодами от 32 до 126 включительно. Соответственно, либо Вы в своем фонте замещаете некоторые символы (латинница + некоторые дополнительные символы типа фигурных скобок) символами кириллицы (при этом остается проблема того, что в коде оно будет выглядеть совсем не так, как на экране). Либо корежите библиотеку, позволяя ей отображать более широкий набор символов, и тут же сразу сталкиваетесь с новой проблемой, название которой utf-8. Хотя и эти проблемы можно решить. Например, изменив настройку Arduino IDE так, чтобы она работала с CP1251 вместо utf-8.

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

DAFdriver
Offline
Зарегистрирован: 12.08.2016

Да экран графический , цветной,сенсорный . TFT 240X320 .

#include <Adafruit_GFX.h>    // Core graphics library

#include <LGDP4535.h> // Hardware-specific library
 
// Assign human-readable names to some common 16-bit color values:
#define BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF
 
LGDP4535 tft;
 
 Спасибо Буду искать Русский шрифт . 
У меня на этом дисплее  работает осцилограф по ссылке ;  http://srukami.inf.ua/pultoscop_v2.html
arduinec
Offline
Зарегистрирован: 01.09.2015

DAFdriver пишет:

#include <Adafruit_GFX.h>    // Core graphics library

Буду искать Русский шрифт. 

Для Adafruit_GFX русский шрифт уже есть:
http://arduino.ru/forum/programmirovanie/rusifikatsiya-biblioteki-adafru...

 

dudawkin
Offline
Зарегистрирован: 11.08.2017

Здравствуйте. Имеется такой же дисплейчик. Используя библиотеки adafruit вроде бы запустился, но отображаются некоректно данные. Что может быть?

DAFdriver
Offline
Зарегистрирован: 12.08.2016

У меня такой дисплей корректно работает только с библиотекой TFT LGDP4535 , с другими тоже , что и у Вас , либо зеркальное изображение . Да и LGDP некоторые примеры , на пример paint нужно корректировать .

dudawkin
Offline
Зарегистрирован: 11.08.2017

А можете выложить какой нибудь один рабочий пример для проверки?

Скачал тут библиотеку TFT LGDP4535, http://ceezblog.info/2015/04/20/240x320-28-tft-shield-driver-4535-for-ar...      Чёрный экран.

slider
Offline
Зарегистрирован: 17.06.2014

dudawkin пишет:

А можете выложить какой нибудь один рабочий пример для проверки?

Скачал тут библиотеку TFT LGDP4535, http://ceezblog.info/2015/04/20/240x320-28-tft-shield-driver-4535-for-ar...      Чёрный экран.

это и был пример для проверки.

здесь и в таких же темах (поик по форуму TFT 2.4 ) приводились еще много разных вариантов библиотек, почему не попробовали? Такими шилдами м.б. около 5-10 разных контроллеров.  

И почти каждая либа выводит в терминал что за ей известный/неизвестный у вас контроллер в дисплее стоит. Это тоже сложно? 

вот еще 3й вариант - читалка в монитор порта выдает содержимое регистров контроллера дисплея http://arduino.ru/forum/apparatnye-voprosy/arduino-i-displei-ot-sotikov-mobilnykh-telefonov?page=8#comment-290976

dudawkin
Offline
Зарегистрирован: 11.08.2017

Перепробовал библиотек 10, с разными модификациями и на UNO и на MEGA 2560. Ничего не помогает, единственно на экран выводится некоректные данные, как показывал на картинке, когда в коде прописывал строчку uint16_t identifier = 0x9341; одни читалки в порт выдавало: неизвестный контроллер C0C0, другие неизвестный контроллер 4040. Если не указывать идентификатор, то чёрный экраню Вот и не понимаю, что может быть.

DAFdriver
Offline
Зарегистрирован: 12.08.2016
У меня работает

/******************************************************
Example 2: Draw Sine, Cosine, Tangent lines
******************************************************/

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

// Assign human-readable names to some common 16-bit color values:
#define	BLACK   0x0000
#define	BLUE    0x001F
#define	RED     0xF800
#define	GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

LGDP4535 tft;
// If using the shield, all control and data lines are fixed, and

void setup(void) {
  Serial.begin(9600);
  Serial.println(F("TFT LCD test"));
  tft.reset();
  uint16_t identifier = tft.readID();
  Serial.print(F("LCD driver chip: "));
  Serial.println(identifier, HEX);
  if (identifier == 0x4535) 
    Serial.println(F("Using the library LGDP4535.\nRun the sample now"));
  else Serial.println(F("This is not the driver chip LGDP4535.\nForce using library LGDP4535..."));
  tft.begin();
  
  tft.setRotation(1);
  
  tft.fillScreen(BLACK);
  
  // Draw crosshairs
  //x-axis
  tft.drawLine(1,120,320,120,BLUE); 
  for (int i=10; i<320; i+=20)
    tft.drawLine(i, 115, i, 125,BLUE);

  //y-axis
  tft.drawLine(160,1,160,240,BLUE);
  for (int i=10; i<240; i+=20)
    tft.drawLine(155, i, 165, i,BLUE);
   
  tft.setTextWrap(false),
  tft.setTextSize(2);
  tft.setCursor(2,3);
  tft.setTextColor(MAGENTA);
  tft.print("LCD TEST - Sample 1");

  tft.setTextSize(1);
// Draw sin-, cos- and tan- lines  

  tft.setCursor(2,73);
  tft.setTextColor(CYAN);
  tft.print("Sine");
  double k=2.25;
  for (int i=1; i<320; i++)
  {
    tft.drawPixel(i,120+(sin(((i*k)*3.14)/180)*90),CYAN);
  }
  
  tft.setCursor(2,83);
  tft.setTextColor(RED);
  tft.print("Cosine");
  for (int i=1; i<320; i++)
  {
    tft.drawPixel(i,120+(cos(((i*k)*3.14)/180)*90),RED);
  }

  tft.setCursor(2,93);
  tft.setTextColor(YELLOW);
  tft.print("Tangent");
  for (int i=1; i<320; i++)
  {
    tft.drawPixel(i,120+(tan(((i*k)*3.14)/180)*20),YELLOW);
  }

  delay(2000);
  
}

void loop(void) {
  
}

 

dudawkin
Offline
Зарегистрирован: 11.08.2017

DAFdriver, Чёрный экран :(

Может сам дисплей бракованный

 

slider
Offline
Зарегистрирован: 17.06.2014

dudawkin пишет:

Перепробовал библиотек 10, с разными модификациями и на UNO и на MEGA 2560. Ничего не помогает, единственно на экран выводится некоректные данные, как показывал на картинке, когда в коде прописывал строчку uint16_t identifier = 0x9341; одни читалки в порт выдавало: неизвестный контроллер C0C0, другие неизвестный контроллер 4040. Если не указывать идентификатор, то чёрный экраню Вот и не понимаю, что может быть.

без чтения лога всех регистров , трудно сказать аномалии c0c0 4040.

возможно контакт/неконтакт в пайке шлейфа диспа или он неисправен. писали в подобных темах про 2.4" что перепайка шлейфа помогала.

DAFdriver
Offline
Зарегистрирован: 12.08.2016

Возможно.Но я попробывлбы еще другие библиотеки , я со своим долго мучиля пока запустил.