Stránka 1 z 1

Dva displeje ST7735

Napsal: 06 dub 2018, 12:32
od petouf
Ahoj, řeším problém:
Potřebuji řídit dva displeje jedním Arduinem Mega. Podle návodů na netu https://forum.arduino.cc/index.php?topic=382489.0 jsem sesmolil kod:

#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <SPI.h>

#define TFT_CS1 10 // pro první displej
#define TFT_CS2 7 // pro druhý displej
#define TFT_RST 9
#define TFT_DC 8
#define TFT_SCLK 11 //nemohu používat "originál" SPI pin52 - tam mi "visí" něco jiného
#define TFT_MOSI 12 //nemohu používat "originál" SPI pin51 - tam mi "visí" něco jiného

Adafruit_ST7735 tft1 = Adafruit_ST7735(TFT_CS1, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST); //nastavení prvního displeje
Adafruit_ST7735 tft2 = Adafruit_ST7735(TFT_CS2, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST); //nastavení druhého displeje

void setup(void)
{
tft1.initR(INITR_BLACKTAB); //inicializace prvního displeje
tft1.setRotation(1);
tft1.fillScreen(ST7735_BLACK);

tft2.initR(INITR_BLACKTAB); //inicializace druhého displeje
tft2.setRotation(1);
tft2.fillScreen(ST7735_BLACK);
}

void loop()
{
tft1.setTextColor(ST7735_RED);
tft1.setTextSize(2);
tft2.setCursor(0, 0);
tft1.print("Displej 1");

tft2.setTextColor(ST7735_RED);
tft2.setTextSize(2);
tft2.setCursor(0, 0);
tft2.print("Displej 2");

}

No, a funguje jen druhý displej. První displej po startu zčerná, pal zbělá a nenapíše nic. Druhý displej pak zčerná a napíše text Displej 2. Jakoby inicializace druhého displeje ten první zastavila. Pokud smáznu inicializaci druhého displeje, první mi funguje, ale druhý samozřejmě ne.
Ale dva displeje fungují: https://learn.adafruit.com/animated-ele ... 1/overview Bohužel jsem začátečník a kód z tohoto příkladu jsem nerozlousknul. A má Angličtina je na tom mizerně.

Tak pokud někdo dokáže poradit, nakopnout mě tím správným směrem, budu rád.
Dík a přeji pěkný den!

Re: Dva displeje ST7735

Napsal: 06 dub 2018, 12:58
od ohruska
Myslím, že tady je chyba:

Kód: Vybrat vše

tft1.setTextColor(ST7735_RED);
tft1.setTextSize(2);
tft2.setCursor(0, 0);
tft1.print("Displej 1");
Mělo by být všechno "tft1.";
Třeba to není ono, uvidíš...

Re: Dva displeje ST7735

Napsal: 06 dub 2018, 13:40
od petouf
Omlouvám se, to byl překlep, který jsem neopravil. Bohužel to není ono, ale dík za snahu...

Re: Dva displeje ST7735

Napsal: 06 dub 2018, 13:46
od jankop
Mě se ještě nelíbí, že se to mele ve smyčce loop pořád dokola. Dal bych tam aspoň nějakou prodlevu, respektive střídání nápisů, ať vidíš že to něco dělá.

Kód: Vybrat vše

void setup(void)
{
tft1.initR(INITR_BLACKTAB); //inicializace prvního displeje
tft1.setRotation(1);
tft1.fillScreen(ST7735_BLACK);

tft2.initR(INITR_BLACKTAB); //inicializace druhého displeje
tft2.setRotation(1);
tft2.fillScreen(ST7735_BLACK);

tft1.setTextColor(ST7735_RED);
tft1.setTextSize(2);
tft2.setTextColor(ST7735_RED);
tft2.setTextSize(2);
}

void loop()
{
tft1.setCursor(0, 0);
tft1.print("Displej 1");
tft2.setCursor(0, 0);
tft2.print("Displej 2");
delay(1000)
tft1.setCursor(0, 0);
tft1.print("Ahoj    1");
tft2.setCursor(0, 0);
tft2.print("Ahoj    2");
delay(1000)
}

Re: Dva displeje ST7735

Napsal: 06 dub 2018, 17:56
od petouf
Jasně, v pondělí to zkusím, ale myslím, že jsem s tímto již také experimentoval. Asi si píchnu oscoloskop na ty CS1 a CS2 a kouknu, zda "pracují". Jakoby se navolil při inicializaci nejprve CS1, zinicializoval se 1. displej, pak se nahodí CS2, zinicializuje se druhý displej, ale CS1 se pak už nenahodí. Je to jen taková myšlenka, vyzkoušim v pondělí, bude-li čas. Co by pomohlo? jiné piny pro CS? Rozpitvat knihovnu? Ale pochybuji, že něco objevim,
z C++ znám jen základy. Ale musí to kruci jít, ne? No, uvidíme :)

Re: Dva displeje ST7735

Napsal: 09 dub 2018, 09:27
od petouf
Tak výstupy CS1 a Cs2 jsou funkční. Proč se tedy první displej po inicializaci druhého displeje zablokuje, to mi není jasné... :evil:
Třeba by to vyřešil nějaký převodník na I2C, ale nevim, zda něco takového vůbec existuje. Další věc je použít 2 arduina, ale to se mi také moc nechce. Ještě zabádám, ale moc nadějí si nedávám... :(

Re: Dva displeje ST7735

Napsal: 09 dub 2018, 10:10
od SkullKeep
Podle mne bych jeste zkusil dat na samostany piny TFT_RST a TFT_DC u kazdeho displaye. Snad se ukaze kde je chyba.

Re: Dva displeje ST7735

Napsal: 09 dub 2018, 12:13
od petouf
No, krucipísek. Stačilo dát TFT_RST na samostatný pin a běhá to (zatím :) ) jako po másle. Jak jednoduché. Díky za postrčení....