Dva displeje ST7735
Dva displeje ST7735
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!
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
Myslím, že tady je chyba:
Mělo by být všechno "tft1.";
Třeba to není ono, uvidíš...
Kód: Vybrat vše
tft1.setTextColor(ST7735_RED);
tft1.setTextSize(2);
tft2.setCursor(0, 0);
tft1.print("Displej 1");
Třeba to není ono, uvidíš...
Re: Dva displeje ST7735
Omlouvám se, to byl překlep, který jsem neopravil. Bohužel to není ono, ale dík za snahu...
-
- Příspěvky: 1030
- Registrován: 06 zář 2017, 20:04
- Reputation: 0
- Bydliště: Brno
- Kontaktovat uživatele:
Re: Dva displeje ST7735
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
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
z C++ znám jen základy. Ale musí to kruci jít, ne? No, uvidíme
Re: Dva displeje ST7735
Tak výstupy CS1 a Cs2 jsou funkční. Proč se tedy první displej po inicializaci druhého displeje zablokuje, to mi není jasné...
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...
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...
- SkullKeep
- Příspěvky: 290
- Registrován: 23 srp 2017, 18:51
- Reputation: 0
- Bydliště: Brno
- Kontaktovat uživatele:
Re: Dva displeje ST7735
Podle mne bych jeste zkusil dat na samostany piny TFT_RST a TFT_DC u kazdeho displaye. Snad se ukaze kde je chyba.
P. Q. M.
Re: Dva displeje ST7735
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í....
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 13 hostů