Σελίδα 1 από 5 1 2 3 ... ΤελευταίαΤελευταία
Εμφάνιση αποτελεσμάτων : 1 έως 10 από 49

Θέμα: Arduino @ TFT

  1. #1
    Νέο Μέλος
    Όνομα
    Yiannos Savva
    Εγγραφή
    Feb 2013
    Περιοχή
    Cyprus
    Μηνύματα
    1

    Προεπιλογή Arduino @ TFT

    Έχω αγοράσει από το EBay αυτή την οθόνη αφής.
    http://www.ebay.com/itm/261120303957...84.m1439.l2649
    Την συνδέω σε ένα arduino uno.
    Το code που ακολουθεί δεν δουλεύει ενώ μου το έστειλε ο προμηθευτής.

    #include "TFTLCD.h"
    #include "TouchScreen.h"


    //Duemilanove/Diecimila/UNO/etc ('168 and '328 chips) microcontoller:



    #define YP A3 // must be an analog pin, use "An" notation!
    #define XM A2 // must be an analog pin, use "An" notation!
    #define YM 9 // can be a digital pin
    #define XP 8 // can be a digital pin

    #define TS_MINX 150
    #define TS_MINY 120
    #define TS_MAXX 920
    #define TS_MAXY 940

    // For better pressure precision, we need to know the resistance
    // between X+ and X- Use any multimeter to read it
    // For the one we're using, its 300 ohms across the X plate
    TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);

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

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



    TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

    #define BOXSIZE 40
    #define PENRADIUS 3
    int oldcolor, currentcolor;

    void setup(void) {
    Serial.begin(9600);
    Serial.println("Paint!");

    tft.reset();

    uint16_t identifier = tft.readRegister(0x0);
    if (identifier == 0x9325) {
    Serial.println("Found ILI9325");
    } else if (identifier == 0x932 {
    Serial.println("Found ILI9328");
    } else {
    Serial.print("Unknown driver chip ");
    Serial.println(identifier, HEX);
    while (1);
    }

    tft.initDisplay();
    tft.fillScreen(BLACK);

    tft.fillRect(0, 0, BOXSIZE, BOXSIZE, RED);
    tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, YELLOW);
    tft.fillRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, GREEN);
    tft.fillRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, CYAN);
    tft.fillRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, BLUE);
    tft.fillRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, MAGENTA);
    // tft.fillRect(BOXSIZE*6, 0, BOXSIZE, BOXSIZE, WHITE);

    tft.drawRect(0, 0, BOXSIZE, BOXSIZE, WHITE);
    currentcolor = RED;

    pinMode(13, OUTPUT);
    }



    #define MINPRESSURE 10
    #define MAXPRESSURE 1000



    void loop()
    {
    digitalWrite(13, HIGH);
    Point p = ts.getPoint();
    digitalWrite(13, LOW);


    pinMode(XM, OUTPUT);
    pinMode(YP, OUTPUT);
    //pinMode(YM, OUTPUT);

    // we have some minimum pressure we consider 'valid'
    // pressure of 0 means no pressing!

    if (p.z > MINPRESSURE && p.z < MAXPRESSURE) {


    if (p.y < (TS_MINY-5)) {
    Serial.println("erase");
    // press the bottom of the screen to erase
    tft.fillRect(0, BOXSIZE, tft.width(), tft.height()-BOXSIZE, BLACK);

    }
    // turn from 0->1023 to tft.width
    p.x = map(p.x, TS_MINX, TS_MAXX, tft.width(), 0);
    p.y = map(p.y, TS_MINY, TS_MAXY, tft.height(), 0);

    if (p.y < BOXSIZE) {
    oldcolor = currentcolor;


    if (p.x < BOXSIZE) {
    currentcolor = RED;
    tft.drawRect(0, 0, BOXSIZE, BOXSIZE, WHITE);
    }
    else if (p.x < BOXSIZE*2) {
    currentcolor = YELLOW;
    tft.drawRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, WHITE);
    }
    else if (p.x < BOXSIZE*3) {
    currentcolor = GREEN;
    tft.drawRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, WHITE);
    }
    else if (p.x < BOXSIZE*4) {
    currentcolor = CYAN;
    tft.drawRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, WHITE);
    }
    else if (p.x < BOXSIZE*5) {
    currentcolor = BLUE;
    tft.drawRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, WHITE);
    }
    else if (p.x < BOXSIZE*6) {
    currentcolor = MAGENTA;
    tft.drawRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, WHITE);
    }

    if (oldcolor != currentcolor) {
    if (oldcolor == RED) tft.fillRect(0, 0, BOXSIZE, BOXSIZE, RED);
    if (oldcolor == YELLOW) tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, YELLOW);
    if (oldcolor == GREEN) tft.fillRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, GREEN);
    if (oldcolor == CYAN) tft.fillRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, CYAN);
    if (oldcolor == BLUE) tft.fillRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, BLUE);
    if (oldcolor == MAGENTA) tft.fillRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, MAGENTA);
    }
    }
    if (((p.y-PENRADIUS) > BOXSIZE) && ((p.y+PENRADIUS) < tft.height())) {
    tft.fillCircle(p.x, p.y, PENRADIUS, currentcolor);
    }
    }
    }


    Κάνω κανονικά upload και το αποτέλεσμα είναι μόνο μια άσπρη οθόνη.
    Κάποιος πιο έμπειρος μπορεί να καταλάβει τη συμβαίνει?

    Ευχαριστώ.

    0 Not allowed! Not allowed!

  2. #2
    Νέο Μέλος
    Όνομα
    Μανος
    Εγγραφή
    Feb 2009
    Περιοχή
    Ηράκλειο
    Μηνύματα
    27

    Προεπιλογή

    Τΐς βιβλιοθηκες τις εβαλες στον φακελο Libraries του Arduino ?

    0 Not allowed! Not allowed!

  3. #3
    Μέλος Το avatar του χρήστη thanasis 1
    Όνομα
    Θανάσης
    Εγγραφή
    Jul 2010
    Περιοχή
    ΑΘΗΝΑ
    Μηνύματα
    1.382

    Προεπιλογή

    Καλησπερα πηρα αυτην την 2,4" tft lcd και για καποιο λογο δεν λεει ποιον ελεγκτη φοραει αλλα απο οτι ειδα σε αλλες σελιδες(μια απο αυτες) λογικα εχει τον ILI9325,
    κατεβασα την βιβλιοθηκη utft και ειδα οτι υποστηριζει τους ILI9325C , ILI9325D_8 , ILI9325D_16 λογικα καποιος απο αυτους θα παιζει και στην δικια μου(θελω να πιστευω).
    Επειδη διαθετω τον atmega328p εψαξα και βρηκα αυτο εγω συνδεσα οπως λεει :

    DB0-DB7 ---> 0-7(PD0-PD7)

    RS ---> A5(PC5)
    WR ---> A4(PC4)
    RD ---> 3.3V
    CS ---> A3(PC3)
    REST ---> A2(PC2)

    εγω στο παραδειγμα εβαλα τον ILI9325C αλλα δεν μου δουλεψε.Εχει δουλεψει κανεις με αυτην την οθονη??
    Απο θεμα συνδεσης ειμαι οκ?ωστε να αποκλεισουμε αυτο το λαθος.


    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη thanasis 1 : 28-03-15 στις 21:24

  4. #4
    Μέλος Το avatar του χρήστη manolena
    Όνομα
    Μάνος
    Εγγραφή
    Dec 2006
    Περιοχή
    Ελευσίνα
    Μηνύματα
    2.709

    Προεπιλογή

    Η οθόνη αυτή έχει παράδειγμα εφαρμογής εδώ:

    http://learning.grobotronics.com/201...-touch-screen/

    Αν το φορτώσεις με τις ανάλογες μετατροπές σύμφωνα με τις δικές σου συνδέσεις, δουλεύει;
    Θεωρώ επίσης οτι πρόσεξες πως σύμφωνα με το datasheet έχει τάση τροφοδοσίας 3.3V

    http://grobotronics.com/images/datasheets/41608.pdf

    Shield για αυτή την οθόνη έχεις;

    0 Not allowed! Not allowed!

  5. #5
    Μέλος Το avatar του χρήστη thanasis 1
    Όνομα
    Θανάσης
    Εγγραφή
    Jul 2010
    Περιοχή
    ΑΘΗΝΑ
    Μηνύματα
    1.382

    Προεπιλογή

    Εγω την τροφοδοτω με 3,3v αλλα απο οτι βλεπω εδω(ετσι ειναι και σε εμενα)



    εχει voltage regulator στα 3v αρα μπορω να του δωσω στην τροφοδοσια 5V??Σε μερικα σαιτ λενε οτι μπορεις να δωσεις 5V αλλα σε αλλα οχι παρα μονο 3,3V.
    Αυτο που μου εβαλες το ειχα δει αλλα δεν το δοκιμασα μιας και βρηκα την βιβλιοθηκη.
    Shield δεν εχω αλλα ειναι απαραιτητο??εγω δεν εχω arduino παρα μονο σκετο το chip(atmega328p),χωρις αυτο δεν δουλευει??

    0 Not allowed! Not allowed!

  6. #6
    Μέλος Το avatar του χρήστη manolena
    Όνομα
    Μάνος
    Εγγραφή
    Dec 2006
    Περιοχή
    Ελευσίνα
    Μηνύματα
    2.709

    Προεπιλογή

    Αν μπορείς να εξασφαλίσεις οτι τα σήματα απο τον μ/Ε είναι σε εύρος 3.3V, το shield δεν είναι απαραίτητο. O 328 μπορεί να τροφοδοτηθεί με 3.3V οπότε δεν θα έχεις πρόβλημα.
    Απο το σχηματικό προκύπτει οτι η πλακέτα της οθόνης έχει όντως έναν 3.3V regulator για την τροφοδοσία του controller της αλλά οι γραμμές διασύνδεσης με τον ATMega328 σου είναι συμβατικές. Άρα πρέπει οπωσδήποτε να κατεβάσεις την τροφοδοσία του μ/Ε στα 3.3V.

    0 Not allowed! Not allowed!

  7. #7
    Μέλος Το avatar του χρήστη thanasis 1
    Όνομα
    Θανάσης
    Εγγραφή
    Jul 2010
    Περιοχή
    ΑΘΗΝΑ
    Μηνύματα
    1.382

    Προεπιλογή

    Τον atmega328p τον τροφοδοτω με 3,3v και τα σηματα που βγαζει ειναι στα 3,3v.Μπορει να υπαρχει ασυμβατοτητα με τους ILI9325C , ILI9325D_8 , ILI9325D_16 που υποστηριζει η βιβλιοθηκη??
    Να δοκιμασω να τροφοδοτησω την οθονη με 5v μπας και δεν δουλευει με 3,3v αλλα να σου πω την αληθεια φοβαμαι μην την παρω στο χερι.Τις συνδεσεις πως τις βλεπεις ειναι σωστες??

    0 Not allowed! Not allowed!

  8. #8
    Μέλος Το avatar του χρήστη manolena
    Όνομα
    Μάνος
    Εγγραφή
    Dec 2006
    Περιοχή
    Ελευσίνα
    Μηνύματα
    2.709

    Προεπιλογή

    Οι συνδέσεις δεν νομίζω να έχουν θέμα, έτσι κι αλλιώς απο την UTFT ορίζεις εσύ πως αυτές διαμορφώνονται. Την οθόνη μην την πας στα 5V, κρίμα είναι, αν και έχουν αναφερθεί κάτι περιπτώσεις που μερικοί τύποι τις έχουν παει στα 5 και δουλεύουν.

    Ο controller της οθόνης είναι όντως ο ILI9325, απλά έχει δυνατότητα οδήγησης σε 8 και 16bit εύρος πληροφορίας. Εσύ θα επιλέξεις τονILI9325D-8 γιατί ο ATMega328 δεν μπορεί να βγάλει τόσο μακρυά πληροφορία χωρίς να κλατάρει. Νομίζω οτι έχει ένα jumper απο κάτω η πλακέτα της οθόνης σου για 8 ή 16bit λειτουργία.

    0 Not allowed! Not allowed!

  9. #9
    Μέλος Το avatar του χρήστη thanasis 1
    Όνομα
    Θανάσης
    Εγγραφή
    Jul 2010
    Περιοχή
    ΑΘΗΝΑ
    Μηνύματα
    1.382

    Προεπιλογή

    Αυτο το jumper το εχω στον "αερα" γιατι λεει οτι μονο ετσι λιτουργει στα 8bit αν βραχυκυκλωθει πας στα 16bit εγω παντως δεν εχω συνδεσει πουθενα τα DB8-DB15.

    0 Not allowed! Not allowed!

  10. #10
    Μέλος Το avatar του χρήστη manolena
    Όνομα
    Μάνος
    Εγγραφή
    Dec 2006
    Περιοχή
    Ελευσίνα
    Μηνύματα
    2.709

    Προεπιλογή

    Κώδικας:
    #include <UTFT.h>
    //#define TOUCH_ORIENTATION  PORTRAIT
    
    UTFT myGLCD(ITDB24D, Α5, Α4, Α3, Α2 ;
    
    /*
    DB0-DB7 ---> 0-7(PD0-PD7)
    
    RS ---> A5(PC5)
    WR ---> A4(PC4)
    RD ---> 3.3V
    CS ---> A3(PC3)
    REST ---> A2(PC2)
    */
    

    Βάλε αυτές τις γραμμές στον κώδικά σου. Κάνει τα ίδια;

    0 Not allowed! Not allowed!

Σελίδα 1 από 5 1 2 3 ... ΤελευταίαΤελευταία

Παρόμοια Θέματα

  1. arduino & tft οθόνη
    By info@kalarakis.com in forum Software Η/Υ
    Απαντήσεις: 7
    Τελευταίο Μήνυμα: 18-10-20, 18:19
  2. Κώδικας και σύνδεση TFT(1.8SPI) με Arduino;
    By maki in forum Μικροελεγκτές
    Απαντήσεις: 9
    Τελευταίο Μήνυμα: 08-10-16, 15:07
  3. TFT LCD 4.3" τρίλιζα με Arduino DUE
    By manolena in forum Παρουσίαση Ολοκληρωμένων Κατασκευών
    Απαντήσεις: 13
    Τελευταίο Μήνυμα: 12-08-16, 17:30
  4. 2.4" TFT ρολόϊ με Arduino
    By manolena in forum Παρουσίαση Ολοκληρωμένων Κατασκευών
    Απαντήσεις: 16
    Τελευταίο Μήνυμα: 30-08-15, 20:08
  5. Arduino και TFT LCD 3.2''
    By kwstas92 in forum Μικροελεγκτές
    Απαντήσεις: 18
    Τελευταίο Μήνυμα: 27-01-15, 13:05

Δικαιώματα - Επιλογές

  • Δημιουργία θεμάτων: Όχι
  • Υποβολή μηνυμάτων: Όχι
  • Σύναψη αρχείων: Όχι
  • Επεξεργασία μηνυμάτων: Όχι
  •  
  • BB code: σε λειτουργία
  • Smilies: σε λειτουργία
  • [IMG]: σε λειτουργία
  • [VIDEO] code is σε λειτουργία
  • HTML: εκτός λειτουργίας