Hola como estan, querido foro les escribo brevemente mi problema, quizas exista alguna solucion que no he podido encontrar, pero paso a comentarles. He programado el sensor DHT11 a mi arduino y a su vez un led de 7 segmentos max7219 8 digitos, resulta que cuando imprimo los comandos en el led de 7 segmentos, imprime al principio los datos correspondientes, pero cuando hace un segundo cheque luego de la funcion millis o delay, ya que prove ambas, como que los digitos se van superponiendo y empiezan aparecer en el resto de los segmentos mas cosas y termina o apagandose o sigue hasta que se pone todo en digitos raros, cual sera la solucion???
#include "LedControl.h"
LedControl Lc = LedControl(10, 8, 9, 1);
// Incluimos librería
#include <DHT.h>
// Definimos el pin digital donde se conecta el sensor
#define DHTPIN 2
// Dependiendo del tipo de sensor
#define DHTTYPE DHT11
// Inicializamos el sensor DHT11
DHT dht(DHTPIN, DHTTYPE);
long tiempoUltimaLectura = 0;
void setup() {
// Inicializamos comunicación serie
Serial.begin(9600);
// Comenzamos el sensor DHT
dht.begin();
//inicializamos 7 digitos
Lc.shutdown(0, false);
Lc.setIntensity(0, 8);
Lc.clearDisplay(0);
}
void loop() {
//funcion millis para trabajar con otros programas
if (millis() - tiempoUltimaLectura > 5000) {
const byte C = 0b01001110;
Lc.setRow(0, 4, C);
// Leemos la humedad relativa
float h = dht.readHumidity();
// Leemos la temperatura en grados centígrados (por defecto)
// Comprobamos si ha habido algún error en la lectura
// if (isnan(h) || isnan(t)) {
// Serial.println("Error obteniendo los datos del sensor DHT11");
// return;
// }
float t = dht.readTemperature ();
int temp = dht.readTemperature();
int unit = temp % 10;
int tens = temp / 10;
float rem = t - temp;
int temp1 = rem * 100;
int tens1 = temp1 / 10;
int unit1 = temp1 % 10;
Lc.setDigit(0, 3, tens , false);
Lc.setDigit(0, 2, unit , true);
Lc.setDigit(0, 1, tens1 , false);
Lc.setDigit(0, 0, unit1 , false);
//
// temp1 = rem * 100;
// tens1 = temp1 / 10;
// unit1 = temp1 % 10;
//
// Lc.setDigit(0, 3, tens , false);
// Lc.setDigit(0, 2, unit , true);
// Lc.setDigit(0, 1, tens1 , false);
// Lc.setDigit(0, 0, unit1 , true);
//Serial.print("Humedad: ");
// Serial.print(h);
//Serial.println(" %");
//Serial.print("Temperatura: ");
Serial.println(t);
// Serial.println(" *C ");
tiempoUltimaLectura = millis();
}
}