Pages: [1]   Go Down
Author Topic: contar el tiempo que esta pulsado un boton  (Read 2798 times)
0 Members and 1 Guest are viewing this topic.
Orduña- Bizkaia
Offline Offline
Sr. Member
****
Karma: 0
Posts: 317
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Resuelto la anterior duda, ahora tengo un problema para poder realizar un contador para saber cuanto tiempo esta pulsado un boton y depende el tiempo hacer una cosa u otra.
estoy usando la funcion millis pero poniendo if (estadoboton1 == HIGH) entra una vez y sale, no se como lo podria hacer, alguna ayuda porfa.
« Last Edit: May 19, 2011, 05:27:37 pm by riscking » Logged

Donostia
Offline Offline
God Member
*****
Karma: 3
Posts: 743
elektronikadonbosco
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Pon todo el código y si pones algunos comentarios para que podamos entenderlo pues mejor  smiley-grin
Logged

Orduña- Bizkaia
Offline Offline
Sr. Member
****
Karma: 0
Posts: 317
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Resuelto lo anterior, ahora no se como hacer el contador de la pulsacion para ahorrarme un par de botones y segun el tiempo que este pulsado hacer una funciones u otras.
A ver si alguien me puede hechar una manilla.
Gracias de antemano.
Logged

Donostia
Offline Offline
God Member
*****
Karma: 3
Posts: 743
elektronikadonbosco
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

se me ocurre lo siguiente:

-cuando detectes que alguien pulsa el botón guarda el tiempo (millis())
-espera a que lo deje de pulsar y guarda el tiempo
-Si la diferencia es mayor que X que se ejecute la función AA
-Sino que se ejecute la función BB

Logged

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1413
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pon tu codigo, sino tenemos que escribirte el codigo desde cero y eso no ayuda.
Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Orduña- Bizkaia
Offline Offline
Sr. Member
****
Karma: 0
Posts: 317
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Dandole vueltas en el trabajo sobre papel creo q ya lo tengo solucionado, no se si sera la manera mas limpia pero creo q funciona. Seria algo asi, falta por pulir las condiciones pero ya estaria.

Code:
void loop() {
estadoboton1 = digitalRead(boton1);
if(estadoboton1 == HIGH) {
tiempo=millis();
    while(estadoboton1 == HIGH) {
tiempo2=millis();
estadoboton1 = digitalRead(boton1);

}
tiempo3=tiempo2-tiempo;

Serial.println(tiempo3);
if(tiempo3<1000 ){
 Serial.println("mola");
}
else{ Serial.println("no mola"); }
}
}
Logged

Ciudad Real
Offline Offline
God Member
*****
Karma: 1
Posts: 751
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

mírate la función pulsein()

http://arduino.cc/es/Reference/PulseIn

saludos
Logged

Orduña- Bizkaia
Offline Offline
Sr. Member
****
Karma: 0
Posts: 317
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Jaja,  reduce todo mi codigo a una linea. Cuando llegue a casa lo pruebo, almenos he sacado una manera alternativa, xdd
Logged

Donostia
Offline Offline
God Member
*****
Karma: 3
Posts: 743
elektronikadonbosco
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Menuda función, esa si que mola, hace exactamente lo que quieres.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 20
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pongo aqui un pequeño aporte, ya que este foro me ha ayudado mucho en el poco tiempo que llevo con arduino. Asique copio aqui un pequeño codigo que he hecho para sacar la media de tiempo que esta un boton pulsado.

Yo lo he usado por ejemplo para calcular un delay para un pulsador.


Code:
int pulPin=53;

float tm=0,t=0,t_suma=0; // Variables para medida de tiempo m: medio
int n_muestras=20,cont=0; // Numero de muestras (20) para sacar la media

void setup(){

  pinMode(pulPin,INPUT);
  Serial.begin(9600);
 
}

void loop(){

  t=pulseIn(pulPin,HIGH);
  if (t!=0){
    cont++;
    Serial.print("cont=");
    Serial.println(cont);

  }
  t_suma+=t;

  if (cont==n_muestras){
    tm=t_suma/n_muestras;
    Serial.print("El tiempo medio es (microsegundos):");
    Serial.println(tm);

    Serial.print("El tiempo medio es (milisegundos):");
    Serial.println(tm/1000);

    Serial.print("El tiempo medio es (segundos):");
    Serial.println(tm/1000000);
    cont=0;
    delay(4000);
  }
  delay(250); // Un pequeño Delay para evitar que se cuenten varias pulsaciones
              // como una sola.
}





saludos!
Logged

Pages: [1]   Go Up
Jump to: