preciso fazer um codigo que conte o tempo entre o sensor acionar pela primeira e entre a segunda depois faz o calculo entre a distancia e o tempo para determinar a velocidade 

const int buttonPin = 5;
int a = 0;
int buttonState = 0;

int b = 0;
void setup() {
Serial.begin ( 9600 );
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
digitalWrite(buttonPin, HIGH);
Serial.begin(9600);
}

void loop(){
buttonState = digitalRead(buttonPin);
if (buttonState == LOW) {
for(int j = 0; b=1;j++){
delay(100);
a++;
Serial.println(a);
Serial.println(" ");
if(buttonState < HIGH){
int c = a*b;

b =1;
Serial.println(c);
}
}

}


}

Exibições: 427

Responder esta

Respostas a este tópico

Olá Leonardo,

Vou ser sincero com você em dizer que não entendi muito bem o tipo de sensor que se espera receber essa resposta digital. Mas umas dicas: Tente usar um bool em vez de um int para comparar com high ou low na leitura digital; Reveja sua ligação eletrônica dos sensores e do botão; Evite o uso do delay para contar o tempo, afinal ele para toda a execução durante o tempo determinado entre parêntesis, de uma olhada na função milis() do arduino e no emprego dessa em "blink without delay" nos exemplos do arduino; Já existe uma função que conta o tempo de uma porta entrar em high ou low, é a pulseIn(). Se puder esclarecer seu projeto poderei ajuda-lo melhor.

Boa sorte

estou tentando utilizar dois sensores reed Switch e ler o tempo que demorar entre acionar pela primeira vez e entre a segunda ex: o sensor e ativado, ate o segundo sensor ser ativado conta esse tempo 

Entendi. Mas esses sensores estão em uma única porta do arduino?

sim, mas se quiser pode por em duas

bem usando duas portas eu tenho mais ou menos uma ideia. Usando button1 e button2 pros sensores, tempo1 e tempo2 pra registrar o tempo de cada um, o loop seria:

void loop(){

while(true){

  if(digitalRead(button1))

    tempo1 = milis(); //a função milis é da biblioteca padrão do arduino e retorna o tempo desde o                              //inicio do programa em milisegundos

  if(digitalRead(button2)){   //sensor que será acionado depois

    tempo2 = milis();

    break;

    }

}

int diferenca = tempo2 - tempo1;

int velocidade = distancia/diferenca; //distancia será previamente definida

Serial.print(diferenca);

Serial.print(" /t");

Serial.print(velocidade);

Serial.println("cm/ms");

}

Provavelmente terá algum erro, mas a lógica é por aí, e testando que saberá...

Boa sorte

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço