Skocz do zawartości

Podłączanie wyswietlacza TFT dotykowego SPI ILI9341 do Arduino


BeeKeyPro

Pomocna odpowiedź

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.
Link do komentarza
Share on other sites

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? 

Link do komentarza
Share on other sites

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

Link do komentarza
Share on other sites

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)

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

@_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

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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. 

Link do komentarza
Share on other sites

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

Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

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.

 

  • Lubię! 1
Link do komentarza
Share on other sites

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

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.