Вывод на дисплей разности температур с 2 датчиков ds18b20
- Войдите на сайт для отправки комментариев
Сб, 26/12/2015 - 13:01
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>
#define ONE_WIRE_BUS 5
LiquidCrystal lcd(6, 7, 10, 11, 12, 13);
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress Thermometer1 =
{0x28, 0xFF, 0x98, 0xC9, 0x81, 0x15, 0x02, 0x0D }; // адреса датчиков
DeviceAddress Thermometer2 =
{0x28, 0xFF, 0xD5, 0xAC, 0x62, 0x15, 0x03, 0x64 };
void setup() {
sensors.begin();
sensors.setResolution(Thermometer1, 10);
sensors.setResolution(Thermometer2, 10);
lcd.begin(16, 2);
}
void printTemperature(DeviceAddress deviceAddress) {
float tempC = sensors.getTempC(deviceAddress);
lcd.print(tempC);
}
void loop() {
sensors.requestTemperatures();
lcd.setCursor(0, 0);
printTemperature(Thermometer1);
lcd.setCursor(8, 0);
printTemperature(Thermometer2);
delay(300);
}
В лупе нужно показания первого термометра вычесть из показаний второго и вывести на дисплей. Компилятор постоянно ругается.
Матом?
Нее...говорит нельзя преобразовать беззнаковый тип char в float =)
Явно преобразуйте float в int, а int в char.
Вот только мне число нужно с точностью в 0.1 градуса, а char целочисленно.
В лупе нужно показания первого термометра вычесть из показаний второго и вывести на дисплей. Компилятор постоянно ругается.
В скетче не видно, чтобы показания термометров запоминались, а затем вычитались.
void loop() { sensors.requestTemperatures(); lcd.setCursor(0, 0); printTemperature(Thermometer1); lcd.setCursor(8, 0); printTemperature(Thermometer2); float a = Temperature(Thermometer1); float b = Temperature(Thermometer2); lcd.setCursor(1, 1); lcd.print (a - b); delay(300); }void loop() { sensors.requestTemperatures(); tempS1 = sensors.getTempC(Thermometer1); tempS2 = sensors.getTempC(Thermometer2); lcd.setCursor(0, 0); lcd.print (tempS1); lcd.setCursor(8, 0); lcd.print (tempS2); lcd.setCursor(1, 1); lcd.print (tempS1 - tempS2); delay(300); }Наконец-то разобрался ! Всем спасибо =)