Why can't I assign my Ethernet shield and IP address?

I am in the beginning stages of creating a project to control my irrigation sprinklers via smartphone. I have connect a sainsmart solidstate relay board and wrote a test program to turn the solenoids on and off. So far so good.

I purchased a ethernet shield and am merely tring to assign an IP address to it. However, I keep getting 0.0.0.0 as the IP address.

========================================================CODE========================================================
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1, 252);
EthernetServer server(80);
void setup()
{
Serial.begin(9600);
Serial.println("IP Address: ");
Serial.println(ip);
Serial.println("Ethernet Begin");
Ethernet.begin(mac,ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
void loop()
{
}
======================================================Results================================================
IP Address:
192.168.0.252
Ethernet Begin
server is at 0.0.0.0

Simple server test code you can try.

//zoomkat 4-05-12
//web LED code
//for use with IDE 1.0
//open serial monitor to see what the arduino receives
//use the \ slash to escape the " in the html (or use ') 
//address will look like http://192.168.1.102:84 when submited
//for use with W5100 based ethernet shields
//turns pin 5 on/off

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 1, 102 }; // arduino server ip in lan
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router gateway
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(84); //arduino server port

String readString; 

//////////////////////

void setup(){

  pinMode(5, OUTPUT); //pin selected to control
  //start Ethernet
  Ethernet.begin(mac, ip, gateway, subnet);
  server.begin();

  //enable serial data print 
  Serial.begin(9600); 
  Serial.println("servertest1"); // so I can keep track of what is loaded
}

void loop(){
  // Create a client connection
  EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();

        //read char by char HTTP request
        if (readString.length() < 100) {

          //store characters to string 
          readString += c; 
          Serial.print(c); //print what server receives to serial monitor
        } 

        //if HTTP request has ended
        if (c == '\n') {

          ///////////////
          Serial.println(readString);

          //now output HTML data header

          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();

          client.println("<HTML>");
          client.println("<HEAD>");
          client.println("<TITLE>Arduino GET test page</TITLE>");
          client.println("</HEAD>");
          client.println("<BODY>");

          client.println("<H1>HTML form GET example</H1>");

          client.println("<FORM ACTION=\"http://192.168.1.102:84\" method=get >");

          client.println("Pin 5 \"on\" or \"off\": <INPUT TYPE=TEXT NAME=\"LED\" VALUE=\"\" SIZE=\"25\" MAXLENGTH=\"50\">
");

          client.println("<INPUT TYPE=SUBMIT NAME=\"submit\" VALUE=\"Change Pin 5!\">");

          client.println("</FORM>");

          client.println("
");

          client.println("</BODY>");
          client.println("</HTML>");

          delay(1);
          //stopping client
          client.stop();

          /////////////////////
          if(readString.indexOf("on") >0)//checks for on
          {
            digitalWrite(5, HIGH);    // set pin 5 high
            Serial.println("Led On");
          }
          if(readString.indexOf("off") >0)//checks for off
          {
            digitalWrite(5, LOW);    // set pin 5 low
            Serial.println("Led Off");
          }
          //clearing string for next read
          readString="";

        }
      }
    }
  }
}

The Ethernet shield may be shorting out on the USB port of the arduino!

cover the USB thing with electrical tape, or buy some header pins to get a decent space between!

XD

I was told the ethernet port was shortin gout too but i put layers of electrical tape trying to see if it would help and i guess it did. Then i was told to check if the 4 pins on the back of the arduino were fully connected and i pressume they are but i still get "server is at 0.0.0.0"?

Does your ethernet shield have a w5100 ethernet controller? Do you have a SD card in the shield's slot?

The same was happening to me, so when I removed the SD card, the problem was solved.
Try to remove "SD Card" from slot!

I've also seen it recommended that if the microSD isn't being used, it's worth explicitly disabling it by taking its SS pin high:

int SDcard_SSpin= 4;  // for Uno anyway
pinMode(SDcard_SSpin, OUTPUT)
digitalWrite(SDcard_SSpin, HIGH)

Gamerdude2956:
I was told the ethernet port was shortin gout too but i put layers of electrical tape trying to see if it would help and i guess it did. Then i was told to check if the 4 pins on the back of the arduino were fully connected and i pressume they are but i still get "server is at 0.0.0.0"?

Assuming your arduino shield is a w5100 one and is connected to a router, you could try the below to see if your router will assign it an IP address.

//open serial monitor to see assigned IP address

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

void setup()
{
  Serial.begin(9600); 

  // disable SD SPI if memory card in the uSD slot
  pinMode(4,OUTPUT);
  digitalWrite(4,HIGH);

  Serial.println("Starting w5100...");
  if(!Ethernet.begin(mac)) Serial.println("failed");
  else Serial.println(Ethernet.localIP());
}

void loop() {

}

The only thing the serial monitor says is "Starting w5100..."
So i think theirs and issue?

Are you waiting to see if that times out? It may take a couple minutes for the dhcp request to fail.

Here is my test to check the SPI bus and the w5100. If this displays 0.0.0.0, or anything besides 192.168.2.2, the you have a problem with the SPI bus or the w5100.

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,2,2);

void setup() {
  Serial.begin(9600);

  // disable SD card if one in the slot
  pinMode(4,OUTPUT);
  digitalWrite(4,HIGH);

  Serial.println("Starting w5100");
  Ethernet.begin(mac,ip);

  Serial.println(Ethernet.localIP());
}

void loop() {
}

I saw your post in Programming also. This part of zoomkat's code is incorrect. The dns server parameter is missing. I use the gateway ip if the code does not use dns.

// change this
  Ethernet.begin(mac, ip, gateway, subnet);
// to this
  Ethernet.begin(mac, ip, gateway, gateway, subnet);

I did your little test but i changed the ip to 10.0.0.56 and in serial monitor i get "Starting w5100....0.0.0.0"

Then your ethernet shield has failed. Can you post which Arduino you have and a link to the ethernet shield you are using?

Insure the ICSP pins on the Arduino are connected to the 6 pin socket on the shield.

The iscip or whatever pins are indeed firmly connected,
My arduino uno board is: http://www.amazon.com/gp/product/B006H06TVG/ref=oh_details_o00_s00_i01?ie=UTF8&psc=1
My Ethernet shield is: http://www.amazon.com/gp/product/B006J4FZTW/ref=oh_details_o00_s00_i02?ie=UTF8&psc=1

Sounds like the ethernet shield has failed, or never did work to begin with. :frowning:

But all the lights are working? It worked the first time i tried it for about 5 minutes then stopped working all together.....

Could you recommend an Ethernet shield for me then so i dont end up making the same mistake.

It may not be your mistake. It may be a failure in that particular card. Can you contact the seller and see if you can get a replacement?

They wont email me back, i have emailed them in many occasion and still no response from them, last time i emailed them was in December.

I have been using Adafruit lately with excellent results.

Got my RPi there too. The Arduino/ethernet/wifi shield and the RPi work really well together.

$45 for an Ethernet shield..... Wow, well i guess i will buy it but what do i do with this old shield?