Go Down

Topic: Ethernet on 1.0.4? (Read 2 times) previous topic - next topic

Paul Stoffregen


So am I correct to believe that at one time it did work


Not with the Ethernet library that comes included with Arduino.

Arduino's Ethernet library has used the W5100 chip, since at least Arduino 0012 released in 2008 (I haven't used the versions earlier than 0012).

sencorp



So am I correct to believe that at one time it did work


Not with the Ethernet library that comes included with Arduino.

Arduino's Ethernet library has used the W5100 chip, since at least Arduino 0012 released in 2008 (I haven't used the versions earlier than 0012).


Hmm. Interesting.  Thanks for that Paul. I do have another EthBoard on the way with the W5100 chip and SD card slot. I think I will just sit back and wait for that to come in later in the week. Although, I will be eyeballing this Ethernet Board to get it to work maybe somehow in the future. Cheers and Happy Easter egg day!

sencorp

Well Now I am really confused. Not sure what went wrong with the Ethernet code I was using before. I would compile it and even upload it to the Uno and everything was fine. (All but the Shield with the incorrect chip).  The new Shield came in, and I have been trying to upload the code to give it a test, although I keep getting the following errors.

This is the Code I am using:

Code: [Select]
#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1, 177);

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

void setup() {
// Open serial communications and wait for port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}


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.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
                    // add a meta refresh tag, so the browser pulls again every 5 seconds:
          client.println("<meta http-equiv=\"refresh\" content=\"5\">");
          // output the value of each analog input pin
          for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
            int sensorReading = analogRead(analogChannel);
            client.print("analog input ");
            client.print(analogChannel);
            client.print(" is ");
            client.print(sensorReading);
            client.println("<br />");       
          }
          client.println("</html>");
          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 disonnected");
  }
}




And here are the errors.


In file included from C:\Documents and Settings\Administrator\My Documents\Arduino\libraries\ENC28J60/Ethernet.h:5,
                 from WebServer.ino:19:
C:\Documents and Settings\Administrator\My Documents\Arduino\libraries\ENC28J60/Client.h:22: error: conflicting return type specified for 'virtual void Client::write(uint8_t)'
C:\Documents and Settings\Administrator\My Documents\Downloads\arduino-1.0.4-windows\arduino-1.0.4\hardware\arduino\cores\arduino/Print.h:48: error:   overriding 'virtual size_t Print::write(uint8_t)'
C:\Documents and Settings\Administrator\My Documents\Arduino\libraries\ENC28J60/Client.h:24: error: conflicting return type specified for 'virtual void Client::write(const uint8_t*, size_t)'
C:\Documents and Settings\Administrator\My Documents\Downloads\arduino-1.0.4-windows\arduino-1.0.4\hardware\arduino\cores\arduino/Print.h:53: error:   overriding 'virtual size_t Print::write(const uint8_t*, size_t)'
In file included from C:\Documents and Settings\Administrator\My Documents\Arduino\libraries\ENC28J60/Ethernet.h:6,
                 from WebServer.ino:19:
C:\Documents and Settings\Administrator\My Documents\Arduino\libraries\ENC28J60/Server.h:16: error: conflicting return type specified for 'virtual void Server::write(uint8_t)'
C:\Documents and Settings\Administrator\My Documents\Downloads\arduino-1.0.4-windows\arduino-1.0.4\hardware\arduino\cores\arduino/Print.h:48: error:   overriding 'virtual size_t Print::write(uint8_t)'
C:\Documents and Settings\Administrator\My Documents\Arduino\libraries\ENC28J60/Server.h:18: error: conflicting return type specified for 'virtual void Server::write(const uint8_t*, size_t)'
C:\Documents and Settings\Administrator\My Documents\Downloads\arduino-1.0.4-windows\arduino-1.0.4\hardware\arduino\cores\arduino/Print.h:53: error:   overriding 'virtual size_t Print::write(const uint8_t*, size_t)'
WebServer:25: error: 'IPAddress' does not name a type
WebServer:30: error: 'EthernetServer' does not name a type
WebServer.ino: In function 'void setup()':
WebServer:41: error: 'ip' was not declared in this scope
WebServer:42: error: 'server' was not declared in this scope
WebServer:44: error: 'class EthernetClass' has no member named 'localIP'
WebServer.ino: In function 'void loop()':
WebServer:50: error: 'EthernetClient' was not declared in this scope
WebServer:50: error: expected `;' before 'client'
WebServer:51: error: 'client' was not declared in this scope


I am thinking that somehow I may have mixed up some of the old library files with the newer current ones? I am not sure, and any help would be appreciated.


Paul Stoffregen

and any help would be appreciated.


Simply download another copy of Arduino and unzip it to a new location, so it won't use any of the old one's files.

If you installed that other Ethernet library in your sketchbook folder, delete it.

Restart Arduino, since it scans the list of libraries at startup.

sencorp


and any help would be appreciated.


Simply download another copy of Arduino and unzip it to a new location, so it won't use any of the old one's files.

If you installed that other Ethernet library in your sketchbook folder, delete it.

Restart Arduino, since it scans the list of libraries at startup.


Thanks for that Paul. I ended up digging deeper and found it was pulling two different ethernet.h files. All sorted. It is getting an IP address now. I did want to note something just to see if anyone else has this problem. I have to upload the sketch to the uno without the ether shield first. Once the sketch is uploaded and the shield is connected along with the network cable, the USB connection to the UNO on com port 4, vanishes. The only way to get the PC (Win 64) to see the Uno again is to do a full PC restart.  Not to big of a deal, a bit of a hassle and makes development of the sketch and testing slow.  Just wondering if anyone else out there may have been having this same issue?

Cheers.

Go Up