Buenos días, ha caído en mis manos una d-duino, viene a ser un ESP8266 mas una pantallita OLED. Estoy intentando trastear con ella un poco, en vías de nuevos proyectos y me he encallado. Le quiero programar una función para poner texto en la pantalla Si le pongo el texto como tal bien; pero si le paso el texto como parámetros me salta el error:
no matching function for call to 'SSD1306Wire::drawString(int, int, float&)'
Entiendo que el problema está en que el parámetro que le paso como dato no tiene el formato adecuado, no? He estado buscando especificaciones de la función display.drawString y ejemplos muchos, pero la mayoria con textos estáticos y no lo he resuelto... alguna idea?
Os paso el código total:
#define CAYENNE_PRINT Serial
#include <CayenneMQTTESP8266.h>
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22
#include <LiquidCrystal_I2C.h>
#include "SSD1306.h"
SSD1306 display(0x3c, D1, D2);
DHT dht(DHTPIN, DHTTYPE);
// WiFi network info.
char ssid[] = "aaaaaa";
char wifiPassword[] = "aaaaaaaa";
// Cayenne authentication info. This should be obtained from the Cayenne Dashboard.
char username[] = "aaaaaaa";
char password[] = "aaaaaa";
char clientID[] = "aaaaaaa";
unsigned long lastMillis = 0;
int temps_refresc = 10000;
void setup() {
Serial.begin(115200);
dht.begin();
display.init();
Cayenne.begin(username, password, clientID, ssid, wifiPassword);
}
void loop() {
Serial.println("loop");
Cayenne.loop();
//Publish data every 10 seconds (10000 milliseconds). Change this value to publish at a different interval.
if (millis() - lastMillis > temps_refresc) {
float hum = dht.readHumidity();
float temp = dht.readTemperature();
lastMillis = millis();
Cayenne.celsiusWrite(0, temp);
Cayenne.virtualWrite(1, hum, "humedad relativa", "%");
pinta_pantalla(temp, hum);
Serial.print("temperatura: ");
Serial.println(temp);
Serial.print("humadad: ");
Serial.println(hum);
Serial.println("-------------------------------------------------------------");
}
}
void pinta_pantalla(float temp, float hum){
display.clear();
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.setFont(ArialMT_Plain_10);
display.drawString(0, 0, "IP:");
display.drawString(15, 0, WiFi.localIP().toString());
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.setFont(ArialMT_Plain_10);
display.drawString(0, 11, "SSID:");
display.drawString(30, 11, ssid);
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.setFont(ArialMT_Plain_24);
display.drawString(0, 22, temp);
display.drawString(50, 22, "|");
display.drawString(60, 22, hum);
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.setFont(ArialMT_Plain_10);
display.drawString(0, 48, "abcdefghijklmnopqrst");
display.display();
return;
}
//Default function for processing actuator commands from the Cayenne Dashboard.
//You can also use functions for specific channels, e.g CAYENNE_IN(1) for channel 1 commands.
CAYENNE_IN_DEFAULT()
{
CAYENNE_LOG("CAYENNE_IN_DEFAULT(%u) - %s, %s", request.channel, getValue.getId(), getValue.asString());
//Process message here. If there is an error set an error message using getValue.setError(), e.g getValue.setError("Error message");
}
Gracias y un saludo !!