I have been working on a project that does some data acquisition (water pH and temperature) and is supposed to post the data to Pachube.

The code and the hardware is working fine, until I attach the (Arduino) Ethernet shield to Arduino (Uno). When I do that, it seems that the whole thing becomes incredibly slow (specifically, I have a few input buttons that each run a routine, and when pressed they worked just fine without the shield, but with the shield I have to keep pressing on them for about 3 seconds until the board registers the button press). Is the shield that much of a processor hog?

pinMode (A2, INPUT); //defines OK button as a digital in, on an analog pin pinMode (A3, INPUT); //defines calibration button as a digital in, on an analog pin pinMode (A4, INPUT); //defines up button as a digital in, on an analog pin pinMode (A5, INPUT); //defines down button as a digital in, on an analog pin

buttonState0 = digitalRead(A3); //checks Calib button for a press every cycle buttonState1 = digitalRead(A4); //checks Up button for a press every cycle buttonState2 = digitalRead(A5); //checks Down button for a press every cycle

if (buttonState0 == HIGH) //THIS IS TAKING LIKE 3 SECONDS TO REGISTER A PRESS, WITH ETH SHIELD ON { calibration_ph7(); calibration_ph4(); }

I'll only have a chance to go to the lab and test it next thursday. So you're saying that keeping the connection open all the time hogs the processing power? I can see why. I'll test it and then give some feedback.

I just remembered that although I didn't have the shield connected when running the first tests, I was running the exact same code, and it was working fine. It was when I connected the shield (and even without a cat5 cable on, so no physical connection for data transfer) that the problem began.

Every iteration through the loop, it will wait for that connection attempt to timeout. If you try that only once every 15 minutes, you won't notice nearly as much. And when it can connect, it should move right along.

You seem to have nailed it on the head. I just commented the client.connect() line and it started working great again. I'll change it to only connect when it's time to send the data. Thank you very much