• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

ESP8266 конфликтует с OneWire

geolog

New member
Простая заготовка. Код исключил до выяснения глюка. Ниже кода ошибки компиляции. Я так понял в ESP8266WiFi.h есть своя OneWire и подключение отдельной конфликтует с ней. Как использовать OneWire в таком случае?
Код:
#include <ESP8266WiFi.h>
#include <OneWire.h>
#include <DallasTemperature.h>
void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}
C:\Users\CGL\Documents\Arduino\libraries\OneWire/OneWire.h:108:2: error: #error "Please define I/O register types here"
#error "Please define I/O register types here"
^
Несколько библиотек найдено для "ESP8266WiFi.h"
Используется: C:\Users\CGL\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.0\libraries\ESP8266WiFi
Несколько библиотек найдено для "OneWire.h"
Используется: C:\Users\CGL\Documents\Arduino\libraries\OneWire
Несколько библиотек найдено для "DallasTemperature.h"
Используется: C:\Users\CGL\Documents\Arduino\libraries\DallasTemperature
exit status 1
Ошибка компиляции для платы Generic ESP8266 Module.
 

Алексей.

Active member
Я так понял в ESP8266WiFi.h есть своя OneWire
Как это своя? При попытке собрать ваш пример на sdk 2.6.0 получаю
Код:
/home/alex/arduino-1.8.10/arduino-builder -dump-prefs -logger=machine -hardware /home/alex/arduino-1.8.10/hardware -hardware /home/alex/Arduino/hardware -tools /home/alex/arduino-1.8.10/tools-builder -tools /home/alex/arduino-1.8.10/hardware/tools/avr -built-in-libraries /home/alex/arduino-1.8.10/libraries -libraries /home/alex/Arduino/libraries -fqbn=esp8266com:esp8266:nodemcuv2:xtal=80,vt=flash,exception=disabled,ssl=all,eesz=4M,ip=lm2f,dbg=Disabled,lvl=None____,wipe=none,baud=115200 -ide-version=10810 -build-path /tmp/arduino_build_632614 -warnings=all -build-cache /tmp/arduino_cache_988111 -prefs=build.warn_data_percentage=75 -verbose /home/alex/Arduino/sketch_nov10a/sketch_nov10a.ino
/home/alex/arduino-1.8.10/arduino-builder -compile -logger=machine -hardware /home/alex/arduino-1.8.10/hardware -hardware /home/alex/Arduino/hardware -tools /home/alex/arduino-1.8.10/tools-builder -tools /home/alex/arduino-1.8.10/hardware/tools/avr -built-in-libraries /home/alex/arduino-1.8.10/libraries -libraries /home/alex/Arduino/libraries -fqbn=esp8266com:esp8266:nodemcuv2:xtal=80,vt=flash,exception=disabled,ssl=all,eesz=4M,ip=lm2f,dbg=Disabled,lvl=None____,wipe=none,baud=115200 -ide-version=10810 -build-path /tmp/arduino_build_632614 -warnings=all -build-cache /tmp/arduino_cache_988111 -prefs=build.warn_data_percentage=75 -verbose /home/alex/Arduino/sketch_nov10a/sketch_nov10a.ino
Using board 'nodemcuv2' from platform in folder: /home/alex/Arduino/hardware/esp8266com/esp8266
Using core 'esp8266' from platform in folder: /home/alex/Arduino/hardware/esp8266com/esp8266
/home/alex/Arduino/hardware/esp8266com/esp8266/tools/python3/python3 /home/alex/Arduino/hardware/esp8266com/esp8266/tools/makecorever.py --build_path /tmp/arduino_build_632614 --platform_path /home/alex/Arduino/hardware/esp8266com/esp8266 --version unix-2.6.0
Detecting libraries used...
/home/alex/Arduino/hardware/esp8266com/esp8266/tools/xtensa-lx106-elf/bin/xtensa-lx106-elf-g++ -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ -I/home/alex/Arduino/hardware/esp8266com/esp8266/tools/sdk/include -I/home/alex/Arduino/hardware/esp8266com/esp8266/tools/sdk/lwip2/include -I/home/alex/Arduino/hardware/esp8266com/esp8266/tools/sdk/libc/xtensa-lx106-elf/include -I/tmp/arduino_build_632614/core -c -w -Os -g -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 -std=gnu++11 -ffunction-sections -fdata-sections -fno-exceptions -DNEW_OOM_ABORT -w -x c++ -E -CC -DNONOSDK22x_191024=1 -DF_CPU=80000000L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0 -DARDUINO=10810 -DARDUINO_ESP8266_NODEMCU -DARDUINO_ARCH_ESP8266 "-DARDUINO_BOARD=\"ESP8266_NODEMCU\"" -DFLASHMODE_DIO -DESP8266 -I/home/alex/Arduino/hardware/esp8266com/esp8266/cores/esp8266 -I/home/alex/Arduino/hardware/esp8266com/esp8266/variants/nodemcu /tmp/arduino_build_632614/sketch/sketch_nov10a.ino.cpp -o /dev/null
Alternatives for ESP8266WiFi.h: [ESP8266WiFi@1.0]
ResolveLibrary(ESP8266WiFi.h)
  -> candidates: [ESP8266WiFi@1.0]
/home/alex/Arduino/hardware/esp8266com/esp8266/tools/xtensa-lx106-elf/bin/xtensa-lx106-elf-g++ -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ -I/home/alex/Arduino/hardware/esp8266com/esp8266/tools/sdk/include -I/home/alex/Arduino/hardware/esp8266com/esp8266/tools/sdk/lwip2/include -I/home/alex/Arduino/hardware/esp8266com/esp8266/tools/sdk/libc/xtensa-lx106-elf/include -I/tmp/arduino_build_632614/core -c -w -Os -g -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 -std=gnu++11 -ffunction-sections -fdata-sections -fno-exceptions -DNEW_OOM_ABORT -w -x c++ -E -CC -DNONOSDK22x_191024=1 -DF_CPU=80000000L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0 -DARDUINO=10810 -DARDUINO_ESP8266_NODEMCU -DARDUINO_ARCH_ESP8266 "-DARDUINO_BOARD=\"ESP8266_NODEMCU\"" -DFLASHMODE_DIO -DESP8266 -I/home/alex/Arduino/hardware/esp8266com/esp8266/cores/esp8266 -I/home/alex/Arduino/hardware/esp8266com/esp8266/variants/nodemcu -I/home/alex/Arduino/hardware/esp8266com/esp8266/libraries/ESP8266WiFi/src /tmp/arduino_build_632614/sketch/sketch_nov10a.ino.cpp -o /dev/null
Alternatives for OneWire.h: []
ResolveLibrary(OneWire.h)
sketch_nov10a:2:21: error: OneWire.h: No such file or directory  -> candidates: []

 #include <OneWire.h>
Несколько библиотек найдено для "ESP8266WiFi.h"
                     ^
compilation terminated.
 Используется: /home/alex/Arduino/hardware/esp8266com/esp8266/libraries/ESP8266WiFi
Используем библиотеку ESP8266WiFi версии 1.0 из папки: /home/alex/Arduino/hardware/esp8266com/esp8266/libraries/ESP8266WiFi
exit status 1
OneWire.h: No such file or directory
Для sdk 2.6.0 OneWire относится к другим библиотекам (не включены в IDE)
 

esp340

Active member
у меня этот пример нормально компилируется хоть и тоже пишет "Несколько библиотек найдено для ... ". Да и вообще заметил что подобная хрень появилась после недавних обнов IDE с библиотеками. С чем это связано непонятно. Специально искал дубликаты библиотек - нигде ничего нет. Один из ранее рабочих скетчей отказался компилироваться. Что самое интересное просто создал новый и копированием перенес туда строки из старого - все заработало.
 

nikolz

Well-known member
Простая заготовка. Код исключил до выяснения глюка. Ниже кода ошибки компиляции. Я так понял в ESP8266WiFi.h есть своя OneWire и подключение отдельной конфликтует с ней. Как использовать OneWire в таком случае?
Код:
#include <ESP8266WiFi.h>
#include <OneWire.h>
#include <DallasTemperature.h>
void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}
C:\Users\CGL\Documents\Arduino\libraries\OneWire/OneWire.h:108:2: error: #error "Please define I/O register types here"
#error "Please define I/O register types here"
^
Несколько библиотек найдено для "ESP8266WiFi.h"
Используется: C:\Users\CGL\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.0\libraries\ESP8266WiFi
Несколько библиотек найдено для "OneWire.h"
Используется: C:\Users\CGL\Documents\Arduino\libraries\OneWire
Несколько библиотек найдено для "DallasTemperature.h"
Используется: C:\Users\CGL\Documents\Arduino\libraries\DallasTemperature
exit status 1
Ошибка компиляции для платы Generic ESP8266 Module.
#error "Please define I/O register types here"
просит Вас определите пины к которым подключаете,
У компилятора нет глаз, чтобы вместо вас это увидеть.
А на форуме нет телепатов, чтобы вам внушить как надо
А вам очевидно лень читать документацию и сообщения компилятора.
 

geolog

New member
#error "Please define I/O register types here"
просит Вас определите пины к которым подключаете,
У компилятора нет глаз, чтобы вместо вас это увидеть.
А на форуме нет телепатов, чтобы вам внушить как надо
А вам очевидно лень читать документацию и сообщения компилятора.
:) Я еще ничего в этой заготовке не подключаю. Только библиотеки подгрузил и меня это кстати тоже удивило, какие регистры хочет OneWire... C каких это пор подгрузка библиотек обязывает прописывать регистры или пины?
 

geolog

New member
#error "Please define I/O register types here"
просит Вас определите пины к которым подключаете,
У компилятора нет глаз, чтобы вместо вас это увидеть.
А на форуме нет телепатов, чтобы вам внушить как надо
А вам очевидно лень читать документацию и сообщения компилятора.
:) Я еще ничего в этой заготовке не подключаю. Только библиотеки подгрузил и меня это кстати тоже удивило, какие регистры хочет OneWire... C каких это пор подгрузка библиотек обязывает прописывать регистры или пины? да думаю просто кривая библиотека или IDE.
 
Сверху Снизу