Tengo un medidor con dos display de 7 seg. y necesito ayuda de como descontar 2º de la medida real que toma el DS18B20.
Si la medida es de 70º que en el display se lean 68º.
Salu2.
#include <OneWire.h>
#include <DallasTemperature.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
int tempPin = 7; //Pin entrada del DS18B20
// librerias para conectar el Sensor
OneWire oneWire(tempPin);
DallasTemperature tempSens(&oneWire);
// 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 Temperatura
tempSens.begin();
// salida registros de desplazamiento
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
tempSens.requestTemperatures();
float t = tempSens.getTempCByIndex(0);
Serial.println(t);
// 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(1000);
}
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);
}