• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

XIAO ESP32c6 библиотека OneWire не компилируется.

u102132

New member
Купил ESP32c6, хочу сделдать на нем термодатчик с четырмя ds18B20 и счетчик газа (с использованием геркона).
Поставил Arduino IDE, скачал библиотеку OneWrite, взял пример, но он компилируется никак...
И плату правильную выбрал, но сыпет ошибки:

In file included from d:\Programs\Arduino IDE\_Projects\libraries\OneWire\OneWire.cpp:149:
d:\Programs\Arduino IDE\_Projects\libraries\OneWire\util/OneWire_direct_gpio.h: In function 'uint32_t directRead(uint32_t)':
d:\Programs\Arduino IDE\_Projects\libraries\OneWire\util/OneWire_direct_gpio.h:174:25: error: no match for 'operator>>' (operand types are 'volatile gpio_in_reg_t' and 'uint32_t' {aka 'long unsigned int'})
174 | return (GPIO.in >> pin) & 0x1;
| ~~~~~~~ ^~ ~~~
| | |
| | uint32_t {aka long unsigned int}
| volatile gpio_in_reg_t
d:\Programs\Arduino IDE\_Projects\libraries\OneWire\util/OneWire_direct_gpio.h: In function 'void directWriteLow(uint32_t)':
d:\Programs\Arduino IDE\_Projects\libraries\OneWire\util/OneWire_direct_gpio.h:189:44: error: no match for 'operator=' (operand types are 'volatile gpio_out_w1tc_reg_t' and 'uint32_t' {aka 'long unsigned int'})
189 | GPIo_Out_w1tc = ((uint32_t)1 << pin);

и т.д...

esp32 от Espressiv System 2.3.7
OneWire 2.3.8


Подскажите уважаемые, в чем причина, как исправить?
В программировании микроконтроллеров я - новичёк.
 

u102132

New member
Такой версии я не знаю, но с версией 3.2.0, библиотека https://github.com/PaulStoffregen/OneWire/tree/master работает (компилируется, в железе не проверял).
Посмотреть вложение 14988
... Arduino 1.8.19 - уже больше 5 лет. Не думаю что она совместимв с ESP32C6.
А esp32 от Espressiv System у меня - 3.3.7 опечатка вкралась...
Проблема похоже в библиотеке OneWire 2.3.8. 2.3.7 - тоже не компилится.
 

CodeNameHawk

Moderator
Команда форума
... Arduino 1.8.19 - уже больше 5 лет. Не думаю что она совместимв с ESP32C6.
Зря что так не думаете.

Из файла library.properties
"name=OneWire
version=2.3.8
author=Jim Studt, Tom Pollard, Robin James, Glenn Trewitt, Jason Dangel, Guillermo Lovato, Paul Stoffregen, Scott Roberts, Bertrik Sikken, Mark Tillotson, Ken Butcher, Roger Clark, Love Nystrom
maintainer=Paul Stoffregen
sentence=Access 1-wire temperature sensors, memory and other chips.
paragraph=
category=Communication
url=http://www.pjrc.com/teensy/td_libs_OneWire.html
architectures=*
"
попробуйте на 3,2,0
 

u102132

New member
попробуйте на 3,2,0
Попробовал, откомпилировалось, залилось в XIAO esp32c6 и даже подключилось к координатору zigbee.
Только вот температуры от DS18b20: -127.00°C, его data pin подключил к GPIO1 и резистор подключил как учили...

Код такой (zigbee часть кода выкинул):
#include <OneWire.h>
#include <DallasTemperature.h>
#include "Zigbee.h"
#define TEMP_SENSOR_ENDPOINT_NUMBER 10
#define ONE_WIRE_BUS 1 // GPIO 1 for DS18B20 data line
uint8_t button = BOOT_PIN;
.................
static void temp_sensor_value_update(void *arg) {
for (;;) {
// Request temperature measurement
sensors.requestTemperatures();
// Read temperature sensor value
float tsens_value = sensors.getTempCByIndex(0);
Serial.printf("Updated temperature sensor value to %.2f°C\r\n", tsens_value);
// Update temperature value in Temperature sensor EP
zbTempSensor.setTemperature(tsens_value);
delay(5000);
}
}
.....................
Вывод в полследовательный порт, соотв. такой:
Updated temperature sensor value to -127.00°C
Updated temperature sensor value to -127.00°C

Что не так, подскажите новичку?
 

CodeNameHawk

Moderator
Команда форума
Только вот температуры от DS18b20: -127.00°C, его data pin подключил к GPIO1 и резистор подключил как учили...
Не известно кто вас учил, какой номинал резистора, питание какое подали.
Если не работает то стоит начать с примера.
На моей плате GPIO10(esp32c6 worm1) свободен и два термометра выдают значения.


ds18b20.png
 

CodeNameHawk

Moderator
Команда форума
Вывод в полследовательный порт, соотв. такой:
Updated temperature sensor value to -127.00°C
Есть два режима работы, дать команду мерить, и через заданное время прочитать значения.
Второй более жесткий, команда мерить не завершается до конца измерения.

У вас похоже на первый случай, даете команду мерить, но нет паузы для этого измерения.
 
Сверху Снизу