Arduino Travando.

Boa noite, tenho um arduino mega 2560 e quando vou fazer o upload deste código trava tudo e não consigo concluir o up.

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

byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x49, 0xD6 };
byte ip[] = {192,168,12,5}; // IP address of WiShield
byte gateway[] = {192,168,12,1}; // router or gateway IP address
byte subnet[] = {255,255,255,0};

EthernetServer server(80); //server port
int PinoLed = 5;

void setup()
{
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
pinMode(PinoLed, OUTPUT);
Serial.begin(9600);
}

void loop()
{

EthernetClient client = server.available();

if (client)
{
boolean currentLineIsBlank = true;
String vars;
int varOnOff = 0;
while (client.connected())
{
if(client.available())
{
char c = client.read();
Serial.print(c);
vars.concat(c);
if(vars.endsWith("/on"))
varOnOff = 1;
else if(vars.endsWith("/off"))
varOnOff = 2;

if(c == '\n' && currentLineIsBlank)
{
client.println("HTPP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();

if(varOnOff == 1)
{
client.println("Ligado");
}
else if(varOnOff == 2)
{
client.println("Desligado");
}
else
{
client.println("Bem vindo!!!!");
}
break;
}
if (c == '\n'){
currentLineIsBlank = true;
}
else if(c != '\r'){
currentLineIsBlank = false;
}
}
}
delay(1);

client.stop();
Serial.println("client disonnected");
}

}

Depois eu tenho que fazer o upload de outro código exemplo o blink para o arduino voltar a funcionar. Alguém sabe o que pode ser?

Fazendo alguns teste observei que o meu problema esta na linha:

if(c == '\n' && currentLineIsBlank)

Quando utilizo de forma equivoca o '/n' o arquivo fica com o tamanho de 13.972 bytes e consigo fazer o upload.
Mas quando eu concerto e uso o '\n' o arquivo fica om o tamanho de 14.192 bytes e não consigo mais fazer o upload e o led "13" fica aceso direto. Alguém já viu isso?

Já experimentaste colocar um blink no meio do código para ver se realmente o led fica bloqueado? Segundo o teu código é isso que ele vai fazer. :S

Experimenta colocar Um Serial.print no fim da setup para tirar isto a limpo. :wink:

Eu acho que você não entendeu muito bem, o led fica aceso na hora do upload quando esta tudo travado. Ai eu tenho que tirar o arduino da usb e colocar novamente para poder voltar a se comunicar com o pc. Só que deste modo não consigo gravar nada no chip.

Eu percebi o que disseste. Mas como sabes que o programa ficou empancado sem serial prints ou digital writes?

O arduino dá indicação de erro ao fazer upload?

Não. O arduino nem completa o upload. Fica a mensagem "Uploading" e o led fica aceso direto, o programa trava e não sai disso. Ai tenho que tirar da usb e conectar de novo mas ai o led começa a piscar uma vez rápida e duas lentas.

Esse problema me acontece com o Arduino UNO, eu tenho que MUDAR de porta USB e ele passa a fazer o upload.
Com meus duemilaenove isso não ocorre.