element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      • Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Arduino
  • Products
  • More
Arduino
Arduino Forum Ethernet Shield error
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Arduino to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Verified Answer
  • Replies 19 replies
  • Subscribers 402 subscribers
  • Views 2819 views
  • Users 0 members are here
  • arduino
Related

Ethernet Shield error

Former Member
Former Member over 11 years ago

I am using below Open source Code to test my Ethernet sheild connected to Uno . Seems Everything is fine  but when I try to compile or upload its comming up with error ; 'Ethernet has not been declared' and There are few other error probally causing because of the Main error ;

rbbb_server:11: error: 'Ethernet' has not been declared

rbbb_server:12: error: 'BufferFiller' does not name a type

rbbb_server.ino: In function 'void setup()':

rbbb_server:15: error: 'ether' was not declared in this scope

rbbb_server:15: error: 'Ethernet' has not been declared

rbbb_server:17: error: 'ether' was not declared in this scope

rbbb_server.ino: In function 'word homePage()':

rbbb_server:25: error: 'bfill' was not declared in this scope

rbbb_server:25: error: 'ether' was not declared in this scope

rbbb_server.ino: In function 'void loop()':

rbbb_server:39: error: 'ether' was not declared in this scope.

 

if someone can help me fix this issues it will be grateful Thank you

 

// This is a demo of the RBBB running as webserver with the Ether Card

// 2010-05-28 <jc@wippler.nl> http://opensource.org/licenses/mit-license.php

 

 

 

//#include <Ethernet.h>

#include <EtherCard.h>

 

 

// ethernet interface mac address, must be unique on the LAN

static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };

static byte myip[] = { 192,168,1,203 };

 

 

byte Ethernet::buffer[500];

BufferFiller bfill;

 

 

void setup () {

  if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)

    Serial.println( "Failed to access Ethernet controller");

  ether.staticSetup(myip);

}

 

 

static word homePage() {

  long t = millis() / 1000;

  word h = t / 3600;

  byte m = (t / 60) % 60;

  byte s = t % 60;

  bfill = ether.tcpOffset();

  bfill.emit_p(PSTR(

    "HTTP/1.0 200 OK\r\n"

    "Content-Type: text/html\r\n"

    "Pragma: no-cache\r\n"

    "\r\n"

    "<meta http-equiv='refresh' content='1'/>"

    "<title>RBBB server</title>"

    "<h1>$D$D:$D$D:$D$D</h1>"),

      h/10, h%10, m/10, m%10, s/10, s%10);

  return bfill.position();

}

 

 

void loop () {

  word len = ether.packetReceive();

  word pos = ether.packetLoop(len);

 

  if (pos)  // check if valid tcp data is received

    ether.httpServerReply(homePage()); // send web page data

}

  • Sign in to reply
  • Cancel
  • Robert Peter Oakes
    0 Robert Peter Oakes over 11 years ago

    Have you verified you have the correct library installed in the library folder for the IDE

     

    What Shield are you using, I would assume it would be a WizNet 5100 based shield but please confirm

     

    Based on the fact your getting the errors including the include itself, this would imply the compiler can not find the library

     

    WizNet is I believe fully supported by the default IDE libraries, the reason I ask it that you comment out ethernet.h and replaced with ethercard.h, why was this and does the other one work ?

     

    ethercard may be for the ENC chip Ethernet controller and would need you to actually download the library if your using that device of course.

     

    regards

    Peter

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 11 years ago in reply to Robert Peter Oakes

    Dear Sir,

     

     

     

         Thank you for your email. actually example I am using which is called Rbbb server example which work fine I think with ENC28J60 Ethernet Module, but Here I am using Arduino Ethernet Sheild Instead of ENC28J60 Do you think would it matter its just same modules in the end?

     

    when I use Web server example with Arduino Ethernet sheild it works fine I can get to that IP using web browser but problems comes when I use rbbb server example onto Arduino Ethernet sheild!

     

    ?Thank you

     

    Regards

     

    Ankit

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 11 years ago in reply to Robert Peter Oakes

    Hi Sorry I meant I am using W5100? wiznet Ethernet sheild and rbbb server example doesnt work Its uploads but doesnt work ?

     

     

    Thank you

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Robert Peter Oakes
    0 Robert Peter Oakes over 11 years ago in reply to Former Member

    Unfortunately the ENC and the WIZ boards are very different in their design, yes they both provide internet functionality but the code used to make them work is not compatible at the sketch level, you have to adjust the programming to work on the other

     

    the fortunate thing is that it is easier to go from a ENC to Wiz rather than the other way around

     

    If i get a chance over the weekend I will look at your code to see if I can help you fix it

     

    till then, have fun, and good luck

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 11 years ago in reply to Robert Peter Oakes

    ?Thank you sir

     

     

    Regards

     

    Ankit Patel

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Robert Peter Oakes
    0 Robert Peter Oakes over 11 years ago

    Im Back, Had a look at your code, updated it to make it work, here is a video of the results

     

    You don't have permission to edit metadata of this video.
    Edit media
    x
    image
    Upload Preview
    image

     

    The ENC28J60 does not directly support TCP/IP and requires a far larger library in order to implement it, the WIZ chip has firmware TCP/IP stack built in and supports several concurrent sessions

     

    the Older ENC library was also incompatible with the default Arduino Library created to support the Wiznet chip

     

    I hear there is now a later version that has been re-worked to be fully compatible so if you want maximum flexibility then you should adopt this new ENC library

     

    You can find it here: https://github.com/ntruchsess/arduino_uip


    here is the adapted code based on your posted code to work on the WizNet board


    #include <SPI.h>
    #include <Wire.h>
    #include <stdio.h>
    #include <Ethernet.h>
    //#include <EtherCard.h>
    
    // ethercard interface mac address, must be unique on the LAN
    //static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
    //static byte myip[] = { 192,168,1,203 };
    // byte Ethernet::buffer[500];
            
    //ethernet
    byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x4E, 0x10 };  // MAC address 84.85.88.16.0.36
    byte ip[]  = { 192, 168, 1, 203 };                     // ip-address, please change to fit your network
    byte mydns[] = { 192, 168, 1, 1 };          
    byte gateway[] = { 192, 168, 1, 1 };           
    byte subnet[] = { 255,255,255,0 };
    EthernetServer server(80);
    static char output[300] = "";
    #define BUFLEN 255
    
    
    //BufferFiller bfill;
    
    
    void setup () {
    //ethercard
    // if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
    //   Serial.println( "Failed to access Ethernet controller");
    //ether.staticSetup(myip);
      Serial.begin(9600);
      //ethernet
      Ethernet.begin(mac, ip);
      server.begin();
      Serial.print("server is at ");
      Serial.println(Ethernet.localIP());
    }
    char headerHTML[] = "HTTP/1.1 200 OK\r\n"
              "Content-Type: text/html\r\n"
              "Connection: close\r\n"
              "Refresh: 5\r\n"
              "\r\n"
              "<!DOCTYPE HTML>"
              "<Title>RBBS Server</Title>"
              "<html>";
            
    char footerHTML[] = "</html>" ;
    
    char * TimeElapsed() { // Was Home Page
      long t = millis() / 1000;
      word h = t / 3600;
      byte m = (t / 60) % 60;
      byte s = t % 60;
      sprintf(output, "<h1>%d%d:%d%d:%d%d</h1>" , h/10, h%10, m/10, m%10, s/10, s%10);
      return output;
    }
    
    void sendAnalogToNetwork(EthernetClient myClient)
    {
        // output the value of each analog input pin for good measure
        for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
          int sensorReading = analogRead(analogChannel);
          myClient.print("analog input ");
          myClient.print(analogChannel);
          myClient.print(" is ");
          myClient.print(sensorReading);
          myClient.println("<br />");     
        }
    }
    
    void loop ()
    {
    // listen for incoming clients
      EthernetClient client = server.available();
      if (client) {
        Serial.println("new client");
        // an http request ends with a blank line
        boolean currentLineIsBlank = true;
        while (client.connected()) {
          if (client.available()) {
            char c = client.read();
            Serial.write(c);
            // if you've gotten to the end of the line (received a newline
            // character) and the line is blank, the http request has ended,
            // so you can send a reply
            if (c == '\n' && currentLineIsBlank) {
              // send a standard http response header
              client.print(headerHTML);
              // now send the stuff we want
              client.print(TimeElapsed()); // your old code here
              // do some more stuff
              sendAnalogToNetwork(client);
               // were done sending so now send the footer to close the page
              client.println(footerHTML);
              break;
            }
            if (c == '\n') {
              // you're starting a new line
              currentLineIsBlank = true;
            }
            else if (c != '\r') {
              // you've gotten a character on the current line
              currentLineIsBlank = false;
            }
          }
        }
        // give the web browser time to receive the data
        delay(1);
        // close the connection:
        client.stop();
        Serial.println("client disconnected");
      }
    }

     

    As you can see I have also provided a bit of re-formatting of the code to use more functions and variables for the constant strings, it could be better but it does demonstrate how the code needs to work on the Wiznet and also a few tips on program design

     

    I hope it meets your needs and gets you going int the right direction

     

    If this is the right Answer for you then please click "Correct Answer", thanks

    Attachments:
    RBBS_Server_Update.ino.zip
    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Robert Peter Oakes
    0 Robert Peter Oakes over 11 years ago

    And to prove the new ENC library is code comparable with the Wiznet library here is the same sketch working on the ENC chip, the ONLY difference was which library I included

    You don't have permission to edit metadata of this video.
    Edit media
    x
    image
    Upload Preview
    image

     

    Code :

    #include <SPI.h>
    #include <Wire.h>
    #include <stdio.h>
    //#include <Ethernet.h>
    #include <UIPEthernet.h>
    
    // ethercard interface mac address, must be unique on the LAN
    //static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
    //static byte myip[] = { 192,168,1,203 };
    // byte Ethernet::buffer[500];
             
    //ethernet
    byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x4E, 0x10 };  // MAC address 84.85.88.16.0.36
    byte ip[]  = { 192, 168, 1, 203 };                     // ip-address, please change to fit your network
    byte mydns[] = { 192, 168, 1, 1 };           
    byte gateway[] = { 192, 168, 1, 1 };            
    byte subnet[] = { 255,255,255,0 };
    EthernetServer server(80);
    static char output[300] = "";
    #define BUFLEN 255
    
    
    //BufferFiller bfill;
    
    
    void setup () {
    //ethercard
    // if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
    //   Serial.println( "Failed to access Ethernet controller");
    //ether.staticSetup(myip);
      Serial.begin(9600);
    
    
      //ethernet
      Ethernet.begin(mac, ip);
      server.begin();
      Serial.print("server is at ");
      Serial.println(Ethernet.localIP());
    }
    char headerHTML[] = "HTTP/1.1 200 OK\r\n"
              "Content-Type: text/html\r\n"
              "Connection: close\r\n"
              "Refresh: 5\r\n"
              "\r\n"
              "<!DOCTYPE HTML>"
              "<Title>RBBS Server</Title>"
              "<html>";
             
    char footerHTML[] = "</html>" ;
    
    char * TimeElapsed() { // Was Home Page
      long t = millis() / 1000;
      word h = t / 3600;
      byte m = (t / 60) % 60;
      byte s = t % 60;
      sprintf(output, "<h1>%d%d:%d%d:%d%d</h1>" , h/10, h%10, m/10, m%10, s/10, s%10);
      return output;
    }
    
    void sendAnalogToNetwork(EthernetClient myClient)
    {
        // output the value of each analog input pin for good measure
        for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
          int sensorReading = analogRead(analogChannel);
          myClient.print("analog input ");
          myClient.print(analogChannel);
          myClient.print(" is ");
          myClient.print(sensorReading);
          myClient.println("<br />");      
        }
    }
    
    void loop ()
    {
    // listen for incoming clients
      EthernetClient client = server.available();
      if (client) {
        Serial.println("new client");
        // an http request ends with a blank line
        boolean currentLineIsBlank = true;
        while (client.connected()) {
          if (client.available()) {
            char c = client.read();
            Serial.write(c);
            // if you've gotten to the end of the line (received a newline
            // character) and the line is blank, the http request has ended,
            // so you can send a reply
            if (c == '\n' && currentLineIsBlank) {
              // send a standard http response header
              client.print(headerHTML);
              // now send the stuff we want
              client.print(TimeElapsed()); // your old code here
              // do some more stuff
              sendAnalogToNetwork(client);
               // were done sending so now send the footer to close the page
              client.println(footerHTML);
              break;
            }
            if (c == '\n') {
              // you're starting a new line
              currentLineIsBlank = true;
            }
            else if (c != '\r') {
              // you've gotten a character on the current line
              currentLineIsBlank = false;
            }
          }
        }
        // give the web browser time to receive the data
        delay(1);
        // close the connection:
        client.stop();
        Serial.println("client disconnected");
      }
    }

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 11 years ago in reply to Robert Peter Oakes

    Thank you very much sir. Really appreciate your help. I would like you to help me if possible with this code below, Will it work with Wiznet ethernet module ? it works fine on ENC chip module.

     

    // DHT code from:

    // Example testing sketch for various DHT humidity/temperature sensors

    // Written by ladyada, public domain

     

    #include "DHT.h"

     

    #define DHTPIN 2     // what pin we're connected to

     

    // Uncomment whatever type you're using!

    #define DHTTYPE DHT11   // DHT 11

    // #define DHTTYPE DHT22   // DHT 22  (AM2302)

    //#define DHTTYPE DHT21   // DHT 21 (AM2301)

    DHT dht(DHTPIN, DHTTYPE);

     

    // LCD

    // LCD RS=3, EN=4, DS4=5, DS5=6, DS6=7, DS7=8

    #include Humidity: $D %

    "),

      t, h);

      return bfill.position();

    }

     

    // The main loop

    //  We add to the timer and read the DHT11 values when Timer == 1, otherwise we loop without reading it

    // Once the Timer value == to 1100 we zero it and start the count again.  This way the sensors are only

    // read once every 1100 loops.  Every time we go through the loop we listen for a request on the Ethernet

    //  If we see one we send the webpage.  We also add an animation on the LCD so we know the loop is working.

     

    void loop () {

     

      Timer  = Timer+1;

      if(Timer==1)

      {

        ReadDHT11();

        // set the cursor to (0,0):

        lcd.setCursor(0, 0);

        // print from 0 to 9:

     

        lcd.print("Temp: ");

        lcd.print(t);

        lcd.print("C");

        // set the cursor to (16,1):

        lcd.setCursor(0,1);

        lcd.print("Humidity: ");

        lcd.print(h);

        lcd.print("%");

     

        if(Animation==0)

        {

          lcd.print("  *");

        }

        if(Animation==1)

        {

          lcd.print("  +");

        }

        Animation = Animation + 1;

        if(Animation==2)

        {

          Animation=0;

        }

      }

      if(Timer==1100)a

      {

        Timer=0;

      }

     

      word len = ether.packetReceive();

      word pos = ether.packetLoop(len);

     

      if (pos)  // check if valid tcp data is received

      {

        ReadDHT11();

        ether.httpServerReply(homePage()); // send web page data

      }

    }

     

    Thank you

    Regards

    Ankit Patel

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Robert Peter Oakes
    0 Robert Peter Oakes over 11 years ago in reply to Former Member

    I think this will answer your question

     

    DHT22 temperature and Humidity Sensor with Arduino Uno and Ethernet Card (ENC or WizNet) (Instant weather Station)

     

    I posted this last night, all you need to do is incorporate the LCD bits of code and your done. It will work with the ENC or WIZ, just change the include statement

     

    Peter

     

    Please click "Correct Answer" or helpful if this is. thanks

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Reject Answer
    • Cancel
  • Former Member
    0 Former Member over 11 years ago in reply to Robert Peter Oakes

    ?Thank you sir,

     

     

             I am sorry I sound so not clever. But Can you Please help me adding LCD bits onto this Code ?

     

     

    Thank you

     

    Regards

     

    Ankit Patel

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
>
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube