• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Automatyczne odczytywanie trzech DS18b20
#2
Możesz czytać adresy czujników bezpośrednio przed odczytem temperatury.
Zamiast tego:
Kod:
DeviceAddress DS_NR1 = { 0x28, 0xAD, 0xD4, 0x76, 0xE0, 0x01, 0x3C, 0xF6 }; // Tu wpisać adresy czujników
DeviceAddress DS_NR2 = { 0x28, 0x4D, 0x1C, 0x76, 0xE0, 0x01, 0x3C, 0xC3 }; // do szukania adresów program OneWireSearch z przykładów DallasTemperature
DeviceAddress DS_NR3 = { 0x28, 0xB0, 0xBF, 0x76, 0xE0, 0x01, 0x3C, 0x86 };
 
Daj to:

Kod:
oneWire.search(DS_NR1);
oneWire.search(DS_NR2);
oneWire.search(DS_NR3);

Można też zrobić to lepiej i obsłużyć brak jakiegoś czujnika:

Kod:
if (!oneWire.search(DS_NR1)) funkcjaObslugiBledu(DS_NR1);
if (!oneWire.search(DS_NR2)) funkcjaObslugiBledu(DS_NR2);
if (!oneWire.search(DS_NR3)) funkcjaObslugiBledu(DS_NR3);

Dla trzech czujników jeszcze to przejdzie, ale dla większej ilości lepiej to zrobić na tablicy.

Możesz oczywiście nie korzystać z adresów czujników i zrobić to na ich indeksach.

Kod:
for (int i = 0; i < 3; i++) {;
    jakasZmienna[i] = sensors.getTempCByIndex(i);
  }

Albo:

Kod:
for (int i = 0; i < sensors.getDeviceCount(); i++) {;
    jakasZmienna[i] = sensors.getTempCByIndex(i);
  }

Oczywiście, można podłączyć każdy czujnik pod inny pin. Jest to opisane w przykładach do biblioteki.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
  


Wiadomości w tym wątku
Automatyczne odczytywanie trzech DS18b20 - przez OMK - 03-01-2022, 17:24
RE: Automatyczne odczytywanie trzech DS18b20 - przez Robson Kerman - 06-01-2022, 22:30

Skocz do:


Przeglądający: 1 gości