Convertir un interruptor en un pulsador

Hola.

Necesito convertir un interruptor de palanca en un pulsador por medio de un Arduino, el esquema de bloques sería el siguiente.

Interruptor -----> Arduino -----> módulo receptor.

El fucionamiento es teóricamente sencillo, cada vez que el interruptor cambia de posición arduino debe enviar un pulso.

He tratado de realizarlo leyendo los flancos pero no consigo hacerlo funcionar. Este es el código que he desarrollado. Por supuesto admito toda ayuda y sugerencia.

Muchas gracias de antemano.

type or paste code here
int contador = 0;
bool dato = LOW;
bool datoAnterior = LOW;
const int ACTIVAR_RELE = 3;
const int Interruptor = 0;

void setup() {
pinMode(0,INPUT);
pinMode(Interruptor,INPUT);
pinMode(ACTIVAR_RELE,OUTPUT);
}

void loop() {
 dato = digitalRead(0);
 if (dato != datoAnterior)
 {
    digitalWrite(ACTIVAR_RELE,HIGH);      //Se manda un ALTO al Relé.
    delay(75);                            // Espera 75ms
    digitalWrite(ACTIVAR_RELE,LOW);       //Se manda un DOWN al Relé.
    contador++;
 }
 
 datoAnterior = dato;
}
type or paste code here

No nos cuentas cómo has conectado el interruptor y puede ser uno de los problemas.

Lo otro que puede darte problemas es el pin que usas para la entrada, no aclaras tampoco cuál arduino usas pero cuidado que normalmente el pin 0 está asociado a Tx y puede interferir.

No tienes nada que evite los rebotes y ese tipo de interruptor suele ser muy "ruidoso".

Habiendo definido

const int Interruptor = 0;

entonces

pinMode(0,INPUT);
pinMode(Interruptor,INPUT);

es redundante.

Y finalmente y lo más importante, si haces

dato = digitalRead( 6 );

y tu entrada es el pin 0 no el pin 6, así no vas a leer jamás el estado del interruptor. :wink:

De funcionar el código funciona, no está mal planteado, pero debes leer el pin correcto.

Saludos

Muchas gracias por la pronta respuesta.

Estoy utilizando un Attiny digispark, el interruptor lo estoy conectando en modo Pull Down.

He cambiado el pin (vaya despiste) y sucede lo siguiente:

  • Cuando el pulsador envia 5v pero si lo dejo en esa posición, cada 5 seg vuelve a activar la salida.
  • No se activa al pasar el interruptor de 5v a 0v.

Gracias por la ayuda.

El código trabaja porque lo probé y entonces caí en cuenta que estaba mal el pin, pero lo probé con un Nano, no tengo un tiny.

Lo de los 5 segundos podría tener que ver con el watchdog pero solo por tirar una idea, la verdad no tengo experiencia con los tiny.

Saludos

Ciertamente, lo he probado con un Pro-Mini y funciona, por lo que como dices es cosa del Tiny a ver doy con la tecla, muchas gracias por todo, espero que a alguien más le sirva porque creo que es un poco tontería y no he encontrado nada el respecto por ahí.

Estaba mirando el pinout y entiendo que el pin 3, que usas para el relé, lo usa el USB y si lo estás alimentando desde el puerto USB eso puede dar problemas.
¿Por qué no pruebas a cambiar el pin de salida por el 1, por ejemplo, a ver si cambia algo?

Saludos

Tenias razón, he cambiado los pines y ya funciona correctamente. Muchas gracias por tu ayuda

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.