Contagem de pulso de 3 sensores ao mesmo tempo, é possivel ?

Bom dia,

Gostaria de colocar o arduino para contar os pulsos enviados por 3 sensores fotoeletricos distribuidos em diferentes pontos de uma esteira transportadora.

A minha duvida é como ficaria se todos os sensores enviassem pulsos ao mesmo tempo, como ficaria a contagem. É possivel fazer a contagem deste modo?

Obrigado!

Sim é possível.Usa interrupts

Sim é possível.Usa interrupts

Gammon Forum : Electronics : Microprocessors : Interrupts

Caso os sensores sejam acionados ao mesmo tempo, um terá prioridade sobre o outro, ou não?

Primeiro temos de espremer esse "ao mesmo tempo".O Arduino não é multitask, logo todas as operações são cíclicas.
Ok vamos usar interrupts nos pinos que suportam interrupção, o que vai acontecer se os 3 pinos estiveres chantados e todos eles tiveres uma interrupçao activa?
Esta é uma questão que de momento não te sei responder mas vou testar chegando a casa.Não sei qual será o comportamento das interrupçoes já que todas seriam disparadas ao mesmo tempo ...
Isto apesar de poder acontecer (os 3 pinos ativarem a interrupcao no mesmo instante) e pouco provavel que aconteça na pratica.
Já agora esta questão é interessante para ser solucionada pelos membros do forum

o que vai acontecer se os 3 pinos estiveres chantados e todos eles tiveres uma interrupçao activa?

shuntados é a palavra correcta... vem do inglês shunt.

Essa é uma boa questão e se não me engano existem prioridades nas interrupções do AVR (ou posso estar a confundir), logo provavelmente as prioridades tomariam conta. Se o código da interrupção for curto não deve dar muita barraca, acho.

Isto apesar de poder acontecer (os 3 pinos ativarem a interrupcao no mesmo instante) e pouco provavel que aconteça na pratica.

Pode ocorrer na linha de produção onde muitos frascos passam por segundo

Quando me refiro ao mesmo instante e bem mais preciso do que um vulgar segundo.O mesmo instante na minha explicação será o relogio começar a contar e todos os pinos serem setados no instante 0,0012 segundos por exemplo.A probabilidade de todos os pinos serem setados no momento 0,0012 segundos e muito baixa.Claro que essa possiblidade inda existe e se acontecer algo ira falhar.

Concordo com o HugoPT, por mais rápida que seja uma esteira não acho que vão passar mais de 1000 objetos por segundo, não é?

Mas supondo que isso é possível de ocorrer (dois ou mais sensores enviarem pulsos ao mesmo tempo), por que não verificar da forma "simples", sem interrupt?

if ((digitalRead(PIN_1) == HIGH) && (lastStatePin_1 == LOW))
{
  count_1++;
}
if ((digitalRead(PIN_2) == HIGH) && (lastStatePin_2 == LOW))
{
  count_2++;
}
if ((digitalRead(PIN_3) == HIGH) && (lastStatePin_3 == LOW))
{
  count_3++;
}

lastStatePin_1 = digitalRead(PIN_1);
lastStatePin_2 = digitalRead(PIN_2);
lastStatePin_3 = digitalRead(PIN_3);