Aviso

El foro está en modo de sólo lectura.

COMO MOSTRAR LA LISTA DE ARCHIVOS DE UNA SHIELD SD EN NEXTION

Más
6 años 3 meses antes #1136 por DFC
Saludos, tengo un proyecto que debe mostrar en la pantalla Nextion, lista de nombres de archivos de una Shield SD (similar a la lista de archivos del SD de una impresora 3D).
He logrado leer la SD con arduino y mostrar la lista en el Serial Port. Pero no soy capaz de transmitir esa información a la pantalla y hacer que se ordenen en t0, t1, t2, t3, t4, t5, t6 y t7.

Código de Arduino
//Libreria Nextion https://github.com/bborncr/nextion
#include <SD.h>
#include <Nextion.h>
#include <SPI.h>

SoftwareSerial nextion(2, 3);// Nextion TX to pin 2 and RX to pin 3 of Arduino
Nextion myNextion(nextion, 9600); //create a Nextion object named myNextion using the nextion serial port @ 9600bps
const int chipSelect = 10;//pin CS del módulo SD
File myFile;
uint8_t i;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  myNextion.init();
  while (!Serial) { ; } // espera a que el puerto serie se conecte. Necesario para el puerto USB nativo solamente
  
if (!SD.begin(chipSelect)){
   Serial.println("Error leyendo la tarjeta MicroSD.");
   return;
}
Serial.println("Lectura correcta");
myFile = SD.open("/");
printDirectory(myFile, 0);
Serial.println("Fin de lectura");
}

void loop() {
  // put your main code here, to run repeatedly:

}

void printDirectory(File dir, int numTabs) {
  while (true) {

    File entry =  dir.openNextFile();
    if (! entry) {
      // no hay mas archivos
      break;
    }
    for (i = 0; i < numTabs; i++) {  Serial.print('\t');}
    //Serial.println(entry.name());
    String DATOS = entry.name();
    Serial.println(DATOS);
    
    //myNextion.setComponentValue("page0.DATOS",entry.name());
      myNextion.setComponentText("page0.t0",DATOS);
      myNextion.setComponentText("page0.t1",DATOS);
      myNextion.setComponentText("page0.t2",DATOS);
      myNextion.setComponentText("page0.t3",DATOS);
      myNextion.setComponentText("page0.t4",DATOS);
      myNextion.setComponentText("page0.t5",DATOS);
      myNextion.setComponentText("page0.t6",DATOS);
      myNextion.setComponentText("page0.t7",DATOS);
    entry.close();
  }
}

El archivo HMI esta hecho en USART HMI el link de la app es USART HMI

Archivo Adjunto:

Nombre del Archivo: PRUEBA_SD.rar
Tamaño del Archivo:56 KB

La pantalla es un TJC, usa la misma librería que Nextion.


En el video se muestra la lista en el Serial, pero en la pantalla no he sido capaz de ordenarlo. Por ello solicito su apoyo, estoy seguro que este tipo de proyecto les servirá para poder realizar por ejemplo una reproductor mp3, un DSP CNC...
De antemano agradezco su tiempo.
Adjuntos:
Más
6 años 3 meses antes #1137 por Jose Luis
Yo lo que veo, corrijeme si me equivoco, es quwetu vas mostrando por el puerto serie, los datos segun los vas leyendo. Por lo que veo en tu codigo, todas las etiquetas van mostar siempre lo mismo, lo que tengas en dato. Como tienes 7 etiquetas, segun mi opinion, primero tienes que leer 7 datos, o bien los que tengas si no llega a 7, y cada dato en una variable, y luego mandas la informacion a la nextion.

Creo, que como lo tienes tu, si muestra algo, siempre mostraria los mismos datos en todas las etiquetas.
El siguiente usuario dijo gracias: DFC
Más
6 años 3 meses antes #1140 por DFC
Si estimado Jose Luis, estoy enviando el mismo dato a todas las etiquetas.

Como tienes 7 etiquetas, segun mi opinion, primero tienes que leer 7 datos, o bien los que tengas si no llega a 7, y cada dato en una variable, y luego mandas la informacion a la nextion.


No se como puedo implementar ese algoritmo que mencionas, si tal vez pudieras sugerirme algún código sería de mucha ayuda, llevo como tres días pensando como implementarlo, he tratado de guardarlo en arreglos pero me da errores.
Son 6 nombres de archivos (ARCHIVOS TXT QUE GUARDE EN LA SHIELD SD) y la lectura es en este formato (UNO.TXT DOS.TXT TRES.TXT CUATRO.TXT CINCO.TXT SEIS.TXT) en un solo bloque.

Pero no soy capaz de implementar un código que los separe independientemente. Para así enviarlo como mencionas a cada etiqueta.

UNO.TXT ==> t0.txt
DOS.TXT ==> t1.txt
TRES.TXT ==> t2.txt
CUATRO.TXT ==> t3.txt
CINCO.TXT ==> t4.txt
SEIS.TXT ==> t5.txt
Más
6 años 3 meses antes #1143 por Jose Luis
Exactamente a eso me referia. La lectura la haces desde arduino, o usas la sd de la nextion y lees desde la nextion?
Más
6 años 3 meses antes #1152 por DFC
Estoy usando una shield microSD, la lectura la hago desde arduino y los datos los envío a la pantalla solo para visualizarlo.
Más
6 años 3 meses antes #1153 por Jose Luis
Busca los comandos para trabajar con strings, creo recordar que hay funciones para trocear un string en varios indicandole por donde tiene que cortar.
Tiempo de carga de la página: 0.120 segundos
Gracias a Foro Kunena