Arduino Mega 2560 R3 + Ethernetshield + Sainsmart 3,2" TFT LCD Display

Liebe Community,

Ich versuche seit einiger Zeit die oben genannten Komponenten gestapelt zum Laufen zu bekommen.

Für das TFT LCD Display verwende Ich die Bibliothek von Henning Karlsen. Diese wurde
ebenfalls auf der Homepage von Sainsmart angeboten:

Das Ethernet wird benötigt, um eine direkte Datenbankverbindung zum MySQL-Server aufzubauen.

Hierfür wird die Bibliothek von Dr. Charles Bell verwendet:

Eine Datenbankverbindung in der Kombination (Arduino + Ethernet) funktioniert einwandfrei.

Der Beispielcode für die UTFT-Library funktioniert in der Kombination (Arduino + TFT) ebenfalls problemlos.

Sobald alle Komponenten gleichzeitig verwendet werden, wird die Datenbankverbindung nicht mehr hergestellt. Also vermute ich irgendwo einen Pin-Konflikt.

Hier einmal der Code, mit dem ich es bisher probiert habe:

#include <UTFT.h>

// Declare which fonts we will be using
extern uint8_t SmallFont[];

// Uncomment the next line for Arduino Mega
UTFT myGLCD(SSD1289,38,39,40,41);   // Remember to change the model parameter to suit your display module!

#include <Ethernet.h>
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>

IPAddress EthernetShieldIPAddress(XXX,XXX,XXX,XXX);

byte mac_addr[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

IPAddress server_addr(XXX,XXX,XXX,XXX);

char user[] = "Benutzername";              // MySQL user login username
char password[] = "Passwort";        // MySQL user login password

// Sample query
char query[] = "SELECT Befehl";

EthernetClient client;
MySQL_Connection conn((Client *)&client);
// Create an instance of the cursor passing in the connection
MySQL_Cursor cur = MySQL_Cursor(&conn);

void setup() 
{
  myGLCD.InitLCD();
  myGLCD.clrScr();
  
  myGLCD.setFont(SmallFont);

  myGLCD.fillScr(255,255,255);
  
  Ethernet.begin(mac_addr, EthernetShieldIPAddress);

  myGLCD.setColor(0, 0, 0);
  myGLCD.setBackColor(255, 255, 255);
  myGLCD.print("DB-Connection...", CENTER, 100);

  if (conn.connect(server_addr, 3306, user, password)) 
  {
    myGLCD.setColor(0, 0, 0);
    myGLCD.setBackColor(255, 255, 255);
    myGLCD.print("DB-Connection...OK", CENTER, 100);

    delay(1000);
  }
  else
  {
    myGLCD.setColor(0, 0, 0);
    myGLCD.setBackColor(255, 255, 255);
    myGLCD.print("DB-Connection...FAIL", CENTER, 100);
  }
}


int i =0;

void loop() 
{  
  row_values *row = NULL;
  long head_count = 0;

  delay(1000);

  //Serial.println("1) Demonstrating using a cursor dynamically allocated.");
  // Initiate the query class instance
  MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
  // Execute the query
  cur_mem->execute(query);
  // Fetch the columns (required) but we don't use them.
  column_names *columns = cur_mem->get_columns();

  // Read the row (we are only expecting the one)
  do {
    row = cur_mem->get_next_row();
    if (row != NULL) {
      head_count = atol(row->values[0]);
    }
  } while (row != NULL);
  // Deleting the cursor also frees up memory used
  delete cur_mem;

  // Show the result
  //Serial.print("  NYC pop = ");
  //Serial.println(head_count);

  delay(500);

  //Serial.println("2) Demonstrating using a local, global cursor.");
  // Execute the query
  cur.execute(query);
  // Fetch the columns (required) but we don't use them.
  cur.get_columns();
  // Read the row (we are only expecting the one)
  do {
    row = cur.get_next_row();
    if (row != NULL) {
      head_count = atol(row->values[0]);
    }
  } while (row != NULL);
  // Now we close the cursor to free any memory
  cur.close();

  // Show the result but this time do some math on it
  //Serial.print("  NYC pop = ");
  //Serial.println(head_count);
  //Serial.print("  NYC pop increased by 12 = ");
  //Serial.println(head_count+12);

}

Im Anhang findet ihr ein Bild des aktuellen Aufbaus.

Vielen Dank für eure Mühen. :slight_smile:

Gruß

Mike89