Olá!

Amigos estou encontrando dificuldades em bolar um código que possa me dizer quanto tempo um led permaneceu ligado. 

É mais ou menos isso:

O led é aceso quando o interruptor fecha o circuito, apangando quando o interruptor esta aberto novamente.

O intervalo de tempo que o led permance aceso "tempo que o botão esteve pressionado" é o que desejo que o arduino me mostre.

Estará ótimo se esse tempo puder ser exibido no serial monitor mesmo...

Alguém por favor poderia auxiliar. Estou montando um sensor de pressão e este mecanismo é fundamental para o projeto, agradeço desde já.

Exibições: 281

Responder esta

Respostas a este tópico

Oi 2N, bom dia,

faça o seguinte:

Antes do setup;

Crie uma variável long  assim por exemplo  long TempPress = 0;  

Crie uma variável long  assim por exemplo  long TempSalvo = 0;   // (Valore em milissegundos)

Dentro do loop;

Após pressionado botão salve o valor de millis(), nesta variável  --->>    TempPress = millis();

Após soltar o botão subtraia o valor salvo, de millis()            ------>>>     TempSalvo  = millis() - TempPress;

TempSalvo terá o valor do tempo em que o botão ficou pressionado em milissegundos.

Rui

Olá Rui, Obrigado por ajudar!

Me baseando no que sugeriu...escrevi isso:

int led=0;
int button=1;
int long pressbutton=0;
int long openbutton=0;

void setup(){
  Serial.begin(9600);
  pinMode(led, OUTPUT);
  pinMode(button, INPUT);
}
void loop(){
  int state=digitalRead(button);
  if(state==HIGH){
    digitalWrite(led, HIGH);
    pressbutton=millis();
  }
else {
  digitalWrite(led, LOW);
  Serial.print(openbutton=millis()-pressbutton);
}
}


Você sabe se funcionaria assim? Agradeço, porque não tenho a mínima idéia.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço