Bom dia a todos,

Comecei com o Arduino há pouco tempo, para não dizer ontem.

Hoje tentei fazer uma gambiarra para testar o Rele e começou a ocorrer alguns situações estranhas.

Eu testei usando um Cooler (de computador mesmo, padrão). Então, coloquei 5V na entrada AN e liguei o Cooler no C. Depois fiz as ligações normais (VCC, IN, GND) com o Arduino. Liguei o cooler também no GND.

Bem, acho que não há nada de errado. 

Mas, os bugs começaram...
O TX fica piscando por padrão, então, acredito que deva sempre ficar piscando. Mas, de uma hora para outra o TX desligou, o sistema funciona, isso é, desliga o Relê com o sensor de luz e liga na presença de luz. Mas, o TX não dava nenhum sinal de vida. :|

Depois, reenviei o código ao Arduino, ele rodou e depois de algum tempo travou aceso. 

Para repetir, desliguei ele do USB (que é a única alimentação) e tentei ligar. Neste momento quase morri, o sensor de luz não respondia e o TX desligado, além disso não consegui enviar nada ao Arduino, simplesmente dava erro. Mas, dei um Reset e viveu novamente.

Agora...

O que o TX representa? Há alguma informação quando o TX trava ligado ou desligado? Há algum problema, curto sei lá, no sistema que está fazendo isso? Porque o sistema continua funcionando, mesmo depois do TX não responder?

Exibições: 4385

Responder esta

Respostas a este tópico

Olá Lucas,

Não da para entender bem como fez as ligações, note que existem limites de corrente na saídas das portas do Arduino, 40mA máximo, um cooler mesmo pequeno, consome as vezes mais que isso, o que nos obriga a usar uma fonte externa, quando você se refere a entrada AN e C não fica claro pra mim, se puder envie o esquema da ligação feita, pode ser a mão livre, ou uma foto das ligações, talvez esteja utilizando as saídas além de sua capacidade, e como a placa tem uma proteção contra curto ou sobrecarga, as vezes ele pode deixar de funcionar adequadamente por proteção, e depois voltar a funcionar após um reset, quanto ao led tx é normal ele ficar acesso quando exista um código de comunicação por exemplo que use as portas tx rx.

Abs.

Bem, como disse estou começando e o problema não está nem relacionado ao Relê ou nada do tipo.

O TX, pelo que vi, é basicamente um LED que informa se há troca de dados entre o Arduino e o USB.

O que está causando problema é o "Serial.println". 
Quando eu ligo o console ele funciona normalmente, "para sempre". Entretanto, quando não ligo aquele controle lá, ele simplesmente trava aceso depois de algum tempo.

Eu havia feito algo assim:

Serial.println("Luz");
Serial.println(valor);

Serial.println("Infravermelho");
Serial.println(infra);

Serial.println("Temperatura");
Serial.println(temperatura);

Dessa forma, rapidamente ele travava com LED aceso, quando eu não ligava o "Monitor Serial".
Então, resolvi tirar os "comentários", deixando somente os valores.

Isso é, deixei assim:

Serial.println(valor);
Serial.println(infra);
Serial.println(temperatura);

Isso fez com que ele 'aguentasse' mais tempo, mas, depois de algumas horas ele travou aceso novamente.
Minha pergunta é, porque isso ocorre? 

Embora haja uma solução simples: "remover o Serial.println" ou acrescentar alguma variavel para saber se o Monitor Serial está ativo ou não, não sei se existe. Ainda resta a duvida...

Porque e como posso evitar, de uma vez, que isso ocorra?



Se você esta convencido que o problema é o que você descreve, eu testaria colocar o código que estou colando aqui e ver se tem o mesmo problema, por outra parte seria bom se colasse seu código completo para analisar.

/*
Uses a FOR loop for data and prints a number in various formats.
*/

int x = 0;    // variable

void setup() {
  Serial.begin(9600);      // open the serial port at 9600 bps:    
}

void loop() {  
  // print labels
  Serial.print("NO FORMAT");       // prints a label
  Serial.print("\t");              // prints a tab

  Serial.print("DEC");  
  Serial.print("\t");      

  Serial.print("HEX");
  Serial.print("\t");  

  Serial.print("OCT");
  Serial.print("\t");

  Serial.print("BIN");
  Serial.print("\t");

  for(x=0; x/span> 64; x++){    // only part of the ASCII chart, change to suit

    // print it out in many formats:
    Serial.print(x);       // print as an ASCII-encoded decimal - same as "DEC"
    Serial.print("\t");    // prints a tab

    Serial.print(x, DEC);  // print as an ASCII-encoded decimal
    Serial.print("\t");    // prints a tab

    Serial.print(x, HEX);  // print as an ASCII-encoded hexadecimal
    Serial.print("\t");    // prints a tab

    Serial.print(x, OCT);  // print as an ASCII-encoded octal
    Serial.print("\t");    // prints a tab

    Serial.println(x, BIN);  // print as an ASCII-encoded binary
    //                             then adds the carriage return with "println"
    delay(200);            // delay 200 milliseconds
  }
  Serial.println("");      // prints another carriage return
}

Abs.

Lucas bom dia.

O Carlos está fazendo um grande esforço para ajuda-lo, mas se voce postar o esquema e o código do

seu projeto, ficaria bem mais fácil para ele te ajudar, e talvez outros tenham possibilidade de ajuda-lo também.

Faça isto, ajude-nos a ajudá-lo.

Rui

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço