2 TFT an Arduino-SPI anschließen

#5616843
Lesenswert?

Hallo zusammen,

ich habe am Nano-SPI 2 TFT Displays angeschlossen. Das Problem ist, 
dass, wenn ich das 2. Display mit TFT2.begin() "starte", das 1. Display 
nicht mehr reagiert und einen weißen Bildschirm anzeigt.
Das ist unabhängig davon, welches Display Nr 1 oder 2 ist.
Die Datenleitungen werden von beiden Displays benutzt und das 2. Display 
hat eine eigene CS-Leitung.
Was mache ich falsch?

Hier der Code:
1
#include <SPI.h>
2
#include <ILI9341_due_config.h>
3
#include <ILI9341_due.h>
4
#include "fonts\SystemFont5x7.h"
5

6
#include <Wire.h>
7
#include <MechaQMC5883.h>
8

9
#define TFT_RST 8
10
#define TFT_DC 9
11
#define TFT_CS 10
12

13
#define TFT2_CS 7
14

15
ILI9341_due tft = ILI9341_due(TFT_CS, TFT_DC, TFT_RST);
16
ILI9341_due tft2 = ILI9341_due(TFT2_CS, TFT_DC, TFT_RST);
17

18
void setup(void)  // Start of setup
19
{
20
 Wire.begin();
21
  tft.begin();
22
  tft.setRotation(iliRotation180);
23
  tft.setTextLetterSpacing(2);
24
  tft.fillScreen(ILI9341_YELLOW);
25

26
 tft2.begin();
27
  tft2.setRotation(iliRotation180);
28
  tft2.setTextLetterSpacing(2);
29
  tft2.fillScreen(ILI9341_BLUE);
30
  
31
  tft2.setFont(SystemFont5x7);
32
  tft2.setTextColor(ILI9341_BLACK,ILI9341_YELLOW);  tft2.setTextScale(5);
33
  tft.setFont(SystemFont5x7);
34
  tft.setTextColor(ILI9341_BLUE,ILI9341_WHITE);  tft.setTextScale(4);
35
  
36
  
37
 }  // End of setup
38

39
void loop(void)  // Start of loop
40
{
41
  tft.cursorToXY(30,20);
42
  tft.print ("Test");
43
  tft.cursorToXY(25,230);
44
  tft.print ("12345");
45

46
  tft2.cursorToXY(25,230);
47
  tft2.print ("tseT");
48
  tft2.cursorToXY(25,230);
49
  tft2.print ("54321");
50

51
 }  // End of loop
#5618525
Lesenswert?

Puh - gute Fragen. Ehrlich gesagt überschreitet die Analyse von 
Libraries meine Fähigkeiten - ich bin mehr so der Typ ich baue mir aus 
verschiedenen Bausteinen meine Anwendung zusammen bzw. adaptiere sie und 
entwickle meine Programmierkenntnisse sukzessive (langsam) weiter. 
Leider bin ich noch nicht so weit.
Gast #5618562
Lesenswert?

Du musst hier (ILI9341_due_config.h) auf EXTENDED
1
/*
2
ILI9341_due_config.h - Arduino Due library for interfacing with ILI9341-based TFTs
3

4
Code: https://github.com/marekburiak/ILI9341_due
5
Documentation: http://marekburiak.github.io/ILI9341_due/
6

7
Copyright (c) 2015  Marek Buriak
8

9
*/
10

11
#ifndef _ILI9341_due_configH_
12
#define _ILI9341_due_configH_
13

14
// comment out the SPI mode you want to use (does not matter for AVR)
15
//#define ILI9341_SPI_MODE_NORMAL  // uses SPI library
16
//#define ILI9341_SPI_MODE_EXTENDED  // uses Extended SPI in Due, make sure you use pin 4, 10 or 52 for CS
17
#define ILI9341_SPI_MODE_DMA    // uses DMA in Due

stellen und die angegebenen CS-Pins verwenden.

Davon ausgehend, dass du diese "Copyright (c) 2014  Marek Buriak" 
Library verwendest ...
Gast #5620383
Lesenswert?

Moin,
jo ich benutze diese Library. War leider ein paar Tage offline - komme 
aber hoffentlich heute Abend dazu es auszuprobieren.

Gruß und vorab schon mal vielen Dank für die Unterstützung!

Andreas
Gast #5620434
Lesenswert?

M. K. schrieb:
> Linux T. schrieb:
>> Du benutzt für beide Displays einen GPIO als Reset. Das kann nicht
>> funktionieren.
>
> Das ist ja egal.
> Für beide den selben CS/DC zu benutzen wäre blöd.

So ein Quatsch.
In TFT.begin() wird ein Reset gemacht. Daher auch:

> Das Problem ist, dass, wenn ich das 2. Display mit
> TFT2.begin() "starte", das 1. Display nicht mehr
> reagiert und einen weißen Bildschirm anzeigt.

Also: 2 Reset-Pins und alles ist schick.
#5620448
Lesenswert?

Andreas G. schrieb:
> ich bin mehr so der Typ ich baue mir aus
> verschiedenen Bausteinen meine Anwendung zusammen

Das geht aber halt nur solange gut, bis man den vorgesehenen Pfad 
verlassen will. Das tust du, in dem du zwei TFTs betreiben willst. Und 
nicht nur ein einziges.
In diesem Moment schlägt das nicht vorhandene Wissen und die an den Tag 
gelegte Faulheit einem frontal in die Kauleiste. Nicht schön, aber 
Mitleid wirst du mit solch einer Einstellung auch nicht bekommen. Sei 
froh dass du mit deinem Nullwissen überhaupt 1 TFT betreiben kannst.
Gast #5620523
Lesenswert?

Cyblord -. schrieb:
> In diesem Moment schlägt das nicht vorhandene Wissen und die an den Tag
> gelegte Faulheit einem frontal in die Kauleiste. Nicht schön, aber
> Mitleid wirst du mit solch einer Einstellung auch nicht bekommen. Sei
> froh dass du mit deinem Nullwissen überhaupt 1 TFT betreiben kannst.

BlaBlaBla.
Gast #5620534
Lesenswert?

Cyblord -. schrieb:
> Andreas G. schrieb:
>> ich bin mehr so der Typ ich baue mir aus
>> verschiedenen Bausteinen meine Anwendung zusammen
>
> Das geht aber halt nur solange gut, bis man den vorgesehenen Pfad
> verlassen will. Das tust du, in dem du zwei TFTs betreiben willst. Und
> nicht nur ein einziges.


Er verläßt den vorgesehenen Pfad doch gar nicht.
Um im Bild zu bleiben: Er hat sich den Pfad gar nicht angesehen (nämlich 
die Bedeutung der Parameter), daher ist er auch vom Pfad abgekommen.
#5621120
Lesenswert?

Es funktioniert - der Tipp mit dem separaten Reset hat geholfen.
Einen großen Dank an die die mir hier WIRKLICH geholfen haben!

@Cyblord: es tut mir aufrichtig Leid, dass solch ein Wicht wie ich, der 
Deiner wirklich nicht ansatzweise würdig ist, hier so saudämliche Fragen 
stellt.
Sollte ich Dir mit meiner kreuzdoofen Frage den Abend versaut haben, so 
bitte ich dies zu entschuldigen.

Andreas

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren