Go Down

Topic: Arduino Travando. (Read 2131 times) previous topic - next topic

Slipguedes

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?

Slipguedes

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?

bubulindo

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. ;)



This... is a hobby.

Slipguedes

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.

bubulindo

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?

This... is a hobby.

Slipguedes

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.

mmoscz

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.
4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP

Go Up