Como Conectar 5 Pantallas 2.8" ILI9341 a un Arduino Mega.

Hola chicos, he estado leyendo todo el hilo de Algunos consejos para usar TFT´s el cual necesitaba documentarme para el proyecto en el cual estoy inmerso, el tema es que voy haciendo las cosas poco a poco, decir que @surbyte me ha echado una mano en algunas, y he llegado al punto de visualizar unos datos en 5 pantallas, en principio la idea era ver esos datos a traves de 5 LCD 1602, pero me he dicho y no quedaria mejor con una pantalla TFT de 2,8, me he puesto a indagar y no he encontrado nada, hasta que he llegado ha este hilo y en la pagina 2 he visto un comentario de @TFTLCDCyg que decia

‘Si se define una segunda instancia de configuración y se conecta el pin CS a otro pin digital (20 o 21), se consigue controlar cada pantalla de forma independiente.’
Luego he visto en otro hilo suyo parte de codigo que se habla del mismo tema:

#include <SPI.h> 
#include "Adafruit_GFX.h" 
#include "Adafruit_ILI9341.h" 

#define TFT_DC 9 
#define TFT_CS 10 
#define TFT_CS2 21 

Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC); 
Adafruit_ILI9341 tft2 = Adafruit_ILI9341(TFT_CS2, TFT_DC);

Con lo cual he visto la luz, el problema es que no se como se podria hacer esto por que estoy empezando, la idea seria conectar 5 Pantallas 2.8" ILI9341 a un Arduino Mega, le llegarian datos de texto y los mostraria.

Si fuesen tan amables de echarme una mano ha sacar este proyecto a delante, yo la verdad no se por donde empezar.

Salu2.CRIS.

Las pantallas que mencionas son dispositivos SPI y lo unico que debes hacer para comandar varias dispositios SPI es tener diferentes ChipSelects con resistencia pull-up de 10k (por son activos LOW) y no deberías tener problemas.

Creas 5 instancias y te manejas de ese modo.
Podrias incluso crear un array de 5 objetos.

Verifica el uso de RAM, no uses un UNO, considera un MEGA mínimo o DUE.

Otra alternativa es usar un NANO por cada pantalla y comunicarlos de algun modo.

Muchas gracias @surbyte, pero creo que con los conocimientos que tengo no voy a ser capaz de sacar esto adelante sin vuestra ayuda.

Busca Arduino multiple Spi devices y verás en imagenes de lo que hablo.

Este es lo que te estoy aconsejando

|500x251

Todas las pantallas conectados a los mismos pines pero cada CS de cada pantalla a un pin diferente que luego deberás indicar a tu objeto pantalla.

Es muy facil. Mira a las 5 pantallas como una sola, todas conectadas igual salvo sus CS.

En ello estoy, viendo cómo funciona todo el tema SPI, otra cosa será después el código, pero poco a poco creo lo sacare.

Gracias @surbyte

Esta es la parte que importa, te dejo un ejemplo pero solo con una pantalla. Mucho trabajo para las demas…

#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"

// For the Adafruit shield, these are the default.
#define TFT_DC  9
#define TFT_CS1 8
#define TFT_CS2 7
#define TFT_CS3 6
#define TFT_CS4 5
#define TFT_CS5 4

// Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC

Adafruit_ILI9341 tft[5] ={
    Adafruit_ILI9341(TFT_CS1, TFT_DC),
    Adafruit_ILI9341(TFT_CS2, TFT_DC),
    Adafruit_ILI9341(TFT_CS3, TFT_DC),
    Adafruit_ILI9341(TFT_CS4, TFT_DC),
    Adafruit_ILI9341(TFT_CS5, TFT_DC)
};

// If using the breakout, change pins as desired
//Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO);

void setup() {
  Serial.begin(9600);
  Serial.println("ILI9341 Test!"); 
 
  for (int i=0; i<5; i++) {
        tft[i].begin();  // inicializo las 5 pantallas


/// SIGUE en el adjunto

graphicstest.ino (10.5 KB)

Recuerda usar una fuente externa de 3.3V, es posible que esas 5 pantallas drenen toda la energía de tu arduino. Al pendiente del avance de tu proyecto, en aquella ocasión lo intenté con dos pantallas en un teensy 3.2 y funcionó muy bien.

Por cierto te sugiero que uses chips CD4050BE en cada pantalla en lugar de los divisores resistivos; para que reduzcas las fallas de cableado. Ese chip te lo ahorrarías si usaras un arduino Due en lugar del MEGA :art:

Muchisimas gracias chicos por toda la ayuda que me estais brindando, surbyte vaya currada que te has pegado con el codigo gracias de corazon. Entoces TFTLCDCyg lo primero que tendria que hacer seria pillarme la arduino Due, por que va llevar conectado, las 5 pantallas, 5 sensores ultrasonido Hc-sr04, y 5 led RGB. Creo que todo se llevara bastante consumo. Piensas que con la placa due y el resto de componentes (pantallas, ultrasonidos y led) tendria bastante para hacerlo funcionar todo?

Lo tomé como ejercicio de manejo de objetos.

Te repito que solo lo hice para tft[0] y tu deberías modificar en ese caso las rutinas para que admitan el index y de ese modo hacerlo genérico para las 5 pantallas algo asi.

Bueno se nota que anoche no estaba tan lúcido como hoy.

Hoy lo vi mas simple y acá esta modificado para 5 pantallas. Pero… tiene muchos delay() asi queva a demorar mucho en verse en las 5 pantallas pero servirá.

Adjunto archivo completo para 5 pantallas.

graphicstest.ino (11.1 KB)

Gracias surbyte.

Respecto al consumo, sin lugar a dudas recomiendo para ese arreglo usar una fuente externa de 3.3V

He visto esta pantalla y pone que funciona a 3.3 y a 5 v, me podria servir alimentando el arduino con corriente en vez de por usb? en las carasteristicas pone Compatible con tensión de 5V ya que dispone de regulador de tensión en placa |500x500

Al arduiino lo puedes alimentar como gustes pero no podras alimentar 5 pantallas de los 5V del arduino. Es lo que te dijimos desde el comienzo.

@surbyte creo que no me he explicado bien, lo que queria decir es que arduino lo alimento con corriente y las 5 pantallas, los 5 ultrasonidos Hc-sr04 y los 10 led RGB los alimento externamente con el MB102, lo que no tengo claro es cuantos necesitaria para todos los componentes.

|500x500

@TFTLCDCyg si tienes la pantalla sabrías decirme cuantos necesitaría?

De acuerdo con este datasheet (ILI9341) cada pantalla tiene un backlight de 4 leds, en teoría consumen 80 mA, en la práctica unos 95 mA promedio, para las 5 pantallas en línea: 95x5 = 475 mA

Podrías usar un regulador AMS1117, hay breakouts de tres pines que se pueden alimentar mediante USB, pero hay que armar un pequeño cable. Entregan hasta 900 mA según el datasheet

O bien podrías usar fuentes regulables con 2A max en la línea de salida, incluso las hay que pueden ajustar el voltaje y el amperaje a la salida para mayor seguridad, son más robustas que la fuente que señalas

@TFTLCDCyg te refieres al que he puesto en la foto? Es el AMS1117.

Sus Características:
100% nuevo y de alta calidad
Para MB102 el pan
Compatible con 5 V 3,3 V
Voltaje de entrada: 6,5-12 V (CC) o fuente de alimentación USB
Voltaje de salida: 3,3 V, 5 V conmutable
Corriente de salida máxima: <700ma
Dos Vías de control independiente
Puede ser cambiado a 0 V 3,3 V 5 V
Dos juegos integrados de pines de salida de 3,3 V, 5 V CC, facilitan los cables externos
Tamaño: approx.53x35x19mm

Y este es el consumo de los Hc-sr04:

Corriente de reposo: < 2mA
Corriente de trabajo: 15mA

Con lo cual serían 75mA los 5 ultrasonidos + los 475mA de las pantallas = 550mA y el AMS1117 nos daria 700mA de salida ósea que creo que perfecto con uno.

Lo que acabas de hacer es lo que se debe hacer siempre.

Miras todos los elementos, buscas sus consumos y luego ves como puedes comandar todo de modo organizado.

Voy aprendiendo poco a poco.

Correcto, prueba agregando poco a poco pantallas al arreglo principal, así descartarás fallos inesperados.

No te olvides probar cada elemento por separado, hasta que te familiarices con sus librerías. Ten siempre presente que el uso de delays no es una buena práctica cuando unes varios componentes en un solo proyecto

Muchas gracias TFTLCDCyg.