Para leer la dirección y temperatura de los sensores de temperatura Dallas 18B20 con un ESP32 y mostrarlos en el monitor serial, se puede utilizar la biblioteca OneWire y la biblioteca DallasTemperature. A continuación se muestra un ejemplo de código que puede ser utilizado:

#include <OneWire.h>
#include <DallasTemperature.h>

// Pin de datos del sensor
#define ONE_WIRE_BUS 4

// Instancia de la clase OneWire
OneWire oneWire(ONE_WIRE_BUS);

// Instancia de la clase DallasTemperature
DallasTemperature sensors(&oneWire);

void setup() {
  Serial.begin(9600);
  sensors.begin();
}

void loop() {
  sensors.requestTemperatures();
  for (int i = 0; i < sensors.getDeviceCount(); i++) {
    Serial.print("Sensor ");
    Serial.print(i);
    Serial.print(" address: ");
    printAddress(sensors.getAddress(i));
    Serial.print(" temperature: ");
    Serial.println(sensors.getTempCByIndex(i));
  }
  delay(1000);
}

void printAddress(DeviceAddress deviceAddress) {
  for (uint8_t i = 0; i < 8; i++) {
    if (deviceAddress[i] < 16) Serial.print("0");
    Serial.print(deviceAddress[i], HEX);
    if (i < 7) Serial.print(":");
  }

Este código comienza por incluir las bibliotecas OneWire y DallasTemperature. Luego se define el pin de datos del sensor como 4, lo cual se utiliza para inicializar una instancia de la clase OneWire. A continuación, se utiliza esta instancia para inicializar una instancia de la clase DallasTemperature.

En la función setup(), se inicia la comunicación serial y se inicia la lectura de los sensores con sensors.begin().

En la función loop(), se solicita la lectura de las temperaturas a través de sensors.requestTemperatures(). Luego, se recorre cada uno de los sensores utilizando el método sensors.getDeviceCount(). Para cada sensor, se muestra su dirección en hexadecimal utilizando la función printAddress() y se muestra la temperatura en grados Celsius utilizando sensors.getTempCByIndex(i). Finalmente, se agrega un retraso de 1 segundo antes de la próxima lectura.

La función printAddress() se utiliza para imprimir la dirección del sensor en el formato "xx:xx:xx:xx:xx:xx:xx:xx".
หากต้องการอ่านที่อยู่และอุณหภูมิของเซ็นเซอร์อุณหภูมิ Dallas 18B20 ด้วย ESP32 และแสดงบนจอภาพแบบอนุกรม คุณสามารถใช้ไลบรารี OneWire และไลบรารี DallasTemperature ได้ ด้านล่างนี้เป็นตัวอย่างของโค้ดที่สามารถใช้ได้: #include <OneWire.h> #include <DallasTemperature.h> // Sensor data pin #define ONE_WIRE_BUS 4 // Instance of the OneWire class OneWire oneWire(ONE_WIRE_BUS) ; // อินสแตนซ์ของคลาส DallasTemperature เซ็นเซอร์อุณหภูมิ Dallas(&oneWire); การตั้งค่าเป็นโมฆะ () { Serial.begin (9600); เซ็นเซอร์เริ่มต้น(); } วงโมฆะ () { เซ็นเซอร์คำขออุณหภูมิ (); สำหรับ (int i = 0; i < sensors.getDeviceCount (); i ++) { Serial.print ("เซ็นเซอร์ "); Serial.พิมพ์(i); Serial.print(" ที่อยู่: "); printAddress(sensors.getAddress(i)); Serial.print(" อุณหภูมิ: "); Serial.println(sensors.getTempCByIndex(i)); } ล่าช้า (1,000); } เป็นโมฆะ printAddress (ที่อยู่อุปกรณ์ ที่อยู่อุปกรณ์) { สำหรับ (uint8_t i = 0; i < 8; i++) { ถ้า (deviceAddress [i] < 16) Serial.print ("0"); Serial.print(ที่อยู่อุปกรณ์[i], HEX); ถ้า (i < 7) Serial.print (": "); } โค้ดนี้เริ่มต้นด้วยการรวมไลบรารี OneWire และ DallasTemperature จากนั้นพินข้อมูลเซ็นเซอร์จะถูกตั้งค่าเป็น 4 ซึ่งใช้ในการเริ่มต้นอินสแตนซ์ของคลาส OneWire จากนั้นอินสแตนซ์นี้จะใช้ในการเริ่มต้นอินสแตนซ์ของคลาส DallasTemperature ในฟังก์ชัน setup() การสื่อสารแบบอนุกรมจะเริ่มต้นขึ้น และการอ่านเซ็นเซอร์จะเริ่มต้นด้วย sensors.begin() ในฟังก์ชัน loop() การร้องขอการอ่านอุณหภูมิผ่าน sensors.requestTemperatures() จากนั้นเซ็นเซอร์แต่ละตัวจะวนซ้ำโดยใช้เมธอด sensors.getDeviceCount() สำหรับเซ็นเซอร์แต่ละตัว ที่อยู่ของมันจะแสดงเป็นเลขฐานสิบหกโดยใช้ฟังก์ชัน printAddress() และอุณหภูมิจะแสดงเป็นองศาเซลเซียสโดยใช้ sensors.getTempCByIndex(i) ในที่สุด เพิ่มการหน่วงเวลา 1 วินาทีก่อนการอ่านครั้งถัดไป ฟังก์ชัน printAddress() ใช้เพื่อพิมพ์ที่อยู่เซ็นเซอร์ในรูปแบบ "xx:xx:xx:xx:xx:xx:xx:xx"
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence