Go Down

Topic: Múltiple encendido y apagado con un solo pulsador (Read 175 times) previous topic - next topic

drunkelkid

Apr 20, 2018, 10:53 pm Last Edit: Apr 20, 2018, 11:18 pm by drunkelkid
Hola. Quería hacer varias cosas con un pulsador. no tipo flip flop. por ejemplo, si lo presiono una vez enciende un led, si lo presiono 2 veces seguidas, apaga este led. No leyendo el ultimo estado ya que, si en el caso de presionar una vez, enciende el led, y a los 5 segundos vuelvo a presionar, que envié la señal de encender igualmente a este led y no apagar a menos de que haya presionado 2 veces seguidas a lo mejor en un intervalo inferior a un segundo entre cada pulsada?. y en el caso de que ese pulsador sea pulsado 3 veces seguidas que haga otra cosa, como por ejemplo encender un segundo led. no se si fui muy claro? se podrá hacer algo así? No se como hacer eso, agradecería alguna ayuda
(arduino pro mini)

ArduMyth

No veo código ni nada hecho asi que respondo a la pregunta tal cual: Sí, se puede.

Cosas que puedes utilizar para hacerlo:

Ejemplos pulsador en Google -> Sólo hay que usar digitalRead()
Ejemplos de cómo encender/apagar leds -> Ejemplos IDE de Arduino
Ejemplos de debounce (por hardware o software) o bien el uso de interruptores para los pulsadores en google o el foro.
Ejemplo de millis() en Documentación del foro.

surbyte

Y que has hecho?

Porque solo veo un enunciado de una tarea aparentemente.
Si tiens 15 posteos, ya sabes que el foro en general no hace las tareas, sino que responde dudas.

Mi guia es que leas millis()

Sección documentación => indice de temas tutoriales => millis()

Con millis() podras monitorear los tiempos entre teclas. Mira el cambio de la tecla en el flanco y cuanta a partir de dicho instante.
Si cae dentro de tu intervalo haras esto o lo otro
Y ademas puedes llevar un contador asi sabes si es 1, 2, o n pulsaciones.

Si pasa tu ventana de tiempo entonces pones contador a 0.



drunkelkid

#3
Apr 20, 2018, 11:51 pm Last Edit: Apr 21, 2018, 12:37 am by drunkelkid
Claro! Usaré un contador de pulsaciones y que de el resultado definitivo pasado cierto tiempo si no hay cambios en la ultima pulsacion.
Gracias

agregado:
Tome el ejemplo de ButtonStateChange https://www.arduino.cc/en/Tutorial/StateChangeDetection?from=Tutorial.ButtonStateChange

Code: [Select]

const int  buttonPin = 3;  
const int ledPin = 2;      

int buttonPushCounter = 0;  
int buttonState = 0;    
int lastButtonState = 0;    

int contador = 0;

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  delay(100);
  
  buttonState = digitalRead(buttonPin);
  if (buttonState != lastButtonState)
  {
    if (buttonState == HIGH)
    {
      buttonPushCounter++;
      Serial.println("on");
      digitalWrite(ledPin, HIGH);
      Serial.print("number of button pushes: ");
      Serial.println(buttonPushCounter);
      contador = 1;
    }
    else
    {
      Serial.println("off");
      digitalWrite(ledPin, LOW);
    }
    //delay(100);
  }
  lastButtonState = buttonState;

  if (buttonPushCounter >= 1)
  {
    contador++;
    Serial.print("contador = ");
    Serial.println(contador);
  }

  if (contador >= 10)
  {
    contador = 0;
    Serial.print("Resultado Final = ");
    Serial.println(buttonPushCounter);
    buttonPushCounter = 0;
  }

}


y con el resultado final uso la comparacion y ahi hago lo que quiera! Ya me funciona!!

Saludos

Go Up