Skocz do zawartości

Pomocna odpowiedź

Napisano (edytowany)

Witam, próbowałem dzisiaj podłączyć wyświetlacz TFT dotykowy SPI ILI9341 do Arduino. Spróbowałem podłączyć z takiego zdjęcia z internetu i ekran się tylko zaświecił, kod się dało przegrać ale na wyświetlaczu nic się nie pojawiało. Potem zobaczyłem że jest więcej metod podłączania. I czy ktoś może mógłby mi wysłać zdjęcie/tabelkę prawidłowego podłączania wyświetlacza do Arduino? Wcześniej jak chciałem podłączyć zrobiłem to w! taki sposób jaki możecie zobaczyć na obrazku:
 

i kod wgrałem ten:

#include <Adafruit_GFX.h>
#include <Adafruit_TFTLCD.h>
#include <TouchScreen.h>

#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4

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

#define YP A1
#define XM A2
#define YM 7
#define XP 6

#define TS_MINX 940
#define TS_MINY 160
#define TS_MAXX 160
#define TS_MAXY 970

TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);
Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

#define BOXSIZE 40
#define PENRADIUS 3

#define MINPRESSURE 10
#define MAXPRESSURE 1000

bool change = 0;
bool touch = 0;

void setup() {
  pinMode(A5, OUTPUT);
  digitalWrite(A5, LOW);
  Serial.begin(9600);
  tft.reset();
  tft.begin(0x9325);
  tft.setTextColor(WHITE);
  tft.setTextSize(3);
  tft.fillScreen(BLACK);
}

void loop() {
  if (change == 0 && touch == 0) {
    digitalWrite(A5, LOW);
    tft.fillCircle(120, 160, 50, RED);
    tft.setCursor(95, 150);
    tft.println("LED");
    change = 1;
    delay(200);
  }

  if (change == 0 && touch == 1) {
    digitalWrite(A5, HIGH);
    tft.fillCircle(120, 160, 50, GREEN);
    tft.setCursor(95, 150);
    tft.println("LED");
    change = 1;
    delay(200);
  }

  TSPoint p = ts.getPoint();
  pinMode(XM, OUTPUT);
  pinMode(YP, OUTPUT);
  if (p.z > MINPRESSURE && p.z < MAXPRESSURE) {
    p.x = map(p.x, TS_MINX, TS_MAXX, tft.width(), 0);
    p.y = map(p.y, TS_MINY, TS_MAXY, tft.height(), 0);
    Serial.print("("); Serial.print(p.x);
    Serial.print(", "); Serial.print(p.y);
    Serial.println(")");
    if (p.x > 70 && p.x < 170) {
      if (p.y > 110 && p.y < 210) {
        change = 0;
        touch = !touch;
      }
    }
  }
}

Tu są zdjęcia jak to podłączyłem:

IMG_1448.thumb.JPG.d48ed031d2350e50a06fc91fd232d89b.JPGIMG_1446.thumb.JPG.2fba6e20ba0cda4f856ddf3db30ac35c.JPGIMG_1448.thumb.JPG.a99e45389214b4f1f5752404c917a975.JPG

Mało na nich nich widać niestety, więc tu jest jeszcze zdjęcie ,,poglądowe":

1419723475_Podczanie.thumb.png.e7a145d24ae8cefb8b3dc178cd04ae54.png

Gdyby było za mało informacji proszę napisać

Z góry dziękuję za odpowiedzi! 😄 

Edytowano przez BeeKeyPro
Podałem za mało informacji.

U ciebie rezystory mają 10k na rysunku 220Ω o ile dobrze widzę. Może to być jedną z przyczyn złego działania zwłaszcza kiedy wyświetlacz ma przyjąć jakieś polecenie. Skąd ten schemat? 

A w ogóle zastanawiam się czy ten wyświetlacz wytrzyma 5V zasilania i 5V GPIO? Nie bardzo mam jak do dokumentacji zajrzeć 

3 minuty temu, _LM_ napisał:

U ciebie rezystory mają 10k na rysunku 220Ω o ile dobrze widzę. Może to być jedną z przyczyn złego działania zwłaszcza kiedy wyświetlacz ma przyjąć jakieś polecenie.

10K szeregowo na linii sygnałowej to w 99% procentach przypadków zdecydowanie zła wartość xD [i to raczej problem, bo ekran ma stałą impedancję, a zwiększając opór pięciokrotnie prawdopodobnie kolega wypada poza zakres napięć odczytywanych przez kontroler jako HIGH]. Czasem denerwuje mnie, że producent nie podaje w DS impedancji poszczególnych pinów i często trzeba grzebać się po plikach by to ogarnąć... (chociaż zdarzają się wyjątki)

@_LM_ https://allegro.pl/oferta/wyswietlacz-lcd-tft-2-4-spi-ili9341-sd-dotyk-12022687220 Na allegro kupowałem, patrzę się teraz i w opisie pisze to:

Parametry Wyświetlacza dotykowego TFT LCD 2,4"

Techologia: LCD TFT

Przekątna: 2,4"

Sterownik LCD: ILI9341

Interfejs: SPI

65 536 kolorów, RGB

Rozdzielczość: 320 x 240 pikseli

Podświetlenie LED

Napięcie zasilania LCD: 3,3 ÷ 5 V

Napięcie pinów komunikacyjnych: 3,3 V

Napięcie LED: 3,3 V

Panel dotykowy rezystancyjny

Dodatkowe złącze karty SD

Temperatura pracy: -20 ÷ 70°C

Wymiary: 77 x 43 mm

Goldpiny LCD wlutowane

Bark goldpinów SD w zestawie

Rysik panelu dotykowego w zestawie

Cytat

Podłączenie do Arduino - UWAGA

Wyświetlacz działa na napięciu 3,3V! Do podłączenia go do Arduino Uno, Nano, Leonardo lub Mega będzie potrzebny konwerter napięć. Znajdziesz go w innej ofercie.

Z aukcji. Tak na szybko mógłbyś kombinować z dzielnikami rezystorowymi lub zasilić Arduino z 3.3V tylko nie wiem czy 3.3 Jest dostępne na płycie.

Chodzi o to że ten wyświetlacz może być zasilany z 5V ale sygnały sterujące muszą mieć poziomy od 0 do 3.3V Arduino podaje od 0 do 5V a więc możesz uszkodzić sterownik wyświetlacza. 

7 minut temu, _LM_ napisał:

Dla świętego spokoju dałbym konwerter napięć. Masz wtedy pewność że nie uszkodzisz sterownika

Zostawię dla potomnych: najlepiej TXS0108E, ale te na BSS138 też dadzą radę 😉 

  • Lubię! 1
20 godzin temu, H1M4W4R1 napisał:

10K szeregowo na linii sygnałowej to w 99% procentach przypadków zdecydowanie zła wartość xD

To jest tania metoda podłączania peryferii 3V3 do logiki 5V

Daje się w szereg rezystor parę k i na ogół dla małych prędkości to działa 🙂

Np wszystkie tanie moduły gps mają tak wyprowadzony uart.

 

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...