15-08-2018, 15:50
mam od kilku dni Arduino UNO, z kilku przykładów "złożyłem program do obsługi 4. czujników DS18B20. Nie wiem, gdzie i jak ustawić rozdzielczość na 12 bitów. Program działa ale tylko z rozdzielczością 10. bitów /różnicę temperatur pokazuje co 0,25 st. C. Może ktoś wie, co z tym zrobić?
Jeśli to nie ten dział, proszę moderatora o przeniesienie do innego działu.
kod:
Jeśli to nie ten dział, proszę moderatora o przeniesienie do innego działu.
kod:
Kod:
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,24,2); //adres układu PCF8572, 24. znaki, 2. linie
// numery pinów do których podłączasz czujniki DS18B20
#define ONE_WIRE_BUS_1 2 // czujnik 1. na pin 2
#define ONE_WIRE_BUS_2 4 // czujnik 2. na pin 4
#define ONE_WIRE_BUS_3 0 // czujnik 3. na pin 0
#define ONE_WIRE_BUS_4 1 // czujnik 4. na pin 1
OneWire oneWire_wew(ONE_WIRE_BUS_1);
OneWire oneWire_zew(ONE_WIRE_BUS_2);
OneWire oneWire_wew1(ONE_WIRE_BUS_3);
OneWire oneWire_zew1(ONE_WIRE_BUS_4);
DallasTemperature sensor_wew(&oneWire_wew);
DallasTemperature sensor_zew(&oneWire_zew);
DallasTemperature sensor_wew1(&oneWire_wew1);
DallasTemperature sensor_zew1(&oneWire_zew1);
void setup(void)
{
Serial.begin(9600);
Serial.println("Dallas Temperature Control Library Demo - TwoPin_DS18B20");
Serial.print("pomiar temperatury...");
sensor_wew.begin();
sensor_zew.begin();
sensor_wew1.begin();
sensor_zew1.begin();
lcd.init();
}
void loop(void)
{
sensor_wew.requestTemperatures();
sensor_zew.requestTemperatures();
sensor_wew1.requestTemperatures();
sensor_zew1.requestTemperatures();
lcd.setCursor(0,0); // czujnik 1
lcd.print("T1 ");
lcd.print(sensor_wew.getTempCByIndex(0));
lcd.setCursor(7,0);
lcd.print(" ");
lcd.setCursor(8,0); // czujnik 2
lcd.print("T2 ");
lcd.print(sensor_zew.getTempCByIndex(0));
lcd.setCursor(19,0);
lcd.print((sensor_wew.getTempCByIndex(0))-(sensor_zew.getTempCByIndex(0)));
lcd.setCursor(0,1); // czujnik 3
lcd.print("T3 ");
lcd.print(sensor_wew1.getTempCByIndex(0));
//
lcd.setCursor(10,1); // czujnik 4
lcd.print("T4 ");
lcd.print(sensor_zew1.getTempCByIndex(0));
lcd.setCursor(19,1);
lcd.print((sensor_wew1.getTempCByIndex(0))-(sensor_zew1.getTempCByIndex(0)));
delay(1000);
}