Вот кусок кода, график работает, в сериал порт тем и влажность показывает, а на вывод самой темп и влажности ругается, Код (C++): float humd = htu21d.getHumidity(); float temp = htu21d.getTemperature(); Serial.print("Temperature: "); Serial.print(temp); Serial.print("\t\tHumidity: "); Serial.println(humd); TFTscreen.setTextSize(1); TFTscreen.text("Temperature", 1, 2); TFTscreen.setTextSize(2); TFTscreen.text(temp, 100, 2); TFTscreen.setTextSize(1); TFTscreen.text("Humidity", 1, 50); TFTscreen.setTextSize(2); TFTscreen.text(humd, 100, 50); TFTscreen.stroke(255, 200, 100); y = map(temp, 15, 30, 40, 20); TFTscreen.line(x, 45, x, y); TFTscreen.stroke(255, 0, 200); z = map(humd, 15, 90, 127, 25); TFTscreen.line(x, 127, x, z); x++; if (x >= 160) { x = 0; exit status 1 no matching function for call to 'TFT::text(float&, int, int)'
Возможно ошибка в этих строчках: Код (C++): TFTscreen.text(temp, 100, 2); TFTscreen.text(humd, 100, 50); Метод TFTscreen.text принимает на вход первым аргументом char array, а у вас float. Необходимо сделать преобразование.
Изучаю пока нашел вот такое преобразование Float Код (C++): float humd = htu21d.getHumidity(); float temp = htu21d.getTemperature(); Serial.print("Temperature: "); Serial.print(temp); Serial.print("\t\tHumidity: "); Serial.println(humd); TFTscreen.setTextSize(1); TFTscreen.text("Temperature", 1, 2); TFTscreen.setTextSize(2); TFTscreen.text((int)temp, 90, 2); TFTscreen.setTextSize(1); TFTscreen.text("~C", 145, 5); TFTscreen.setTextSize(1); TFTscreen.text("Humidity", 1, 50); TFTscreen.setTextSize(2); TFTscreen.text((int)humd, 90, 50); TFTscreen.setTextSize(1); TFTscreen.text("%", 150, 60); На экране вместо показаний иероглифы
В лоб: Код (C++): String sHumidity, sTemperature; float humd = htu21d.getHumidity(); float temp = htu21d.getTemperature(); sHumidity = humd; sTemperature = temp; Serial.print("Temperature: "); Serial.print(temp); Serial.print("\t\tHumidity: "); Serial.println(humd); TFTscreen.setTextSize(1); TFTscreen.text("Temperature", 1, 2); TFTscreen.setTextSize(2); TFTscreen.text(sTemperature.c_str(), 90, 2); TFTscreen.setTextSize(1); TFTscreen.text("~C", 145, 5); TFTscreen.setTextSize(1); TFTscreen.text("Humidity", 1, 50); TFTscreen.setTextSize(2); TFTscreen.text(sHumidity.c_str(), 90, 50); TFTscreen.setTextSize(1); TFTscreen.text("%", 150, 60);
Попробуйте так: Код (C++): char temp2[8]; char humd2[8]; dtostrf(temp, 1, 2, temp2); TFTscreen.text(temp2, 90, 2); Ну и для влажности то же самое.
DIYMan, спасибо значения отображаются, только при изменении значений цифры друг на друга накладываются
Стирайте перед отображением. Или юзайте sprintf в буфер, вариантов масса. Тот, что предложил я - просто тупо в лоб.