работа с LCD шилдом на чипе 9325

Egor76
Offline
Зарегистрирован: 07.08.2015

Всем привет! Пытаюсь сделать простецкую програмку счётчик, которая будет выводить цифры на экран. Но почему-то у меня все цифры накладываются друг на друга. Не могу понять как это исправить. Подскажите кто встречадся с данным LCD, что не так?


#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

// 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

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"));

#ifdef USE_ADAFRUIT_SHIELD_PINOUT
  Serial.println(F("Using Adafruit 2.8\" TFT Arduino Shield Pinout"));
#else
  Serial.println(F("Using Adafruit 2.8\" TFT Breakout Board Pinout"));
#endif

  Serial.print("TFT size is "); Serial.print(tft.width()); Serial.print("x"); Serial.println(tft.height());

  tft.reset();

  uint16_t identifier = tft.readID();
 
  if(identifier == 0x9325) {
    Serial.print(F("Found ILI9325 LCD driver:"));
      } else if(identifier == 0x9328) {
    Serial.println(F("Found ILI9328 LCD driver"));
  } else if(identifier == 0x7575) {
    Serial.println(F("Found HX8347G LCD driver"));
  } else if(identifier == 0x9341) {
    Serial.println(F("Found ILI9341 LCD driver"));
  } else if(identifier == 0x8357) {
    Serial.println(F("Found HX8357D LCD driver"));
  } else {
    Serial.print(F("Unknown LCD driver chip: "));
    Serial.println(identifier, HEX);
    Serial.println(F("If using the Adafruit 2.8\" TFT Arduino shield, the line:"));
    Serial.println(F("  #define USE_ADAFRUIT_SHIELD_PINOUT"));
    Serial.println(F("should appear in the library header (Adafruit_TFT.h)."));
    Serial.println(F("If using the breakout board, it should NOT be #defined!"));
    Serial.println(F("Also if using the breakout, double-check that all wiring"));
    Serial.println(F("matches the tutorial."));
    return;
  }

  tft.begin(identifier);
  tft.fillScreen(BLACK); //Выводим модель чипа на TFT
  tft.setCursor(0, 0);
  tft.setTextColor(RED);  tft.setTextSize(2);
  tft.print("LCD driver chip:");
  tft.print(identifier, HEX);
  
 }
 
void loop(void) {
  
  for (int i=0; i <= 10; i++)
  {
      uint16_t identifier = i;  
      tft.setCursor(0,30 );
      tft.setTextColor(WHITE);  tft.setTextSize(2);
      tft.print(identifier);
            
      delay(1000);
      
   }

}

 

diger67
Offline
Зарегистрирован: 25.07.2015

Самый простой метод это вывод в область текста прямоугольника с цветом фона, а затем выводить новое значение. Може есть и другой способ. Я остановился на таком методе динамического вывода в отдельно взятой области tft.

Egor76
Offline
Зарегистрирован: 07.08.2015

diger67, спасибо. Воспользовался tft.fillRect(0, 30, 144, 25, BLACK). Цифры теперь не наслаиваются. =)