collapse

* Links de Robótica

* Posts Recentes

Recomendação de um opamp para um DAC r2r por jm_araujo
[Hoje às 10:48]


Feira de electricidade e eletrónica por beirao
[Hoje às 00:32]


RN42 e TP-Link MR3020 por doiga
[Ontem às 19:22]


Ajuda Projecto IR / RF por senso
[Ontem às 13:15]


Ideias para construir um quadrúpede simples por dropes
[21 de Novembro de 2017, 22:43]


Ajuda com TRIAC por senso
[17 de Novembro de 2017, 18:00]


TV LG White Screen por almamater
[15 de Novembro de 2017, 08:37]


Pergunta sobre prototipagem ( Pesquisa ) por luisjustin
[14 de Novembro de 2017, 23:22]


Medir Agua que está no Poço por Njay
[14 de Novembro de 2017, 13:28]


Amplificador audio por beirao
[12 de Novembro de 2017, 23:43]

Autor Tópico: [Ajuda] Projecto de um temporizador  (Lida 4383 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline vdr

  • Mini Robot
  • *
  • Mensagens: 78
[Ajuda] Projecto de um temporizador
« em: 10 de Fevereiro de 2010, 01:18 »
Boas noites, este é o meu primeiro post no lusorobotica ^^

Amanha chegará o meu Arduino ;D, e como projecto inicial decidi fazer um temporizador de contagem regressiva, nada muito complicado, é algo que se faz bem em linguagem C, penso que passar passar para o arduino não será muito complicado.
Pensei em utilizar dois botões de pressão para fazer o SetAlarm.
Em que quando são pressionados os dois ao mesmo tempo, inicia-se a definição do tempo. Um dos botões fica responsável pelo incremento e o outro para alterar entre os horas/minutos/segundos.
Pensei em utilizar o ecrã dum nokia 3310, não tendo assim de comprar um display.

As minha dúvidas começam pelo material necessário além do arduino, dos botões e do LCD, visto que quero utilizar o temporizador fora do arduino, por exemplo para não deixar queimar o arroz xD.

Outra questão é saber quantos clocks ocorrem num segundo, será esta o melhor método para saber que passou um segundo?

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: [Ajuda] Projecto de um temporizador
« Responder #1 em: 10 de Fevereiro de 2010, 01:56 »
Outra questão é saber quantos clocks ocorrem num segundo, será esta o melhor método para saber que passou um segundo?

Não precisas de nenhum temporizador externo. Tu podes defenir a periodicidade em que executas o código, basta adicionares um delay().

Se meteres o código todo, com um delay(1000) asseguras que o código irá correr a cada segundo.

Offline ghostbuster

  • Mini Robot
  • *
  • Mensagens: 339
Re: [Ajuda] Projecto de um temporizador
« Responder #2 em: 10 de Fevereiro de 2010, 02:50 »
procura no forum que comecei um projecto parecido, so não o acabei porque aranjei o temp de um microondas ;D

Offline vdr

  • Mini Robot
  • *
  • Mensagens: 78
Re: [Ajuda] Projecto de um temporizador
« Responder #3 em: 10 de Fevereiro de 2010, 20:47 »
Então podia ficar por exemplo assim:

Depois de ler os dados do utilizador,

Código: [Seleccione]
seg_total=SEC+MIN*60+HOR*3600;

while( seg_total > 0) {
       
       delay(1000);
       SEC++;
   
   
        if(SEC==0) {
           if(MIN==0)
                if(HOR==0){
                    return;   
                }
                else {
                    MIN=59;
                    SEC=59;
                    HOR--;
                }
            else {
                MIN--;
                SEC=59;
            }
        }
}

ghostbuster, não encontrei o tópico que referiste.
Cumprimentos.

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.402
  • Helpdesk do sitio
Re: [Ajuda] Projecto de um temporizador
« Responder #4 em: 11 de Fevereiro de 2010, 02:09 »
Outra questão é saber quantos clocks ocorrem num segundo, será esta o melhor método para saber que passou um segundo?

Não precisas de nenhum temporizador externo. Tu podes defenir a periodicidade em que executas o código, basta adicionares um delay().

Se meteres o código todo, com um delay(1000) asseguras que o código irá correr a cada segundo.

Eu conheço a função delay do avr-gcc e essa função serve para fazer um atraso de x milisegundos, ou seja, durante os x milisegundos que metes como parametro na função, o processador não fará mais nada a não ser nop's, logo se ele mete um delay e depois código a seguir não sabe quanto tempo demora o código dele a ser executado.
A maneira mais simples de fazer um relógio será usar um timer e definir um pre-scaler para obter um numero inteiro de clocks para cada segundo e a partir dai pode usar incrementação de variáveis para gerar os minutos, horas e etc. Enquanto o timer fica a fazer mais um "ciclo" dá tempo para escrever o que é preciso para o alarme, mas nunca fará nada quando chega ao valor predefinido para incrementar o valor dos minutos e/ou das horas.
Se for preciso algo realmente preciso o melhor é usar um rtc e a cada par de horas reacertar as variáveis que estão no processador para manter o relógio correcto e sem erros.
Avr fanboy

Offline vdr

  • Mini Robot
  • *
  • Mensagens: 78
Re: [Ajuda] Projecto de um temporizador
« Responder #5 em: 12 de Fevereiro de 2010, 02:40 »
Como ainda não tenho os botões para testar, deixo aqui o código que fui fazendo.
O objectivo é iniciar o setAlarm quando os dois botões são pressionados. Depois, um dos botões serve como incremento da hora/minuto/segundo enquanto que o 2º botão serve para mudar de hora/minuto/segundo.

Código: [Seleccione]
int switch1pin = 2;
int switch2pin = 3;
int switchState[2]={0};
int SW1=0;
int SW2=0;
int i;

void setup () {

  Serial.begin(9600);
  pinMode(switch1pin, INPUT);
  pinMode(switch2pin, INPUT); 

}

void loop () {
//Get Data
switchState[0]= digitalRead(switch1pin);
switchState[1]= digitalRead(switch2pin);

//se os dois botões estão pressionados...
if(switchState[0]==1 && switchState[1]==1) {
  //start setTime
  for(i=0; i<2 ; i++) {
    //enquanto o 2º botão não for pressionado 
    while(switchState[1]==0) {
      switchState[0]= digitalRead(switch1pin);
   
      if(switchState[0]==1)
          SW1++;
   
      switchState[1]= digitalRead(switch2pin);
    }
    //Chega aqui quando o 2º botão for pressionado
    crono[i]=SW1; //guardar o numero de incrementos
    SW1=0; //reset à variavel
  }
}

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.402
  • Helpdesk do sitio
Re: [Ajuda] Projecto de um temporizador
« Responder #6 em: 12 de Fevereiro de 2010, 03:06 »
Olha este link, diz precisamente como fazer um temporizador correctamente com incrementos de 1 segundo, simlpes e com código que podes copiar/tirar ideias
Avr fanboy

Offline vdr

  • Mini Robot
  • *
  • Mensagens: 78
Re: [Ajuda] Projecto de um temporizador
« Responder #7 em: 12 de Fevereiro de 2010, 03:16 »
Esqueceste-te do link  :P

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.402
  • Helpdesk do sitio
Re: [Ajuda] Projecto de um temporizador
« Responder #8 em: 12 de Fevereiro de 2010, 13:04 »
Avr fanboy