Sdoppiare display spi (RISOLTO)

sto potenziando un progetto su un arduino nano , con un display oled SPI 1.5" a colori (ssd1351) adesso le cose da visualizzare contemporaneamente sono diventate troppe,
volevo aggiungere un altro display identico che problemi ci possono essere ?
la libreria richiede questi pin

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1351.h>

#define SCLK_PIN 13
#define MOSI_PIN 11
#define CS_PIN   10
#define RST_PIN  8
#define DC_PIN   7

che si fa? basta "separare" solo i pin reset e cs?

Per posizionare due schermi devi condividere tutti i pin tranne il cs, "chip selec" che deve essere gestito nel tuo programma a seconda dello schermo su cui vuoi scrivere. Dovrai anche aggiungere alcuni componenti aggiuntivi:

Posizionando i pin 8 e 9 in HIGH o LOW, puoi scrivere comodamente su uno schermo o sull'altro.
Saluti

ok pero non comprendo il motivo dei due diodi connessi al pin :face_with_monocle:

collegarli direttamente i due cs a i pin 6-9 che male ci sarebbe ?
all'inizio di ogni pezzetto di codice che scrive sul display faccio
digitatWrite LOW e appena finito di scrivere faccio digitatWrite HIGH

il pin 10 lo lascio scollegato

Ho usato i pin 8 e 7 solo come esempio senza notare che li hai già usati, ovviamente devi usarne altri che attualmente non usi, è il resto delle connessioni così come le hai condivise.

Quei due diodi formano solo un gate "OR" per il pin 10. Vedo anche la tua soluzione praticabile, provala, ma prima ... Ho installato quella libreria e ho definito due schermate in questo modo:

Adafruit_SSD1351 tft = Adafruit_SSD1351 (SCREEN_WIDTH, SCREEN_HEIGHT, 10, DC_PIN, MOSI_PIN, SCLK_PIN, RST_PIN); 
Adafruit_SSD1351 tft1 = Adafruit_SSD1351 (SCREEN_WIDTH, SCREEN_HEIGHT, 3, DC_PIN, MOSI_PIN, SCLK_PIN, RST_PIN);

Per mostrare qualcosa che chiamo tft per uno e tft1 per l'altro, compila bene senza errori. Non ho due schermi per testarlo, provalo, penso che possa funzionare senza aggiungere nulla.

Hai modificato il post e mi hai confuso, se per la tua soluzione lo lasci disconnesso.

ho aggiustato perche il pin 7-8 erano impegnati dal display
intendo una cosa dl genere

 pinMode(schermo_1, OUTPUT); // cs spi schermo  scrive quando e basso
digitalWrite (schermo_1,HIGH);
 
//digitalWrite (schermo_1,LOW);
//digitalWrite (schermo_1,HIGH);

tft.begin();
 digitalWrite (schermo_1,LOW);
tft.fillScreen(BLACK);
 digitalWrite (schermo_1,HIGH);

Se lo hai già capito prima, provalo, ma se non funziona, prova il contrario nel caso vada con il livello alto. Anche se, come ho detto prima, se quella libreria ti permette di definire due schermate, (codice sopra), semplificherebbe molto la programmazione.

ok per le 2 schermate ma non capisco come fare a mandare le scritte a uno o a l'altro

Una volta dichiarato il codice precedente e connesso il cs, ad esempio a 10 e 3, il resto nei pin che avete e condiviso.

tft.begin();
tft1.begin(); // questo potrebbe non essere necessario

tft.fillScreen(BLACK);
tft1.fillScreen(BLUE);

Gli ordini dati con tft. Andrebbero a una schermata e quelle fornite con tft1 all'altra (se la libreria lo consente). È come quando guidiamo 4 servi con una singola libreria di servo.

:slightly_smiling_face: ok funziona tutto eliminando questo
tft1.begin(); usero questo sistema che fa risparmiare un pin rispetto al mio sistema tanks

@elrospo : ancora una volta ti ricordo che, In conformità al REGOLAMENTO, fosse anche per una sola riga, il codice va racchiuso negli appositi tag ...

... cortesemente, quindi, edita i tuoi post più sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone a forma di piccola matita :pencil2: che si trova in basso del tuo post), seleziona la parte di codice e premi l'icona </> nella barra degli strumenti per contrassegnarla come codice.

Inoltre, così com'è, non è molto leggibile ... assicurati di averlo correttamente indentato nell'IDE prima di inserirlo (questo lo si fa premendo ctrlT su un PC o cmd T su un Mac all'intero del IDE).

Guglielmo

P.S.: Dato che NON è la prima volta che debbo segnalarti questa cosa ti rammento che il continuo violare il regolamento porta, prima o poi, ad un ban ... che mi dispiacerebbe dover applicare ... :neutral_face:

ok le regole sono regole e vanno rispettate, ho provato a sistemare ma non sono sicuro se ho fatto correttamente

Ottimo, grazie :+1: :+1: :+1:

Guglielmo

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.