LusoRobótica - Robótica em Português

Robótica => Projectos de robótica => Projectos em desenvolvimento => Tópico iniciado por: luisjustin em 06 de Julho de 2012, 23:06

Título: Desenvolvimento Automoção Residencial (Placa de Reles)
Enviado por: luisjustin em 06 de Julho de 2012, 23:06
Olá, a todos do forum, estou tendo um problema em fazer com que quando eu desconectar do console serial os reles que eu acionei continuem ligado. esse é meu problema o código é este aqui:
Código: [Seleccione]
char Comando[2] = "";
char Status[11] = "0000000000"; //{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}

void setup(){
  Serial.begin(9600);
  Serial.println("---------------------------------------");
  Serial.println("---->  Relay Board 3.0 Iniciando  <----");
  Serial.println("---->  Serial: #3298108301838108  <----");
  Serial.println("---------------------------------------");
  pinMode(A0, OUTPUT);
  pinMode(A1, OUTPUT);
  pinMode(A2, OUTPUT);
  pinMode(A3, OUTPUT);
  pinMode(A4, OUTPUT);
  pinMode(A5, OUTPUT);
  pinMode(A6, OUTPUT);
  pinMode(A7, OUTPUT);
  pinMode(A8, OUTPUT);
  pinMode(A9, OUTPUT);
}

void loop(){
  if(Serial.available() > 0){
    Comando[1] = Comando[2];
    Comando[2] = Serial.read();
    if(Comando[1] == '#'){
      switch(Comando[2]){
         /*
          * Exibir Array;
          */
        case 'R':
          Serial.println(Status);
        break;
         /*
          * Abrir portoes e etc...
          */
        case 'A':
          digitalWrite(A0, HIGH);
          Status[1] = 1;
          delay(1000);
          digitalWrite(A0, LOW);
          Status[1] = 0;
         break;
         case 'B':
           digitalWrite(A1, HIGH);
          Status[2] = 1;
          delay(1000);
          digitalWrite(A1, LOW);
          Status[2] = 0;
         break;
         /*
          * Sequencia de letras maiusculas
          */
         case 'C':
           Status[3] = 1;
         break;
         case 'D':
           Status[4] = 1;
         break;
         case 'E':
           Status[5] = 1;
         break;
         case 'F':
           Status[6] = 1;
         break;
         case 'G':
           Status[7] = 1;
         break;
         case 'H':
           Status[8] = 1;
         break;
         case 'I':
           Status[9] = 1;
         break;
         case 'J':
           Status[10] = 1;
         break;
         /*
          * Sequencia de letras minusculas
          */
         case 'c':
           Status[3] = 0;
         break;
         case 'd':
           Status[4] = 0;
         break;
         case 'e':
           Status[5] = 0;
         break;
         case 'f':
           Status[6] = 0;
         break;
         case 'g':
           Status[7] = 0;
         break;
         case 'h':
           Status[8] = 0;
         break;
         case 'i':
           Status[9] = 0;
         break;
         case 'j':
           Status[10] = 0;
         break;
      }
    }
  }
   if(Status[3] == 1) { digitalWrite(A2, HIGH); } else { digitalWrite(A2, LOW); }
   if(Status[4] == 1) { digitalWrite(A3, HIGH); } else { digitalWrite(A3, LOW); }
   if(Status[5] == 1) { digitalWrite(A4, HIGH); } else { digitalWrite(A4, LOW); }
   if(Status[6] == 1) { digitalWrite(A5, HIGH); } else { digitalWrite(A5, LOW); }
   if(Status[7] == 1) { digitalWrite(A6, HIGH); } else { digitalWrite(A6, LOW); }
   if(Status[8] == 1) { digitalWrite(A7, HIGH); } else { digitalWrite(A7, LOW); }
   if(Status[9] == 1) { digitalWrite(A8, HIGH); } else { digitalWrite(A8, LOW); }
   if(Status[10] == 1) { digitalWrite(A9, HIGH); } else { digitalWrite(A9, LOW); }
}
Título: Re: Desenvolvimento Automoção Residencial (Placa de Reles)
Enviado por: luisjustin em 06 de Julho de 2012, 23:17
Por favor alguém me ajude  :) estou tentando arrumar isso a mais de 1 mês no código antigo e hoje eu refiz o codigo e não consegui alguém me ajude por favor :)
Título: Re: Desenvolvimento Automoção Residencial (Placa de Reles)
Enviado por: senso em 06 de Julho de 2012, 23:27
O problema é que quando ligas o cabo usb ao pc, o arduino faz reset automaticamente, provavelmente é esse o teu problema.
Título: Re: Desenvolvimento Automoção Residencial (Placa de Reles)
Enviado por: luisjustin em 06 de Julho de 2012, 23:28
Entendi mas mesmo que eu não ligue pelo programa do arduino vamos dizer que eu crio meu programa ele vai fazer reset igual ?
Título: Re: Desenvolvimento Automoção Residencial (Placa de Reles)
Enviado por: senso em 06 de Julho de 2012, 23:33
Sim, mas para eliminar esse problema, pode meter uma resistencia de 500ohms entre o reset e os 5v na placa do arduino, só que quando quiser programar a placa tem de tirar essa resistencia ou carregar no botão de reset.
Título: Re: Desenvolvimento Automoção Residencial (Placa de Reles)
Enviado por: luisjustin em 06 de Julho de 2012, 23:44
Não pode ser um resistor de 1K ? por que estou sem o resistor de 500Ohms
Título: Re: Desenvolvimento Automoção Residencial (Placa de Reles)
Enviado por: luisjustin em 07 de Julho de 2012, 00:52
Coloquei um de 480Ohms mas não funcionou fecho o console do arduino ele reinicia a placa as vezes a luz não apaga quando eu fecho e sim quando eu abro ele novamente
Título: Re: Desenvolvimento Automoção Residencial (Placa de Reles)
Enviado por: poliveira1978 em 07 de Julho de 2012, 01:19
se usar um software tipo putty e desligar o DTR penso que deixa de fazer reset.