Hola buen día, ya tiene rato que pongo preguntas por aca...
Larga historia corta, estoy haciendo un datalogger con 4 sensores de temperatura y dos de humedad, de hecho ya los sensosores y lo demas ya funciona, asi que en ese aspecto no hay problema.
Recientemente he querido agregarle una pantalla, para lo cual cuento con una 128x64 y etoy haciendo pruebas de texto estatico y caben 4 lineas de texto con 4 datos cada una algo asi;
12.0 15.1 20.1 12.0
12.0 13.0 21.1 15.1
12.0 15.1 20.1 12.0
12.0 13.0 21.1 15.1
Y bueno, obviamente agregare un RTC para tomar la fecha y hora de la lectura
Ahora bien, teniendo en cuenta lo anterior, me busque un codigo que hiciera algo similar
y enconte este;
Donde se imprimen las renglones con ayuda de un pointer...
char line0[3] = { 'a', 'b', 'c' };
char line1[3] = { 'd', 'e', 'f' };
char line2[3] = { 'g', 'h', 'i' };
char* lines[4];
char* column;
void setup() {
lines[0] = line0;
lines[1] = line1;
lines[2] = line2;
Serial.begin(9600);
}
void loop() {
int i,j;
for(i=0;i<3;i++)
{
column = lines[i]; // get the array address
for(j=0;j<3;j++)
{
Serial.print(*column++); // print the element, then increment the index
}
Serial.println(); // line break
}
while(1); // infinite loop to stop the program
}
Bueno lo he probado y funciona, ahora quiero hacer lo inverso:
Quiero tomar 4 datos de los 4 sensores, ponerlos en un renglon a la vez y continuar, de manera que conforme se llenen los datos en la pantalla, se "recorran a los mas nuevos", obviamente grabare renglon por renglón y la fecha y hr ira impresa pero no se mostrara en la LCD.
Esto es lo que hice para modificar el codigo;
Me genera uno o dos numero pero luego aparecen ( ) &%? simbolos, y bueno creo que es un buen ejercicio, espero que me puedan ayudar con algo.
byte line0[3];
byte line1[3];
byte line2[3];
char* lines[4];
char* column;
void setup() {
Serial.begin(9600);
}
void loop()
{
int i,j = -1;
for(i=0;i<3;i++)
{
column = lines[i]; // get the array address
for(j=0;j<3;j++)
{
*column = random(0,60);
Serial.print(*column);Serial.print(" "); // print the element, then increment the index
}
Serial.println(); // line break
}
delay(5000);
}
Las temperaturas que quiero medir son floats, pero no le veo mucho cambio a bytes, por el momento me quiero concetrar mas es saber como funcionan los pointers....
Hasta lo que he leido... apuntan a una variable del mismo tipo, en este caso, seria algo asi como;
anota en renglon 1... despues anota en renglon 2.... etc...
De ser asi, podria tomar todos los datos necesarios y ponerlos en una sola linea de texto usando sprintf para cada linea en, lugar de tener que reocuparme por si le falta agregar o no un 0...
Gracias.
-Alex.