WiFi Shield - Digital pins low current output

Hi, Guys

I am having some issue with my Arduino UNO R3, and the Arduino WiFi shield. I am trying to turn on a simple LED using the shield however, i get almost no current out of any digital pin that i use. I am not using pins 10-13, and 7 all other pins are same issue. I get 5volts out however when load is attached the voltage drops and i get very low current no where near 20mA.

  2012/2013 Capstone Project
  Wireless Smart Lighting
  Arduino Submodule

  * WiFi shield attached

#include <SPI.h>
#include <WiFi.h>
#define MAX_CMD_LENGTH 25
const int ledPin =  2;      // the number of the LED pin
String cmd;
WiFiClient client;
boolean connected = false;

char ssid[] = "name"; //  your network SSID (name) 
char pass[]="password";
//char pass[] = "secretPassword";    // your network password (use for WPA, or use as key for WEP)

//int keyIndex = 0;            // your network key Index number (needed only for WEP)

int status = WL_IDLE_STATUS;

WiFiServer server(23);

boolean alreadyConnected = false; // whether or not the client was connected previously

void setup() {    
  // initialize the pushbutton pin as an input:
  pinMode(ledPin, INPUT); 
  //Initialize serial and wait for port to open:
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present"); 
    // don't continue:
  // attempt to connect to Wifi network:
  while ( status != WL_CONNECTED) { 
    Serial.print("Attempting to connect to SSID: ");
    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:    
    status = WiFi.begin(ssid,pass);

    // wait 10 seconds for connection:
  // start the server:
  // you're connected now, so print out the status:

void loop() {
  // wait for a new client:
  WiFiClient client = server.available();

  // when the client sends the first byte, say hello:
  if (client) {
    if (!alreadyConnected) {
      // clead out the input buffer:
      Serial.println("We have a new client");
      client.println("Hello, client!"); 
      alreadyConnected = true;
    while (client.available() > 0) {
      char thisChar = client.read();  
      String clientText(thisChar);
        digitalWrite(ledPin, HIGH); 
        Serial.write("Turn LED on. "); 
        client.println("Turn LED on. ");
        digitalWrite(ledPin, LOW);
        Serial.write("Turn LED off. "); 
        client.println("Turn LED off. ");                              
        //int text_val = clientText.compareTo("0");      

void readTelnetcommand(char c){
  if(cmd.length() == MAX_CMD_LENGTH) {
      cmd = "";
  if(c == '\n') {
    if(cmd.length() > 2) {
      // remove \r and \n from the string
      cmd = cmd.substring(0,cmd.length() - 2);

void parseCommand() {

  if(cmd.equals("quit")) {
      connected = false;
  } else if(cmd.equals("help")) {
      server.println("--- Telnet Server Help ---");
      server.println("on    : switch on the Main Power");
      server.println("off   : switch off the Main Power");
      server.println("quit  : close the connection");
  } else if(cmd.equals("on")) {
      digitalWrite(ledPin, HIGH);
      server.println("LED on.");
   } else if(cmd.equals("off")) {
      digitalWrite(ledPin, LOW);
      server.println("LED off.");
  } else {
      server.println("Invalid command, type help");
  cmd = "";

void printWifiStatus() {
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");

  // print your WiFi shield's IP address:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");

  // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.println(" dBm");

On which of the pins that you are not setting to OUTPUT pins are you not getting the voltage/current you expect? Don't you think that maybe setting them to OUTPUT would be useful?

        digitalWrite(ledPin, HIGH);

If you get "on", turn on the pullup resistor on the INPUT pin. How useful.

        digitalWrite(ledPin, LOW);

If you get 'Off", turn off the pullup resistor.