04-05-2017, 22:03
Witam. Mam problem z odczytem drubiego czujnika. Z odczytu portu szeregowego odczytuje oba czujniki ale jak chcę wysłać odczyt na wyświetlacz to drugiego nie widzi tylko wartość 1. Co może być przyczyną?
Kod:
// Program odczytuje temperaturę kilku czujników
#include <OneWire.h>
#include <DS18B20.h>
#include <LiquidCrystal.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// Numer pinu do którego podłaczasz czujnik
#define ONEWIRE_PIN 2
// Ilość czujników
#define SENSORS_NUM 2
// Adresy czujników
const byte address[SENSORS_NUM][8] PROGMEM = {
0x28, 0xB1, 0x6D, 0xA1, 0x3, 0x0, 0x0, 0x11,
0x28, 0x87, 0x6A, 0xA1, 0x3, 0x0, 0x0, 0x1F
};
OneWire onewire(ONEWIRE_PIN);
DS18B20 sensors(&onewire);
void setup() {
while (!Serial);
Serial.begin(9600);
sensors.begin();
sensors.request();
lcd.begin(20, 4);
lcd.backlight();
}
void loop() {
if (sensors.available())
{
for (byte i = 0; i < SENSORS_NUM; i++)
{
float temperature = sensors.readTemperature(FA(address[i]));
//Serial.print(F("#"));
//Serial.print(i);
//Serial.print(F(": "));
//Serial.print(temperature);
//Serial.println(F(" 'C"));
lcd.setCursor(14, 0);
lcd.print(temperature);
lcd.setCursor(14, 1);
lcd.print(i);
}
sensors.request();
}
}