Я хочу, чтобы считывались показания трех датчиков, находилось их среднее значение и отображалось на дисплее

,

Project Link: 3-temp datc - Wokwi ESP32, STM32, Arduino Simulator

Error message: sketch.ino:23:16: error: stray ‘\342’ in program
Serial.println(“DS18B20 Temperature Sensor Test”);
^
sketch.ino:23:17: error: stray ‘\200’ in program
Serial.println(“DS18B20 Temperature Sensor Test”);
^
sketch.ino:23:18: error: stray ‘\234’ in program
Serial.println(“DS18B20 Temperature Sensor Test”);
^
sketch.ino:23:50: error: stray ‘\342’ in program
Serial.println(“DS18B20 Temperature Sensor Test”);
^
sketch.ino:23:51: error: stray ‘\200’ in program
Serial.println(“DS18B20 Temperature Sensor Test”);
^
sketch.ino:23:52: error: stray ‘\235’ in program
Serial.println(“DS18B20 Temperature Sensor Test”);
^
sketch.ino:45:11: error: stray ‘\342’ in program
lcd.print(“Temp:”);
^
sketch.ino:45:12: error: stray ‘\200’ in program
lcd.print(“Temp:”);
^
sketch.ino:45:13: error: stray ‘\234’ in program
lcd.print(“Temp:”);
^
sketch.ino:45:19: error: stray ‘\342’ in program
lcd.print(“Temp:”);
^
sketch.ino:45:20: error: stray ‘\200’ in program
lcd.print(“Temp:”);
^
sketch.ino:45:21: error: stray ‘\235’ in program
lcd.print(“Temp:”);
^
sketch.ino: In function ‘void setup()’:
sketch.ino:21:1: error: ‘Wire’ was not declared in this scope
Wire.begin();
^~~~
sketch.ino:21:1: note: suggested alternative: ‘oneWire’
Wire.begin();
^~~~
oneWire
sketch.ino:23:19: error: ‘DS18B20’ was not declared in this scope
Serial.println(“DS18B20 Temperature Sensor Test”);
^~~~~~~
sketch.ino: In function ‘void loop()’:
sketch.ino:34:32: error: could not convert ‘sensors.DallasTemperature::requestTemperatures()’ from ‘void’ to ‘bool’
if (sensors.requestTemperatures()) {
~~~~~~~~~~~~~~~~~~~~~^~
sketch.ino:44:1: error: ‘lcd’ was not declared in this scope
lcd.clear();
^

sketch.ino:45:14: error: ‘Temp’ was not declared in this scope
lcd.print(“Temp:”);
^
~
sketch.ino:45:14: note: suggested alternative: ‘temp3’
lcd.print(“Temp:”);
^
~
temp3
Multiple libraries were found for “OneWire.h”
Used: /libraries/OneWire
Not used: /libraries/MAX31850_OneWire
Error during build: exit status 1

Обведенное красным - это что?

хаха, блин я не заметил “продолжи”, все удалил и решил сам проблему, спасибо что не остались равнодушны

ведь пи…ь как Троцкий, там по мимо этого вагон ошибок))

2 лайка

Главное, что САМ решил :joy:

ну и славно

1 лайк

Сам? Или после поста @v258?

Вы не думали, что после “сам” вместо “спасибо”, человек просто забьёт на Ваши проблемы и скажет - “пусть эта неблагодарная свинья сама и решает”? А проблем у Вас в этом коде ещё более, чем до хера. Да и в следующих будет не меньше.

Ну прально, зачем самому глаза ломать, если всегда можно найти негров?

1 лайк

А как в wokwi адреса разные датчикам 18В20 задаются?

Засекречено
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>

// Задаем пин для данных от датчиков
#define ONE_WIRE_BUS 2

LiquidCrystal_I2C lcd(0x27, 16, 2);

// Определяем адреса датчиков на шине 1-Wire
// (введите здесь адреса ваших датчиков)
DeviceAddress sensor1 = {0x28, 0x16, 0x05, 0xE3, 0xF1, 0xA0};
DeviceAddress sensor2 = {0xC5, 0xB9, 0xD0, 0xC7, 0x68, 0x3B};
DeviceAddress sensor3 = {0xD5, 0xEE, 0xFF, 0xBB, 0xCB, 0x43};

// Создаем объект для работы с шиной 1-Wire
OneWire oneWire(ONE_WIRE_BUS);

// Инициализируем библиотеку для работы с DS18B20
DallasTemperature sensors(&oneWire);

void setup() {
  // Инициализация LCD дисплея
  Wire.begin();
  Serial.begin(9600);
  Serial.println("DS18B20 Temperature Sensor Test");

  lcd.init();
  lcd.backlight();  

  sensors.setResolution(sensor1, 10); // Устанавливаем разрешение датчика
  sensors.setResolution(sensor2, 10);
  sensors.setResolution(sensor3, 10);
}

void loop() {
  float temp1 = 0;
  float temp2 = 0;
  float temp3 = 0;

  sensors.requestTemperatures();

  temp1 = sensors.getTempCByIndex(0); // Считываем температуру с первого датчика
  temp2 = sensors.getTempCByIndex(1); // Считываем температуру со второго датчика
  temp3 = sensors.getTempCByIndex(2); // Считываем температуру с третьего датчика

  float averageTemp = (temp1 + temp2 + temp3) / 3.0; // Вычисляем среднее значение

  // Вывод на LCD дисплей
  lcd.clear();
  lcd.print("Temp: ");
  lcd.setCursor(0, 1);
  lcd.print(averageTemp);

  Serial.print("Temp: ");
//  Serial.println(averageTemp);
  Serial.println(temp1);
  delay(1000); // Задержка для наглядности
}

А то temp1 нормальные данные получает, а temp2 и temp3 всегда -127 )))

или так, во время исполнения тыкаешь на датчик


тока не понятно где он его хранит, почему 0-100, но значение держит, а код (твой поправленный)не работает, мне в лом разбираться, я болею.

тока похоже прибили прожект уже)

чисто по братски!))
{
  "version": 1,
  "author": "xdriver",
  "editor": "wokwi",
  "parts": [
    {
      "type": "wokwi-arduino-nano",
      "id": "nano",
      "top": 0,
      "left": 0,
      "attrs": {}
    },
    { "type": "board-ds18b20", "id": "temp1", "top": -128.46, "left": 120.21, "attrs": { "Temperature ": "22" } },
    { "type": "board-ds18b20", "id": "temp3", "top": -126.17, "left": 75.9, "attrs": {} },
    { "type": "board-ds18b20", "id": "temp4", "top": -124.33, "left": 30.67, "attrs": {} },
    {
      "type": "wokwi-resistor",
      "id": "r1",
      "top": -22.7,
      "left": 137.49,
      "attrs": { "value": "4700" }
    }
  ],
  "connections": [
    [ "temp4:DQ", "temp3:DQ", "green", [ "v34.29", "h47.35" ] ],
    [ "temp3:DQ", "temp1:DQ", "green", [ "v35.21", "h40.04" ] ],
    [ "nano:2", "temp3:DQ", "green", [ "v-33.37", "h-23.48" ] ],
    [ "temp4:VCC", "temp3:VCC", "red", [ "v21.04", "h9.42" ] ],
    [ "temp1:VCC", "temp3:VCC", "red", [ "v24.25", "h-44.02" ] ],
    [ "temp4:GND", "temp3:GND", "black", [ "v42.51", "h48.27" ] ],
    [ "temp1:GND", "temp3:GND", "black", [ "v45.73", "h-44.01" ] ],
    [ "nano:GND.2", "temp1:GND", "black", [ "v0" ] ],
    [ "temp1:VCC", "nano:5V", "red", [ "v22.88", "h67.46", "v158.54", "h-80.41" ] ],
    [ "r1:1", "nano:2", "green", [ "v-0.18", "h-22.61" ] ],
    [ "r1:2", "nano:5V", "red", [ "v96.65", "h-70.44" ] ]
  ],
  "dependencies": {}
}

У меня работает (странно). Я себе копию сохранил в wokwi…

я имею ввиду с тремя ДСками.

Ну да, у меня тоже только один датчик данные выдает ))

я жь дотошный, заработало!
надо без подчеркивания

        "deviceID": "010203040506",
json
{
  "version": 1,
  "author": "xdriver",
  "editor": "wokwi",
  "parts": [
    {
      "type": "wokwi-arduino-nano",
      "id": "nano",
      "top": 0,
      "left": 0,
      "attrs": {
        "deviceID": "010203040506"
      }
    },
    {
      "type": "board-ds18b20",
      "id": "temp1",
      "top": -128.46,
      "left": 120.21,
      "attrs": {
        "deviceID": "010203040507"
      }
    },
    {
      "type": "board-ds18b20",
      "id": "temp3",
      "top": -126.17,
      "left": 75.9,
      "attrs": {
        "deviceID": "010203040508"
      }
    },
    {
      "type": "board-ds18b20",
      "id": "temp4",
      "top": -124.33,
      "left": 30.67,
      "attrs": {}
    },
    {
      "type": "wokwi-resistor",
      "id": "r1",
      "top": -22.7,
      "left": 137.49,
      "attrs": {
        "value": "4700"
      }
    }
  ],
  "connections": [
    [
      "temp4:DQ",
      "temp3:DQ",
      "green",
      [
        "v34.29",
        "h47.35"
      ]
    ],
    [
      "temp3:DQ",
      "temp1:DQ",
      "green",
      [
        "v35.21",
        "h40.04"
      ]
    ],
    [
      "nano:2",
      "temp3:DQ",
      "green",
      [
        "v-33.37",
        "h-23.48"
      ]
    ],
    [
      "temp4:VCC",
      "temp3:VCC",
      "red",
      [
        "v21.04",
        "h9.42"
      ]
    ],
    [
      "temp1:VCC",
      "temp3:VCC",
      "red",
      [
        "v24.25",
        "h-44.02"
      ]
    ],
    [
      "temp4:GND",
      "temp3:GND",
      "black",
      [
        "v42.51",
        "h48.27"
      ]
    ],
    [
      "temp1:GND",
      "temp3:GND",
      "black",
      [
        "v45.73",
        "h-44.01"
      ]
    ],
    [
      "nano:GND.2",
      "temp1:GND",
      "black",
      [
        "v0"
      ]
    ],
    [
      "temp1:VCC",
      "nano:5V",
      "red",
      [
        "v22.88",
        "h67.46",
        "v158.54",
        "h-80.41"
      ]
    ],
    [
      "r1:1",
      "nano:2",
      "green",
      [
        "v-0.18",
        "h-22.61"
      ]
    ],
    [
      "r1:2",
      "nano:5V",
      "red",
      [
        "v96.65",
        "h-70.44"
      ]
    ]
  ],
  "dependencies": {}
}
Код
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>

// Задаем пин для данных от датчиков
#define ONE_WIRE_BUS 2

LiquidCrystal_I2C lcd(0x27, 16, 2);

// Определяем адреса датчиков на шине 1-Wire
// (введите здесь адреса ваших датчиков)
DeviceAddress sensor1 = {0x28, 0x16, 0x05, 0xE3, 0xF1, 0xA0};
DeviceAddress sensor2 = {0xC5, 0xB9, 0xD0, 0xC7, 0x68, 0x3B};
DeviceAddress sensor3 = {0xD5, 0xEE, 0xFF, 0xBB, 0xCB, 0x43};

// Создаем объект для работы с шиной 1-Wire
OneWire oneWire(ONE_WIRE_BUS);

// Инициализируем библиотеку для работы с DS18B20
DallasTemperature sensors(&oneWire);

void setup() {
  // Инициализация LCD дисплея
  Wire.begin();
  Serial.begin(9600);
  Serial.println("DS18B20 Temperature Sensor Test");

  lcd.init();
  lcd.backlight();
  sensors.begin();

  uint32_t total_devices = sensors.getDeviceCount();

  Serial.print("Locating devices...");
  Serial.print("Found ");
  Serial.print(total_devices, DEC);
  Serial.println(" devices.");


  sensors.setResolution(sensor1, 10); // Устанавливаем разрешение датчика
  sensors.setResolution(sensor2, 10);
  sensors.setResolution(sensor3, 10);
}

void loop() {
  float temp1 = 0;
  float temp2 = 0;
  float temp3 = 0;

  sensors.requestTemperatures();

  temp1 = sensors.getTempCByIndex(0); // Считываем температуру с первого датчика
  temp2 = sensors.getTempCByIndex(1); // Считываем температуру со второго датчика
  temp3 = sensors.getTempCByIndex(2); // Считываем температуру с третьего датчика

  float averageTemp = (temp1 + temp2 + temp3) / 3.0; // Вычисляем среднее значение

  // Вывод на LCD дисплей
  lcd.clear();
  lcd.print("Temp: ");
  lcd.setCursor(0, 1);
  lcd.print(averageTemp);

  Serial.print("Temp: ");
  //  Serial.println(averageTemp);
  Serial.print(temp1);
  Serial.print("  ");
  Serial.print(temp2);
  Serial.print("  ");
  Serial.println(temp3);
  delay(1000); // Задержка для наглядности
}

Я что-то сделал не так )))

DS18B20 Temperature Sensor Test
Locating devices…Found 1 devices.
Temp: 0.00 -127.00 -127.00

json
{
  "version": 1,
  "author": "Anonymous maker",
  "editor": "wokwi",
  "parts": [
    { "type": "wokwi-arduino-uno", "id": "uno", "top": 0, "left": 0, "attrs": {} },
    {
      "type": "wokwi-lcd1602",
      "id": "lcd1",
      "top": 264.53,
      "left": 300.84,
      "attrs": { "pins": "i2c" }
    },
    {
      "type": "board-ds18b20",
      "id": "temp1",
      "top": 75.72,
      "left": 303.04,
      "attrs": { "deviceID": "010203040506" }
    },
    {
      "type": "board-ds18b20",
      "id": "temp2",
      "top": 131.28,
      "left": 304.03,
      "attrs": { "deviceID": "010203040507" }
    },
    {
      "type": "board-ds18b20",
      "id": "temp3",
      "top": 185.92,
      "left": 304.36,
      "attrs": { "deviceID": "010203040508" }
    }
  ],
  "connections": [
    [ "uno:GND.2", "temp1:GND", "black", [ "v0" ] ],
    [ "uno:GND.2", "temp2:GND", "black", [ "v0" ] ],
    [ "uno:GND.2", "temp3:GND", "black", [ "v0" ] ],
    [ "uno:GND.2", "lcd1:GND", "black", [ "v0" ] ],
    [ "lcd1:VCC", "uno:5V", "red", [ "h0" ] ],
    [ "lcd1:SCL", "uno:A5", "green", [ "h0" ] ],
    [ "lcd1:SDA", "uno:A4", "green", [ "h0" ] ],
    [ "temp3:VCC", "uno:5V", "red", [ "v0" ] ],
    [ "temp2:VCC", "uno:5V", "red", [ "v0" ] ],
    [ "temp1:VCC", "uno:5V", "red", [ "v0" ] ],
    [ "temp1:DQ", "uno:2", "green", [ "v0" ] ],
    [ "temp2:DQ", "uno:3", "green", [ "v0" ] ],
    [ "temp3:DQ", "uno:4", "green", [ "v0" ] ]
  ],
  "dependencies": {}
}