Go Down

Topic: Problemas com relé (Read 18 times) previous topic - next topic

bubulindo

Sim... se quiseres podes meter o segundo, eu não me dei ao trabalho porque vi que não o usavas.

Quando à alternancia, eu reparei que o Arduino tem algum significado para now. Também reparei que meti as variáveis como locais.
Este sketch funciona para alternar de 10 em 10 segundos.

Code: [Select]
#define TIMEOUT 10000

void setup(){

Serial.begin(19200);
}

unsigned long t_now = 0, before = 0;
unsigned char data = 0;

void loop(){




if((t_now = millis())-before > TIMEOUT) {
   if (data == 0) {
      Serial.print("COISAS");
      data = 1;
      } else {
      Serial.print("OUTRAS COISAS");
      data = 0;
      }
   before = t_now;
   }


}
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

lmeireles43

bubulindo agora funcionou, ta ficando muito legal, muito obrigado....

Só tem um problema o lcd fica os 10 primeiros segundos em branco....
ainda não coloquei esse script no meu, criei um a parte exatamente com as coisas que tu me passou, então notei que vai ter um conflito

Serial.begin(19200);
substitui pelo meu 9600?

aproveitando meu relógio marca 0:3 ou seja hora menor que 10 e minuto menor que 10 ele fica em uma casa decimal, fica estranho... como arrumo apara 00:03?

bubulindo

Podes imprimir alguma coisa no LCD dentro do setup para evitar isso de ficar em branco. Algo como o nome do sistema, por exemplo?

Sim, podes trocar pela baud que estás a usar. Aquilo é um exemplo e eu uso 19200 como defeito.

Para imprimir com zeros à frente, experimenta assim:

Code: [Select]

if (dt->minuto <10) lcd.print("0");
lcd.print(dt-minuto);


Isto tem a ver com a forma como o arduino faz a conversão de int para string. Assim parece-me ser a solução mais simples.
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

lmeireles43

#53
Feb 03, 2013, 07:42 pm Last Edit: Feb 03, 2013, 10:08 pm by lmeireles43 Reason: 1
como eu consigo imprimir mais de duas coisas segundo seu script?
o unico jeito que consegui foi substituindo o data = número por data ++, só que ele chega no ultimo número e trava... seguindo a mesma lógica que vc fez em cada if dando numero para o data não consigo adicionar mais que dois... aaa tive que substituir o data por datatime porque ja estava usando uma variavel com data
se colocar data = 0 no teste 3 não funciona.

if((now = millis())-before > TIMEOUT) {
      if (datatime == 2) {
      lcd.print(teste3);
      datatime++;
      }
      if (datatime == 1) {
      lcd.print(teste2);
      datatime++;
      }
      if (datatime == 0) {
      lcd.print(teste1);
      datatime++;
      }
     
   before = now;
   }


quanto a hora e minuto menor que 10 deu certinho, vlw
conseguindo agora resolver este problema em cima vou fazer o video para mostrar para vcs

lmeireles43

criei minha forma, criei a variavel seg e de 0 a 10 imprime uma coisa e no final coloquei seg++; entao de 11 a 21 imprime outra e por ai vai, quando passa eu criei um seg = 0 e recomeça tudo denovo... funcionou legal....

Go Up