system
July 29, 2013, 7:08pm
1
Boa tarde,
Gostaria de um codigo para contar os pulsos de um sensor fotoeletrico.
O codigo abaixo conta infinitamente mesmo ligando o pino digital 2 no terra.
Como poderia fazer essa contagem?
int pulsos;
boolean pulso;
void setup()
{
Serial.begin(9600);
Serial.println("Iniciando...");
pulso=HIGH;
pinMode(2,INPUT);
}
void loop()
{
Serial.println(pulsos);
if(digitalRead(2)==HIGH)
{
if(pulso==HIGH)
{
pulsos = pulsos + 1;
}
pulso=LOW;
}
else{
pulso=HIGH;
}
}
system
July 29, 2013, 8:06pm
2
Uma coisa que faltou é a iniciação de pulsos:
int pulsos = 0;
Não acho que isso deva resolver o problema, mas isso está estranho, esse código deveria funcionar...
Faz um Serial.println(digitalRead(2)) para ver se tem algo errado.
system
July 29, 2013, 8:47pm
3
Está aleatorio, conforme abaixo:
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
1
1
0
0
0
1
1
0
0
0
1
1
0
0
0
1
1
0
0
0
1
1
0
0
0
1
1
0
0
0
system
July 29, 2013, 8:57pm
4
Por aqui correndo esse código apesar de estranho esta a fazer o que queres.
Com o pino 2 aterrado só recebo 0.
quando o levanto e toco com a mão ele começa a contar ...
Posto isto o problema deve ser apenas no teu hardware ...
Qual a finalidade desse código?
E ja agora não cruzes posts no fórum como o AWOL te disse.
O AWOL tem uma maneira muito indirecta de indicar a solução para os problemas.
int pulsos = 0;
boolean pulso=0;
void setup()
{
Serial.begin(9600);
Serial.println("Iniciando...");
pulso=HIGH;
pinMode(2,INPUT_PULLUP); //mudei esta linha... experimenta agora...
}
void loop()
{
Serial.println(pulsos);
if(digitalRead(2)==HIGH)
{
if(pulso==HIGH)
{
pulsos = pulsos + 1;
}
pulso=LOW;
}
else{
pulso=HIGH;
}
}
Como ligaste o sensor de presença? Ele tem saída de relé ou transistor?
Já experimentaste apenas com um fio?
system
July 30, 2013, 9:41am
7
O AWOL tem uma maneira muito indirecta de indicar a solução para os problemas.
Maybe, but if you don't learn to spot problems like that yourself, you're never going to make it as any kind of programmer.
Pulse Pulse = + 1;
Huh?
AWOL:
O AWOL tem uma maneira muito indirecta de indicar a solução para os problemas.
Maybe, but if you don't learn to spot problems like that yourself, you're never going to make it as any kind of programmer.
True...
But a lot of people using Arduino want to accomplish a one-off project, not learn programming.
AWOL:
Pulse Pulse = + 1;
Huh?
Where did you see that?
It looks to me that the input is floating. But we don't really know the exact hardware that is connected. :\