Arduno 2560 7`` экран LCD TFT

dezhavi
Offline
Зарегистрирован: 26.12.2015

Добрый день!

Не могу разобраться. 

Есть такой экран - http://roboparts.ru/products/tft-lcd-7-inch-module

Купил такой шилд - http://devicter.ru/goods/ITDB02-LCD-Mega-Shield-V2-0 

Соединил. Экран не  заработал.
Загрузил примеры отсюда - http://www.henningkarlsen.com/electronics/

Экран даже не  светится. Не  пойму в чем може быть дело.
Код компилируется,  скетч заливается.  

Вот код который заливаю

// UTFT_Demo_800x480 
// Copyright (C)2015 Rinky-Dink Electronics, Henning Karlsen. All right reserved
//
// This program is a demo of how to use most of the functions
// of the library with a supported display modules.
//
// This demo was made for modules with a screen resolution 
// of 800x480 pixels.
//
// This program requires the UTFT library.
//
 
#include <UTFT.h>
 
// Declare which fonts we will be using
extern uint8_t SmallFont[];
 
// Set the pins to the correct ones for your development shield
// ------------------------------------------------------------
// Arduino Uno / 2009:
// -------------------
// Standard Arduino Uno/2009 shield            : <display model>,A5,A4,A3,A2
// DisplayModule Arduino Uno TFT shield        : <display model>,A5,A4,A3,A2
//
// Arduino Mega:
// -------------------
// Standard Arduino Mega/Due shield            : <display model>,38,39,40,41
// CTE TFT LCD/SD Shield for Arduino Mega      : <display model>,38,39,40,41
//
// Remember to change the model parameter to suit your display module!
UTFT myGLCD(CTE70,38,39,40,41);
 
void setup()
{
  randomSeed(analogRead(0));
  
// Setup the LCD
  myGLCD.InitLCD();
  myGLCD.setFont(SmallFont);
}
 
void loop()
{
  int buf[798];
  int x, x2;
  int y, y2;
  int r;
 
// Clear the screen and draw the frame
  myGLCD.clrScr();
 
  myGLCD.setColor(255, 0, 0);
  myGLCD.fillRect(0, 0, 799, 13);
  myGLCD.setColor(64, 64, 64);
  myGLCD.fillRect(0, 466, 799, 479);
  myGLCD.setColor(255, 255, 255);
  myGLCD.setBackColor(255, 0, 0);
  myGLCD.print("* Universal Color TFT Display Library *", CENTER, 1);
  myGLCD.setBackColor(64, 64, 64);
  myGLCD.setColor(255,255,0);
  myGLCD.print("<http://www.RinkyDinkElectronics.com/>", CENTER, 467);
 
  myGLCD.setColor(0, 0, 255);
  myGLCD.drawRect(0, 14, 799, 465);
 
// Draw crosshairs
  myGLCD.setColor(0, 0, 255);
  myGLCD.setBackColor(0, 0, 0);
  myGLCD.drawLine(399, 15, 399, 464);
  myGLCD.drawLine(1, 239, 798, 239);
  for (int i=9; i<790; i+=10)
    myGLCD.drawLine(i, 237, i, 242);
  for (int i=19; i<470; i+=10)
    myGLCD.drawLine(397, i, 402, i);
 
// Draw sin-, cos- and tan-lines  
  myGLCD.setColor(0,255,255);
  myGLCD.print("Sin", 5, 15);
  for (int i=1; i<798; i++)
  {
    myGLCD.drawPixel(i,239+(sin(((i*1.13)*3.14)/180)*200));
  }
  
  myGLCD.setColor(255,0,0);
  myGLCD.print("Cos", 5, 27);
  for (int i=1; i<798; i++)
  {
    myGLCD.drawPixel(i,239+(cos(((i*1.13)*3.14)/180)*200));
  }
 
  myGLCD.setColor(255,255,0);
  myGLCD.print("Tan", 5, 39);
  for (int i=1; i<798; i++)
  {
    myGLCD.drawPixel(i,239+(tan(((i*0.9)*3.14)/180)));
  }
 
  delay(2000);
 
  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,798,464);
  myGLCD.setColor(0, 0, 255);
  myGLCD.setBackColor(0, 0, 0);
  myGLCD.drawLine(399, 15, 399, 464);
  myGLCD.drawLine(1, 239, 798, 239);
 
}
 
slider
Offline
Зарегистрирован: 17.06.2014

проверьте на пине  LEDA  дисплея должна быть лог.1 . у меня с белым шилдом переходником с год работает непрерывно, правда сделал для диспея отдельные мощные 5в, иначе если питать от юсб, то на меге срабатывает самовосстанавливающийся предохранитель и подсветке нехватает питания, а если питать от 12в то идёт перегрев стабилизатора 5в на меге. Проверьте чтоб в файле memorysaver.h был закоментирован   //#define DISABLE_SSD1963_800_ALT 1 // TFT01_70 / CTE70 / EHOUSE70 , остальное можно раскоментировать, чтоб  небыло лишних инициализаций в коде.  

  иначе проблема аппаратная, начните с проверки напряжений питания, подсветки на шилде экрана.

dezhavi
Offline
Зарегистрирован: 26.12.2015

Спаибо,  экран заработал. НО немного не таким способом.
Я на плате экрана увидел перемычку распаяную - always on(на снимке я синим выделил). Я её замкнул и экран заработал
Насколько я понимаю, это включение разъёма  led-a  всегда. 
Как сделать что бы  работало без этой 
 запаяной перемычки? 

Спасибо.

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

таки не замерили что на LED_A.  что тогда хотите услышать в ответ?

- если 0, то  на шилде ошибка. согласно подобной схеме  http://elecfreaks.com/estore/download/EF02034-TFT_MEGA_V2.0.pdf LED_A должен был на нем уже запаян на 3,3в

- если 1 (3,3-5в) , то значит на экране не доходит да замкнутой перемычки led_a, или её вообще забыли поставить. Тогда можно её поставить или на always on , без разницы, всё равно будет светить постоянно при подаче питания на Мегу. Если захотите управлять яркостью, надо ставить перемычку на только на pwm, здесь и в инете уже обсуждалось как именно.  Если просто включать/выключать , то можно (на всяк случай через резистор 1..10кОм) led_a перекоммутировать на любой свободный пин меги и им включать.

 

dezhavi
Offline
Зарегистрирован: 26.12.2015

Да в ответ-то, как бы ничего особо и не  хотел услышать ))) , обрадовался, что вообще  работает и увлёкся всякими экспериментами, сегодня обязательно проверю LED-A. 
Спасибо, вы очень помогли.

dezhavi
Offline
Зарегистрирован: 26.12.2015

На экране не доходит да замкнутой перемычки led_a, тут вы бли правы.
Оставил сейчас пока замкнутой перемычку.

Скажите, а вы  тачскрин используете?
У  меня почему-то не работает тач.
Взял из примера код калибровки, что-то не   реагирует на тач. Код компилируется, но тача нет.
Что  может  быть не  так?
Вот код 

// UTouch_Calibration 
// Copyright (C)2015 Rinky-Dink Electronics, Henning Karlsen. All right reserved
// web: http://www.RinkyDinkElectronics.com/
//
// This program can be used to calibrate the touchscreen
// of the display modules.
// This program requires the UTFT library and a touch
// screen module that is compatible with UTFT.
//
// It is assumed that the display module is connected to an
// appropriate shield or that you know how to change the pin 
// numbers in the setup.
//
// Instructions will be given on the display.
//

#include <UTFT.h>
#include <UTouch.h>

// Define the orientation of the touch screen. Further 
// information can be found in the instructions.
#define TOUCH_ORIENTATION  PORTRAIT

// Initialize display
// ------------------
// Set the pins to the correct ones for your development board
// -----------------------------------------------------------
// Standard Arduino Uno/2009 Shield            : <display model>,19,18,17,16
// Standard Arduino Mega/Due shield            : <display model>,38,39,40,41
// CTE TFT LCD/SD Shield for Arduino Due       : <display model>,25,26,27,28
// Teensy 3.x TFT Test Board                   : <display model>,23,22, 3, 4
// ElecHouse TFT LCD/SD Shield for Arduino Due : <display model>,22,23,31,33
//
// Remember to change the model parameter to suit your display module!
UTFT myGLCD(CTE70,38,39,40,41);

// Initialize touchscreen
// ----------------------
// Set the pins to the correct ones for your development board
// -----------------------------------------------------------
// Standard Arduino Uno/2009 Shield            : 15,10,14, 9, 8
// Standard Arduino Mega/Due shield            :  6, 5, 4, 3, 2
// CTE TFT LCD/SD Shield for Arduino Due       :  6, 5, 4, 3, 2
// Teensy 3.x TFT Test Board                   : 26,31,27,28,29
// ElecHouse TFT LCD/SD Shield for Arduino Due : 25,26,27,29,30
//
UTouch  myTouch( 6, 5, 4, 3, 2);

// ************************************
// DO NOT EDIT ANYTHING BELOW THIS LINE
// ************************************

// Declare which fonts we will be using
extern uint8_t SmallFont[];

uint32_t cx, cy;
uint32_t rx[8], ry[8];
uint32_t clx, crx, cty, cby;
float px, py;
int dispx, dispy, text_y_center;
uint32_t calx, caly, cals;
char buf[13];

void setup()
{
  myGLCD.InitLCD();
  myGLCD.clrScr();
  myGLCD.setFont(SmallFont);

  myTouch.InitTouch(TOUCH_ORIENTATION);
  dispx=myGLCD.getDisplayXSize();
  dispy=myGLCD.getDisplayYSize();
  text_y_center=(dispy/2)-6;
}

void drawCrossHair(int x, int y)
{
  myGLCD.drawRect(x-10, y-10, x+10, y+10);
  myGLCD.drawLine(x-5, y, x+5, y);
  myGLCD.drawLine(x, y-5, x, y+5);
}

void readCoordinates()
{
  int iter = 5000;
  int failcount = 0;
  int cnt = 0;
  uint32_t tx=0;
  uint32_t ty=0;
  boolean OK = false;
  
  while (OK == false)
  {
    myGLCD.setColor(255, 255, 255);
    myGLCD.print("*  PRESS  *", CENTER, text_y_center);
    while (myTouch.dataAvailable() == false) {}
    myGLCD.print("*  HOLD!  *", CENTER, text_y_center);
    while ((myTouch.dataAvailable() == true) && (cnt<iter) && (failcount<10000))
    {
      myTouch.calibrateRead();
      if (!((myTouch.TP_X==65535) || (myTouch.TP_Y==65535)))
      {
        tx += myTouch.TP_X;
        ty += myTouch.TP_Y;
        cnt++;
      }
      else
        failcount++;
    }
    if (cnt>=iter)
    {
      OK = true;
    }
    else
    {
      tx = 0;
      ty = 0;
      cnt = 0;
    }
    if (failcount>=10000)
      fail();
  }

  cx = tx / iter;
  cy = ty / iter;
}

void calibrate(int x, int y, int i)
{
  myGLCD.setColor(255, 255, 255);
  drawCrossHair(x,y);
  myGLCD.setBackColor(255, 0, 0);
  readCoordinates();
  myGLCD.setColor(255, 255, 255);
  myGLCD.print("* RELEASE *", CENTER, text_y_center);
  myGLCD.setColor(80, 80, 80);
  drawCrossHair(x,y);
  rx[i]=cx;
  ry[i]=cy;
  while (myTouch.dataAvailable() == true) {}
}

void waitForTouch()
{
  while (myTouch.dataAvailable() == true) {}
  while (myTouch.dataAvailable() == false) {}
  while (myTouch.dataAvailable() == true) {}
}

void toHex(uint32_t num)
{
  buf[0] = '0';
  buf[1] = 'x';
  buf[10] = 'U';
  buf[11] = 'L';
  buf[12] = 0;
  for (int zz=9; zz>1; zz--)
  {
    if ((num & 0xF) > 9)
      buf[zz] = (num & 0xF) + 55;
    else
      buf[zz] = (num & 0xF) + 48;
    num=num>>4;
  }
}

void startup()
{
  myGLCD.setColor(255, 0, 0);
  myGLCD.fillRect(0, 0, dispx-1, 13);
  myGLCD.setColor(255, 255, 255);
  myGLCD.setBackColor(255, 0, 0);
  myGLCD.drawLine(0, 14, dispx-1, 14);
  myGLCD.print("UTouch Calibration", CENTER, 1);
  myGLCD.setBackColor(0, 0, 0);

  if (dispx==220)
  {  
    myGLCD.print("Use a stylus or something", LEFT, 30);
    myGLCD.print("similar to touch as close", LEFT, 42);
    myGLCD.print("to the center of the", LEFT, 54);
    myGLCD.print("highlighted crosshair as", LEFT, 66);
    myGLCD.print("possible. Keep as still as", LEFT, 78);
    myGLCD.print("possible and keep holding", LEFT, 90);
    myGLCD.print("until the highlight is", LEFT, 102);
    myGLCD.print("removed. Repeat for all", LEFT, 114);
    myGLCD.print("crosshairs in sequence.", LEFT, 126);
    myGLCD.print("Touch screen to continue", CENTER, 162);
  }
  else
  {
    myGLCD.print("INSTRUCTIONS", CENTER, 30);
    myGLCD.print("Use a stylus or something similar to", LEFT, 50);
    myGLCD.print("touch as close to the center of the", LEFT, 62);
    myGLCD.print("highlighted crosshair as possible. Keep", LEFT, 74);
    myGLCD.print("as still as possible and keep holding", LEFT, 86);
    myGLCD.print("until the highlight is removed. Repeat", LEFT, 98);
    myGLCD.print("for all crosshairs in sequence.", LEFT, 110);

    myGLCD.print("Further instructions will be displayed", LEFT, 134);
    myGLCD.print("when the calibration is complete.", LEFT, 146);

    myGLCD.print("Do NOT use your finger as a calibration", LEFT, 170);
    myGLCD.print("stylus or the result WILL BE imprecise.", LEFT, 182);

    myGLCD.print("Touch screen to continue", CENTER, 226);
  }

  waitForTouch();
  myGLCD.clrScr();
}

void done()
{
  myGLCD.clrScr();
  myGLCD.setColor(255, 0, 0);
  myGLCD.fillRect(0, 0, dispx-1, 13);
  myGLCD.setColor(255, 255, 255);
  myGLCD.setBackColor(255, 0, 0);
  myGLCD.drawLine(0, 14, dispx-1, 14);
  myGLCD.print("UTouch Calibration", CENTER, 1);
  myGLCD.setBackColor(0, 0, 0);
  
  if (dispx==220)
  {  
    myGLCD.print("To use the new calibration", LEFT, 30);
    myGLCD.print("settings you must edit the", LEFT, 42);
    myGLCD.setColor(160, 160, 255);
    myGLCD.print("UTouchCD.h", LEFT, 54);
    myGLCD.setColor(255, 255, 255);
    myGLCD.print("file and change", 88, 54);
    myGLCD.print("the following values. The", LEFT, 66);
    myGLCD.print("values are located right", LEFT, 78);
    myGLCD.print("below the opening comment.", LEFT, 90);
    myGLCD.print("CAL_X", LEFT, 110);
    myGLCD.print("CAL_Y", LEFT, 122);
    myGLCD.print("CAL_S", LEFT, 134);
    toHex(calx);
    myGLCD.print(buf, 75, 110);
    toHex(caly);
    myGLCD.print(buf, 75, 122);
    toHex(cals);
    myGLCD.print(buf, 75, 134);
  }
  else
  {  
    myGLCD.print("CALIBRATION COMPLETE", CENTER, 30);
    myGLCD.print("To use the new calibration", LEFT, 50);
    myGLCD.print("settings you must edit the", LEFT, 62);
    myGLCD.setColor(160, 160, 255);
    myGLCD.print("UTouchCD.h", LEFT, 74);
    myGLCD.setColor(255, 255, 255);
    myGLCD.print("file and change", 88, 74);
    myGLCD.print("the following values.", LEFT, 86);
    myGLCD.print("The values are located right", LEFT, 98);
    myGLCD.print("below the opening comment in", LEFT, 110);
    myGLCD.print("the file.", LEFT, 122);
    myGLCD.print("CAL_X", LEFT, 150);
    myGLCD.print("CAL_Y", LEFT, 162);
    myGLCD.print("CAL_S", LEFT, 174);

    toHex(calx);
    myGLCD.print(buf, 75, 150);
    toHex(caly);
    myGLCD.print(buf, 75, 162);
    toHex(cals);
    myGLCD.print(buf, 75, 174);
  }
  
}

void fail()
{
  myGLCD.clrScr();
  myGLCD.setColor(255, 0, 0);
  myGLCD.fillRect(0, 0, dispx-1, 13);
  myGLCD.setColor(255, 255, 255);
  myGLCD.setBackColor(255, 0, 0);
  myGLCD.drawLine(0, 14, dispx-1, 14);
  myGLCD.print("UTouch Calibration FAILED", CENTER, 1);
  myGLCD.setBackColor(0, 0, 0);
  
  myGLCD.print("Unable to read the position", LEFT, 30);
  myGLCD.print("of the press. This is a", LEFT, 42);
  myGLCD.print("hardware issue and can", 88, 54);
  myGLCD.print("not be corrected in", LEFT, 66);
  myGLCD.print("software.", LEFT, 78);
  
  while(true) {};
}

void loop()
{
  startup();
  
  myGLCD.setColor(80, 80, 80);
  drawCrossHair(dispx-11, 10);
  drawCrossHair(dispx/2, 10);
  drawCrossHair(10, 10);
  drawCrossHair(dispx-11, dispy/2);
  drawCrossHair(10, dispy/2);
  drawCrossHair(dispx-11, dispy-11);
  drawCrossHair(dispx/2, dispy-11);
  drawCrossHair(10, dispy-11);
  myGLCD.setColor(255, 255, 255);
  myGLCD.setBackColor(255, 0, 0);
  myGLCD.print("***********", CENTER, text_y_center-12);
  myGLCD.print("***********", CENTER, text_y_center+12);

  calibrate(10, 10, 0);
  calibrate(10, dispy/2, 1);
  calibrate(10, dispy-11, 2);
  calibrate(dispx/2, 10, 3);
  calibrate(dispx/2, dispy-11, 4);
  calibrate(dispx-11, 10, 5);
  calibrate(dispx-11, dispy/2, 6);
  calibrate(dispx-11, dispy-11, 7);
  
  if (TOUCH_ORIENTATION == LANDSCAPE)
    cals=(long(dispx-1)<<12)+(dispy-1);
  else
    cals=(long(dispy-1)<<12)+(dispx-1);

  if (TOUCH_ORIENTATION == PORTRAIT)
    px = abs(((float(rx[2]+rx[4]+rx[7])/3)-(float(rx[0]+rx[3]+rx[5])/3))/(dispy-20));  // PORTRAIT
  else
    px = abs(((float(rx[5]+rx[6]+rx[7])/3)-(float(rx[0]+rx[1]+rx[2])/3))/(dispy-20));  // LANDSCAPE

  if (TOUCH_ORIENTATION == PORTRAIT)
  {
    clx = (((rx[0]+rx[3]+rx[5])/3));  // PORTRAIT
    crx = (((rx[2]+rx[4]+rx[7])/3));  // PORTRAIT
  }
  else
  {
    clx = (((rx[0]+rx[1]+rx[2])/3));  // LANDSCAPE
    crx = (((rx[5]+rx[6]+rx[7])/3));  // LANDSCAPE
  }
  if (clx<crx)
  {
    clx = clx - (px*10);
    crx = crx + (px*10);
  }
  else
  {
    clx = clx + (px*10);
    crx = crx - (px*10);
  }
  
  if (TOUCH_ORIENTATION == PORTRAIT)
    py = abs(((float(ry[5]+ry[6]+ry[7])/3)-(float(ry[0]+ry[1]+ry[2])/3))/(dispx-20));  // PORTRAIT
  else
    py = abs(((float(ry[0]+ry[3]+ry[5])/3)-(float(ry[2]+ry[4]+ry[7])/3))/(dispx-20));  // LANDSCAPE

  if (TOUCH_ORIENTATION == PORTRAIT)
  {
    cty = (((ry[5]+ry[6]+ry[7])/3));  // PORTRAIT
    cby = (((ry[0]+ry[1]+ry[2])/3));  // PORTRAIT
  }
  else
  {
    cty = (((ry[0]+ry[3]+ry[5])/3));  // LANDSCAPE
    cby = (((ry[2]+ry[4]+ry[7])/3));  // LANDSCAPE
  }
  if (cty<cby)
  {
    cty = cty - (py*10);
    cby = cby + (py*10);
  }
  else
  {
    cty = cty + (py*10);
    cby = cby - (py*10);
  }
  
  calx = (long(clx)<<14) + long(crx);
  caly = (long(cty)<<14) + long(cby);
  if (TOUCH_ORIENTATION == LANDSCAPE)
    cals = cals + (1L<<31);

  done();
  while(true) {}
}

 

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

а где вы видели на нём тач?  и куда интересно вы жали, надеясь что что-то произойдёт  :)

 на фото спереди нет тача.  на фото сзади к разъему тача (4пин плоский) ничего не подключено.  Купите в близлежайшем магазине запчастей для сотовых , цена ему 50-100руб . называться может "сенсорный экран универсальный 7,0" " , выберете только чтоб шлейф был как вам нужно. и на тонкие узкие полоски двухстороннеко скотча приклейте, купить их можете там же.

dezhavi
Offline
Зарегистрирован: 26.12.2015

Жал на экран )) Я думал, что тут  тач в в самом экране ))
Купить надо вот что-то типа  такого да?
http://first-fix.ru/index.php?route=product/product&path=124_86_117&product_id=231

И когда я его подключу, будет мне  щастье?

И еще, я правильно понимаю, что  тач в данном случаеп - это разъём для  тач экрана, который будет работать в  связке  с этим  понирором, я правильно понимаю?
Спасибо!

dezhavi
Offline
Зарегистрирован: 26.12.2015

А где вы купили такой экран? Обошёл несколько магазинов, нету (( 

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

 https://www.la-bora.ru/ (сейчас чек накладную глянул , покупал у них в прошлом году  тачскрины 3.0" по 29руб , 4.0" и 7.0" по 39руб . Забирал в местном магазине, т.е. доставка 0руб.) 

 вот еще где иногда что беру по смешным ценам http://www.gsm-service.info/   http://siriust.ru/

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

dezhavi
Offline
Зарегистрирован: 26.12.2015

Спасибо больше, за  ответы, я купил так экан. Ездил на  Юнону.
Теперь у  меня проблема с калибровкой.
Создала даже отельную тему под калибровку. Ибо вроде всё  далаю правильно а на выходе  получается ерунда какая-то.

За  экран, ОГРОМНОЕ спасибо.

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

пожалуйста. 

если на выходе ерунда, то прозвоните мультиметром вывода тача. должно быть чтото вроде для 7.0"  по X 950 Ом , по Y 270-300 Ом . распиновка примерно y1 x1 y2 x2 . Между собой X и Y , должны иметь сопротивление только при нажатии на тач, причем сопротивление должно отличаться при разном нажатии от края до края.  

  Это не емкостной тач , как уже привыкли к еле прикасаемым  емкостным тачам, здесь надо  нажимать стилусом или ногтем. Заново распакуйте библиотеку с UTouch (чтоб были изначально стандартные настройки, UTouch_QuickDraw уже должен работать хоть и повернуто).  Замените в скетче калибровки UTouch_Calibration       #define TOUCH_ORIENTATION  PORTRAIT на  #define TOUCH_ORIENTATION  LANDSCAPE  и только потом заливаете скетч калибровки и калибруете стилусом. Дальше в файле UTouchCD.h стираете старые значения и пишете новые, те что вам выдал скетч калибровки. Дальше зальете тест  рисовалку, и проверите точность UTouch_QuickDraw  UTouch_QuickPaint  (в этих скетчах уже не надо нигде писать Potrtrait и Lanscape , они нужны были только в скетче калибровки, для выдачи правильной калибровки.)

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

чтоб не плодить ветки  , раз здесь про дисплей 7" ,  черкну сюда про отключение подсветки дисплея ( LED_A ) и разгрузку 5в стаба на плате Меги 

 

на плате шилда-переходнике около стаба 3.3в убрать перемычку , и нижний её контакт пустить на свободный пин, к примеру цифровой пин 44. http://elecfreaks.com/store/download/datasheet/shield/TFT_MEGA_V2.0.pdf  - подали лог1 - включили , лог.0 - выключили. Желательно последовательно добавить резистор 5-10ком. ( ибо почемуто по PDF  http://elecfreaks.com/store/download/datasheet/lcd/TFT/7_Material.zip  схемотехнике платы дисплея , LED_A идёт напрямую к преобразователю TPS61040 для подсветки , а он по PDF питается от 3.3в ) 

7" экран много хавает подсветкой, около 0,5 А , поэтому поставил dc-dc и запитал его от Vin , ножку 5в от ардуины надо убрать. На случай заливки скетча и проверки и питания от мощного USB 3.0   - поставил вверху диод шоттки , чтоб подсветка дисп. могла запитаться в отсутствии Vin. И для этого ещё надо усилить самаовосстанавливающийся предохранитель по USB на плате Меги, ибо он не выдержиавает питание подсветки от USB. кабель  USB толстый для ардуин.  

// подсветка светится круглосуточно уже 2 года, яркость вроде непотеряна :) . Отключением подсветки озадачился чтоб при частом пропадании сети 220в , хватало резервного АКБ надолго для рисования лога (при подсаживании до 50% - ардуина подсветку отключает)

alexvs
Offline
Зарегистрирован: 22.07.2014

Про управление яркостью подсветки https://habrahabr.ru/post/234601/