подсказка: Напишите код для ESP32, который указывает последовательным монитором адрес датчика температуры dallas 18b20 вместе с его температурой.
Вот пример кода для ESP32, который ищет все температурные устройства Dallas 18B20 на шине OneWire и отображает их адрес и температуру на последовательном мониторе.

scss

#include <OneWire.h>
#include <Температура Далласа.h>

// Определяет контакт, к которому подключена шина OneWire
# определить ONE_WIRE_BUS 5

// Экземпляр OneWire
OneWire oneWire(ONE_WIRE_BUS);

// Экземпляр DallasTemperature
ДалласТемпературные датчики(&oneWire);

недействительная установка () {
  // Инициализируем последовательный монитор
  Серийный.начать(9600);

  // Инициализируем шину OneWire
  датчики.начало();
}

недействительный цикл () {
  // Находим все устройства, подключенные к шине OneWire
  датчики.requestTemperatures();

  // Перебираем все найденные устройства и отображаем их адрес и температуру
  for (uint8_t i = 0; i < sensor.getDeviceCount(); i++) {
    // Получаем адрес устройства
    Адрес устройства;
    датчики.getAddress (адрес, я);

    // Показать адрес устройства
    Serial.print("Устройство");
    для (uint8_t j = 0; j < 8; j++) {
      Serial.print (адрес [j], HEX);
      Серийный.принт(" ");
    }

    // Получаем температуру устройства
    float tempC = sensor.getTempC (адрес);

    // Отображение температуры устройства
    Serial.print(" Температура: ");
    Серийный.печать(tempC);
    Serial.println("°C");
  }

  задержка(1000);
}

Этот код использует библиотеку OneWire для связи с устройствами Dallas 18B20, подключенными к шине OneWire. Он также использует библиотеку DallasTemperature для считывания температуры устройства. Функция setup() инициализирует последовательный монитор и запускает шину OneWire. В функции loop() выполняется поиск всех устройств, подключенных к шине OneWire, и их адрес и температура отображаются на последовательном мониторе. Код повторяется каждую секунду с использованием функции delay().
Чтобы считать адрес и температуру датчиков температуры Dallas 18B20 с помощью ESP32 и отобразить их на последовательном мониторе, можно использовать библиотеки OneWire и DallasTemperature. Ниже приведен пример кода, который можно использовать:

#include <OneWire.h>
#include <Температура Далласа.h>

// вывод данных датчика
# определить ONE_WIRE_BUS 4

// Экземпляр класса OneWire
OneWire oneWire(ONE_WIRE_BUS);

// Экземпляр класса DallasTemperature
ДалласТемпературные датчики(&oneWire);

недействительная установка () {
  Серийный.начать(9600);
  датчики.начало();
}

недействительный цикл () {
  датчики.requestTemperatures();
  for (int i = 0; i < sensor.getDeviceCount(); i++) {
    Serial.print ("Датчик");
    Серийный номер print(i);
    Serial.print(" адрес: ");
    printAddress(sensors.getAddress(i));
    Serial.print(" температура: ");
    Serial.println(sensors.getTempCByIndex(i));
  }
  задержка(1000);
}

void printAddress (DeviceAddress deviceAddress) {
  для (uint8_t я = 0; я < 8; я ++) {
    если (deviceAddress[i] < 16) Serial.print("0");
    Serial.print (адрес устройства [i], HEX);
    если (i < 7) Serial.print(":");
  }

Этот код начинается с включения библиотек OneWire и DallasTemperature. Затем вывод данных датчика определяется как 4, который используется для инициализации экземпляра класса OneWire. Затем этот экземпляр используется для инициализации экземпляра класса DallasTemperature.

В функции setup() запустите последовательную связь и начните считывать показания датчиков с помощью sensor.begin().

В функции loop() показания температуры запрашиваются через sensor.requestTemperatures(). Затем каждый из датчиков зацикливается с помощью метода sensor.getDeviceCount(). Для каждого датчика его адрес отображается в шестнадцатеричном формате с помощью функции printAddress(), а температура в градусах Цельсия отображается с помощью Sensors.getTempCByIndex(i). Наконец, добавляется 1-секундная задержка перед следующим чтением.

Функция printAddress() используется для печати адреса датчика в формате «xx:xx:xx:xx:xx:xx:xx:xx».