Hola....... me he armado un lío para hacer un medidor de humedad con el dht22 y 74hc595 con dos digitos. Si alguien del foro lo ha realizado agradecería me lo pase para poder estudiarlo ya que soy NOVATO ó ayuda en corrección del código adjunto. GRACIAS.
#include <OneWire.h>
#include <DHT.h>
// pin setups
int latchPin = 8; //Pin para el latch de los 74HC595
int clockPin = 12; //Pin para Reloj de los 74HC595
int dataPin = 11; //Pin Datos serie para 74HC595
DHT dht(2, DHT22); //Pin entrada del DHT22
// librerias para conectar el Sensor
OneWire oneWire(tempPin);
// caracteres display 7 seg. del 0-9
byte numberSet[10] = {
B00111111, B00000110, B01011011, B01001111, // 0,1,2,3
B01100110, B01101101, B01111101, B00000111, // 4,5,6,7
B01111111, B01101111 // 8,9
};
void setup() {
// inicializa serial
Serial.begin(9600);
// inicializa sensor de humedad
dht.begin();
// salida registros de desplazamiento
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
float h = dht.readHumidity(); // leer el valor de la humedad
if (isnan(h))
Serial.println(h);
// cast to float (solo dos digitos)
int rT = (int)t;
// digito de las unidades
int units = rT % 10;
// digito de las decenas
rT = rT/10;
int tens = rT % 10;
displayNumb(units, tens);
delay(100);
}
void displayNumb(int a, int b) {
// saca el codigo de numeros
byte bitsA = numberSet[a];
byte bitsB = numberSet[b];
// set listo para cambiar
digitalWrite(latchPin, LOW);
// unidades
shiftOut(dataPin, clockPin, bitsA);
// decenas
shiftOut(dataPin, clockPin, bitsB);
// shift salida datos
digitalWrite(latchPin, HIGH);
}
void shiftOut(int myDataPin, int myClockPin, byte myDataOut) {
int i=0;
int pinState;
digitalWrite(myDataPin, 0);
digitalWrite(myClockPin, 0);
for (i=7; i>=0; i--) {
digitalWrite(myClockPin, 0);
if ( myDataOut & (1<<i) ) {
pinState= 1;
}
else {
pinState= 0;
}
digitalWrite(myDataPin, pinState);
digitalWrite(myClockPin, 1);
digitalWrite(myDataPin, 0);
}
digitalWrite(myClockPin, 0);
}