Olá pessoal,
Preciso identificar o sentido de direção usando dois sensores que serão acionados quando algo passar por eles. Conforme o sentido, devo acionar um rele e acender uma luz na extremidade deste sentido.
Acredito que devo pegar o tempo 1 e tempo 2 de cada acionamento, e se o tempo 1 for menor que o 2, esta indo em um sentido, caso tempo 2 seja menor que tempo 1, esta indo no outro sentido.
Como usar o millis() junto com o acionamento da gpio 1 e 2?
Agradeço qualquer ajuda/dica.
Tags:
Olá!
Como você não deu muitos detalhes do sensor, nem postou o código como anexo, vão algumas dicas:
1) Declare duas variáveis tempo1 e tempo2 para computar o tempo em millis em que passou por cada sensor:
unsigned long tempo1;
unsigned long tempo2;
unsigned long sentido;
2) Na leitura positiva do sensor1:
tempo1 = millis();
3) Na leitura positiva do sensor2:
tempo2 = millis();
4) Para obter o sentido:
sentido = tempo1 - tempo2;
5) Exibir o sentido:
if (sentido < 0) {
Serial.print("Sentido tal");
}
else {
Serial.print("Sentido qual");
}
Obs: Para saber se as 2 leituras foram feitas, use uma variável flag para contar as leituras. Assim você só calcula o sentido quando os dois tempos foram lidos. Logo após zere a variável flag.
Obrigado, Vou compilar e testar.
O sensor é IR reletivo com contato seco, então devo definir IO input1=D3, input2 =D4 e usar o D5 para acionar o rele 1 ou rele 2 conforme o sentido.
Uma informação importante, use a interrupção externa do microcontrolador.
Isso é uma operação em hardware, ela poderá ser executada a qualquer momento, desde que esteja ativada.
Você se refere a IO?
Sugestão do Flávio :
Uma interrupção para cada um dos dois sensores :
https://playground.arduino.cc/Code/Interrupts
https://www.arduino.cc/reference/en/language/functions/interrupts/i...
http://arduino-info.wikispaces.com/Timers-Arduino
INT0 e INT1, são controladas pelos pinos D02 D03 do Arduino, respectivamente.
Se vc está se referindo a esses discos furados com 2 sensores, o uso tradicional é:
Um deles vc chama de passo e o outro de direção.
Quando acontece uma borda de descina no passo vc le o de direção. Ele vai indicar a direção. A montagem mecanica deve ser tal que a fase entre um e outro permite isso.
Para evitar um classico erro de leitura quando o disco vibra sobre o limiar de ativação do sensor de passo é preciso aguardar um ciclo completo (transição de passo e depois transição de dir para só assim aceitar uma transição de passo novamente.).
Piorei ?
Mas normalmente esses sensores são assim...
2 interrupções:
1) Passo se houve flag de direção, na direção apontada pelo pino dir; reseta flag de dir;
2) seta flag de dir.
A montagem eletronica era: um flip flop com o set no passo e o reset no dir. A saida disso incrementava ou decrementava um contador conforme o pino dir.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2023 Criado por Marcelo Rodrigues.
Ativado por