buenas tardes a todos
lo primero enhorabuena por mantener este foro tan activo y que de tanta ayuda nos sirve a los que empezamos.
rogaria si me pudierais ayudar con un tema:
tengo un sensor de temperatura DS18B20 y un voltimetro FZ0430 para un proyecto y quiero mostrar sus mediciones en un display, utilizo la libreria u8g2lib porque es la unica que encontre que soportaba el driver y las medidas (128x128)
se que las variables que dan los sensores se muestran en float y hace falta convertirlo a caracter. sigo los pasos que creia que eran adecuados pero no soy capaz de que salgan los valores, simplemente las letras.
utilizo el u8g2.setCursor y el u8g2.print(value) y no hay manera
os posteos aqui el codigo para que me ayudeis a subsanar el error:
#include <U8g2lib.h>
#include <OneWire.h>
#include <DallasTemperature.h>
U8G2_SSD1327_MIDAS_128X128_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
OneWire ourWire(6);
DallasTemperature sensor(&ourWire);
int sensorPin = A0;
int sensorValue = 0;
float value;
float calibracion=0.024;
void setup(void) {
u8g2.begin();
Serial.begin(9600);
sensor.begin();
}
/* draw something on the display with the `firstPage()`/`nextPage()` loop*/
void loop(void) {
u8g2.firstPage();
do {
u8g2.setFont(u8g2_font_ncenB12_tr);
u8g2.drawStr(0,25,"T.motor:");
u8g2.drawStr(0,70,"T.amb:");
u8g2.drawStr(0,110,"Bateria:");
}
while ( u8g2.nextPage() );
delay(1000);
sensor.requestTemperatures(); //Se envía el comando para leer la temperatura
float temp= sensor.getTempCByIndex(0); //Se obtiene la temperatura en ºC
u8g2.setFont(u8g2_font_ncenB12_tr);
u8g2.setCursor(80,80);
u8g2.print (temp);
delay(1000);
sensorValue = analogRead(sensorPin); // realizar la lectura
float value= fmap(sensorValue, 0, 1023, 0.0, 25.0); // cambiar escala a 0.0 - 25.0
u8g2.setFont(u8g2_font_ncenB12_tr);
u8g2.setCursor(110,110);
u8g2.print (value);
delay(1000);
}
// cambio de escala entre floats
float fmap(float x, float in_min, float in_max, float out_min, float out_max)
{
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
gracias de antemano por la ayuda porque de aqui solo se puede salir aprendiendo y arduino esta empezando a llamarme mucho la atencion pero tengo mucho que leer aun.
un saludo