• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 1 głosów - średnia: 5
  • 1
  • 2
  • 3
  • 4
  • 5
Wyswietlacz dotykowy ze sterownikiem ILI9341 ,XPT2046
#1
Witam , dziś chciałbym przedstawić schemat podlaczenia i obsługi taniego wyswiatlacza 2.8"  240x320 ze sterownikiem dotyku XPT2046    cena 40-45 zl na Allegro

[Obrazek: NhhpBW.jpg]

- Pracuje on na logice 3,3v  jesli chemy go podlączyć do 5v np do UNO to bedziemy potrzebowac konwerter pozomów logicznych  lub zastosować rezystory

Schemat Podłączenia : do tego celu uzyłem pro mini 3,3v  żeby nie sstosowac Dodatkowo konwertera poziomów logicznych
[Obrazek: P3TPEc.jpg] [Obrazek: zaYrW0.jpg]
Wyświetlacz:
VCC ----> 3,3V
GDN ----> masa
CS ----> D10
RESET ---->3,3V
D/C ----> D9
SDI(MOSI) ----> D11
SCK ----> D13
LED ----> 3,3V
SDO(MISO) ----> D12

Dotyk:
T_IRQ ----> D6
T_DO ----> D5
T_DIN ---->D4
T_CS ----> D3
T_CLK ----> D2




}
Kod:
#include <UTouch.h> // Biblioteka dla dotyku ze  sterownikiem XPT2046
#include <Adafruit_GFX.h>          
#include <Adafruit_ILI9341.h>  // Biblioteka dla sterownika naszego wyswietlacza w tym wypadku ILI9341
#include <SPI.h>

#define TFT_DC 9
#define TFT_CS 10

Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
UTouch myTouch(6,5,4,3,2);    // piny do podlaczenia dotyku  6- T_IRQ   5- T_DO  4- T_DIN   3- T_CS     2- T_CLK

int x, y;
bool przycisk = false;
void setup()
{
 Serial.begin(9600);
       myTouch.InitTouch();
       myTouch.setPrecision(PREC_HI);
       tft.begin();
     
 //      pinMode(7, OUTPUT);  //  Wyjscie diody dla testu
       tft.setTextSize(2);
 tft.fillScreen(ILI9341_BLACK);
 tft.setRotation(2);                            
tft.setCursor(10, 100);
 tft.setTextSize(2);
 tft.setTextColor(ILI9341_RED);
 tft.setTextWrap(true);
 tft.print("test Wyswietlacza      ze sterownikiem ILI9341  ");
 tft.setCursor(0,180);
 tft.print("dotknij gdziekolwiek");
 tft.setCursor(10, 280);
 tft.setTextSize(2);
 tft.setTextColor(ILI9341_BLUE);
 tft.setTextWrap(true);
 tft.print("Test UTOUCH XPT2046 ");

}

void loop()
{
/* Serial.println("x:");
 Serial.print(x);
 delay (1000);
 Serial.println("y");
 Serial.print(y);
 delay(1000); */  // odczyt na serial monitorze  aktualnej pozycji naszego "palca" na ekreanie  ( ulatwia ustalenie wielkosci przycisku ;P )
       if(myTouch.dataAvailable())
       {
               myTouch.read();   // odczyt i wpisanie do x i y pozycji naszego palca na wyswietlaczu
               x = myTouch.getX();
               y = myTouch.getY();
             
               if(x >= 20 && x <= 220 && y >= 50 && y <= 150)  // koordynaty dla odczytu dotyku
               {
                       tft.fillScreen(ILI9341_BLACK);
                       przycisk = !przycisk;
                       if(przycisk == true)
                       {
                               tft.fillRect(20,50,200,100,ILI9341_YELLOW);
                               // tutaj dodajemy nasza część kodu np :
                                // digitalWrite(7,HIGH);  // proste włączenie diody po "tapnieciu" w okreslona  7 linijek wyzej czesc ekranu
                                tft.setTextSize(2);
                               
                               
tft.setCursor(50, 90);
 tft.setTextSize(3);
 tft.setTextColor(ILI9341_RED);
 tft.setTextWrap(true);
 tft.print("wlaczone ");
             
                       }
                       else
                       {
                               tft.fillRect(20,50,200,100,ILI9341_WHITE);
                               //nasz kod np:
                               //digitalWrite(7, LOW);  // wyłączenie Diody
                               
                               tft.setCursor(5, 5);
                               tft.setCursor(45, 90);
 tft.setTextSize(3);
 tft.setTextColor(ILI9341_RED);
 tft.setTextWrap(true);
 tft.print("wylaczone ");
                       }
               }
       }
}
 
Odpowiedź
#2
Cytat:Schemat Podłączenia : do tego celu uzyłem pro mini 3,3v  żeby nie sstosowac Dodatkowo konwertera poziomów logicznych

Arduino Uno posiada rozdzielenie na 3,3V i 5V wiec nie widze tutaj także potrzeby użycia jakiego kolwiek konwertera.

ps. popraw post'a kod wrzuć do funkcji code na forum, w edycji wiadomosci masz 5 ikonka od konca.
 
Odpowiedź
#3
(31-07-2015, 18:56)zaba141 napisał(a):
Cytat:Schemat Podłączenia : do tego celu uzyłem pro mini 3,3v  żeby nie sstosowac Dodatkowo konwertera poziomów logicznych

Arduino Uno posiada rozdzielenie na 3,3V i 5V wiec nie widze tutaj także potrzeby użycia jakiego kolwiek konwertera.

ps. popraw post'a kod wrzuć do funkcji code na forum, w edycji wiadomosci masz 5 ikonka od konca.

Owszem posiada wyprowadzenie 3,3v ale piny cyfrowe maja 5v a jak napisalem wyswietlacz pracuje na LOGICE 3,3v
 
Odpowiedź
#4
Wyświetlacz godny polecenia? Smile
[Obrazek: Sygnatura1-w60.jpg]
 
Odpowiedź
#5
Za taką cenę zdecydowanie tak , lecz niestety posiada kilka wad .
do obsługi potrzeba 10 pinów cyfrowych i niestety jest to dotyk rezystancyjny - ma taką folie na ekranie :/
 
Odpowiedź
#6
Ale tak to jest, coś za coś, w końcu 40-45 zł. Smile
[Obrazek: Sygnatura1-w60.jpg]
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości