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);
}
}
}
Tags:
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
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por