Skocz do zawartości

Problem z kompilacją programu z tutoriala ENC28J60 + Mega2560 + DS18B20


pisiorek

Pomocna odpowiedź

Mam pytanie odnośnie przykładu znalezionego w sieci, który pozwala na przesłanie i wyświetlenie danych na stronie WWW. W tym przykładzie z pierwszą częścią, czyli z wyświetleniem treści na stronie www, nie było kłopotu. Problem pojawia się w drugiej części tutoriala dotyczącej pomiaru temperatury i jej prezentacji w przeglądarce. Program nie chce się skompilować, nie potrafię zinterpretować tych błędów. Chodzi chyba o biblioteki. Korzystam PlatformIO, jednak w Arduino IDE też się nie kompiluje. Proszę o pomoc w rozwiązaniu tego problemu.

Błędy w kompilacji wyglądają tak:


Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/megaatmega2560.html
PLATFORM: Atmel AVR (3.0.0) > Arduino Mega or Mega 2560 ATmega2560 (Mega 2560)     
HARDWARE: ATMEGA2560 16MHz, 8KB RAM, 248KB Flash
DEBUG: Current (avr-stub) On-board (avr-stub, simavr)
PACKAGES:
 - framework-arduino-avr 5.1.0
 - toolchain-atmelavr 1.50400.190710 (5.4.0)
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 14 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <DallasTemperature> 3.9.1
|   |-- <OneWire> 2.3.5
|-- <EtherCard> 1.1.0
|-- <ETHER_28J60> 0.0.0+20201213110320
|-- <etherShield> 0.0.0+20201213111609
|-- <LiquidCrystal> 1.5.0
|-- <OneWire> 2.3.5
Building in release mode
Compiling .pio\build\megaatmega2560\lib11a\LiquidCrystal\I2CIO.cpp.o
Compiling .pio\build\megaatmega2560\lib11a\LiquidCrystal\LiquidCrystal_I2C_ByVac.cpp.o
.pio\libdeps\megaatmega2560\LiquidCrystal\I2CIO.cpp:54:21: fatal error: Wire.h: No such file or directory

**************************************************************
* Looking for Wire.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:Wire.h"
* Web  > https://platformio.org/lib/search?query=header:Wire.h
*
**************************************************************

compilation terminated.
In file included from .pio\libdeps\megaatmega2560\LiquidCrystal\LiquidCrystal_I2C_ByVac.cpp:46:0:
Compiling .pio\build\megaatmega2560\FrameworkArduino\Tone.cpp.o
.pio\libdeps\megaatmega2560\LiquidCrystal\LiquidCrystal_I2C_ByVac.h:56:21: fatal error: Wire.h: No such file or directory
Compiling .pio\build\megaatmega2560\FrameworkArduino\USBCore.cpp.o

**************************************************************
* Looking for Compiling .pio\build\megaatmega2560\FrameworkArduino\WInterrupts.c.o
Wire.hCompiling .pio\build\megaatmega2560\FrameworkArduino\WMath.cpp.o
 dependency? Check our library registry!
*
* CLI  > platformio lib search "header:Wire.h"
* Web  > Compiling .pio\build\megaatmega2560\FrameworkArduino\WString.cpp.o
https://platformio.org/lib/search?query=header:Wire.hCompiling .pio\build\megaatmega2560\FrameworkArduino\abi.cpp.o

*
**************************************************************

compilation terminated.
*** [.pio\build\megaatmega2560\lib11a\LiquidCrystal\I2CIO.cpp.o] Error 1
*** [.pio\build\megaatmega2560\lib11a\LiquidCrystal\LiquidCrystal_I2C_ByVac.cpp.o] Error 1
===================================================================================================== [FAILED] Took 1.60 seconds =====================================================================================

Kod programu wygląda tak:

#include <Arduino.h>
#include "etherShield.h"
#include "ETHER_28J60.h"
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 4 //definiujemy podłączenie czujnika DS18B20
OneWire oneWire(ONE_WIRE_BUS); //uruchamiamy magistrale OneWire
static uint8_t mac[6] = {0x74, 0x69, 0x69, 0x2D, 0x30, 0x31}; //adres MAC                                                      
static uint8_t ip[4] = {192, 168, 1, 200}; //adres bramy domyslnej
static uint16_t port = 80; //port danych, dla HTML wartosc powinna wynosic 80
ETHER_28J60 e;
DallasTemperature sensors(&oneWire); //przypisujemy czujnik DS18B20 do OneWire
void setup()
{ 
  sensors.begin();
  e.setup(mac, ip, port);
}

void loop()
{
  sensors.requestTemperatures(); //pobieramy dane o temperaturze z DS18B20
  float temp = sensors.getTempCByIndex(0); // tworzymy zmienne dla wartości z czujnika
  if (e.serviceRequest())
  {
    e.print("<H3>Oto twoj pierwszy sieciowy czujnik temperatury!</H3><br/>");
    e.print("Temperatura wynosi ");
    e.print(temp);
    e.print(" *C");
    e.respond();
  }
  delay(100);
}

 

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.