@waski, I did read the first post and also the long string in the 2011 Forum (very interesting), but is there is faster way to check that the shield is working than pinging the router ? I am accepting interrupts and don't want to be in timer code for a while.
BTW, I am now exclusively using the Arduino Ethernet board and not the shield as the Board has a lower failure rate and costs $45 with a lower profile.
@SurferTim, I will deploy your code from the playground tonight and let you know. Right now I am using the WebClient Repeating code.
/*
Repeating Web client
This sketch connects to a a web server and makes a request
using a Wiznet Ethernet shield. You can use the Arduino Ethernet shield, or
the Adafruit Ethernet shield, either one will work, as long as it's got
a Wiznet Ethernet module on board.
This example uses DNS, by assigning the Ethernet client with a MAC address,
IP address, and DNS address.
Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
created 19 Apr 2012
by Tom Igoe
http://arduino.cc/en/Tutorial/WebClientRepeating
This code is in the public domain.
*/
#include <SPI.h>
#include <Ethernet.h>
#define DEBUG1 1
// assign a MAC address for the ethernet controller.
// fill in your address here:
byte mac[] = {
0x90, 0xA2, 0xDA, 0x0D, 0xCE, 0xD2};
// fill in an available IP address on your network here,
// for manual configuration:
IPAddress ip(192,168,0,220);
// fill in your Domain Name Server address here:
//IPAddress myDns(1,1,1,1);
// initialize the library instance:
EthernetClient client;
char server[] = "www.arduino.cc";
unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds
unsigned long trips = 0; // number of loops in the code
boolean lastConnected = false; // state of the connection last time through the main loop
const unsigned long postingInterval = 2*1000; // delay between updates, in milliseconds
void setup() {
// start serial port:
Serial.begin(115200);
// give the ethernet module time to boot up:
delay(1000);
// start the Ethernet connection using a fixed IP address and DNS server:
//Ethernet.begin(mac, ip, myDns);
// start the Ethernet connection:
if (Ethernet.begin(mac) == 0) {
if (DEBUG1) Serial.println("Failed to configure Ethernet using DHCP");
// DHCP failed, so use a fixed IP address:
Ethernet.begin(mac, ip);
}
// print the Ethernet board/shield's IP address:
Serial.print("My IP address: ");
Serial.println(Ethernet.localIP());
}
void loop() {
// if there's incoming data from the net connection.
// send it out the serial port. This is for debugging
// purposes only:
if (client.available()) {
char c = client.read();
//Serial.print(c);
}
// if there's no net connection, but there was one last time
// through the loop, then stop the client:
if (!client.connected() && lastConnected) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
}
// if you're not connected, and ten seconds have passed since
// your last connection, then connect again and send data:
if(!client.connected() && (millis() - lastConnectionTime > postingInterval)) {
if (DEBUG1) Serial.print("trips ");
if (DEBUG1) Serial.println(trips);
httpRequest();
trips = 0;
}
// store the state of the connection for next time through
// the loop:
lastConnected = client.connected();
trips++;
}
// this method makes a HTTP connection to the server:
void httpRequest() {
// if there's a successful connection:
if (client.connect(server, 80)) {
Serial.println("connecting...");
// send the HTTP PUT request:
client.println("GET /latest.txt HTTP/1.1");
client.println("Host: www.arduino.cc");
client.println("User-Agent: arduino-ethernet");
client.println("Connection: close");
client.println();
// note the time that the connection was made:
lastConnectionTime = millis();
if (DEBUG1) Serial.println(lastConnectionTime);
}
else {
// if you couldn't make a connection:
Serial.println("connection failed");
Serial.println("disconnecting.");
client.stop();
}
}
and I get the following output
My IP address: 10.128.0.154
trips 0
connecting...
5673
disconnecting.
trips 126865
connecting...
8051
disconnecting.
trips 127517
connecting...
10428
disconnecting.
trips 127059
connecting...
8467613
disconnecting.
And then nothing.
thx,
netnut