Pages: [1]   Go Down
Author Topic: pulsador como interruptor  (Read 2290 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buenas!
Estoy intentando hacer de un pulsador un interruptor, pero no hay forma...Creo que no es complicado pero no lo consigo.
Lo que quiero es primera pulsación encendido y la siguiente apagado. En un futuro lo quiero usar para el encendido/apagado de un circuito, ahora estoy practicando con un led.

Me puede dar alguna idea alguien??
Gracias de antemano.
Logged

Offline Offline
God Member
*****
Karma: 7
Posts: 635
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Primero tienes que hacer en el pulsador una detección por flanco, aquí está explicado http://arduino.cc/forum/index.php/topic,96810.0.html
Una vez detectado el flanco la acción a ejecutar es conmutar el valor de una variable entre 0 y 1. Ya no tienes más que activar o desactivar la salida según el valor de esa variable.
Logged


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

Cheyenne muchas gracias por tu ayuda. El enlace es perfecto. Ahora mismo lo voy a intentar.

Un saludo.
Logged

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

Lo acabo de probar, a primera vista me había parecido que funcionaba de otra manera, es que esto no es lo que necesito.
El ejemplo del enlace lo que hace es mantener el led encendido un tiempo (prefijado por el usuario) cada vez que pulso el botón.
Lo que yo quiero es que cuando yo pulse la primera vez (ON), el led se mantenga encendido hasta que vuelva a pulsar(OFF), que se apagará. Así sucesivamente.
Logged

Alicante
Offline Offline
Full Member
***
Karma: 0
Posts: 156
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mamumo,

Necesitas una variable que es la que controlas con el interruptor, y lo que hace el led lo decides sobre el valor de esa variable.

Cuando acciones el pulsador compruebas el valor de la variable y le asignas el contrario, de tal forma que la variable va cogiendo los siguientes valores ON --> OFF --> ON --> OFF --> ON --> OFF --> etc...

Despues tienes que comprovar la variable y decidir si enciendes el led (ON) o si lo apagas (OFF)



Logged

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

Gracias por la contestación.
voy bien encaminada? he probado este programa. Pero una vez que pulso el led se queda encendido.Tengo que conseguir que se apague....

const int pulsador = 2;     // the number of the pushbutton pin
const int led =  13;      // the number of the LED pin


// variables will change:
long EstadoActual = 0;
long EstadoAnterior = 0;
boolean pulsadorON=false;

void setup() {
  pinMode(led, OUTPUT);   
  pinMode(pulsador, INPUT); 
 Serial.begin(9600);
 
}

void loop(){
 
 EstadoActual = digitalRead(pulsador);
 
  if (EstadoActual == 1 & EstadoAnterior == 0){
    pulsadorON=true;
  }
  EstadoAnterior = EstadoActual;
 
   if (EstadoActual == 0 & EstadoAnterior == 1){
     pulsadorON=false;     
  }
  EstadoAnterior = EstadoActual;
 
  if(pulsadorON==true){
  digitalWrite(led,HIGH);
  }
  if(pulsadorON==false){
   digitalWrite(led,LOW);
  }
 
}
Logged

Alicante
Offline Offline
Full Member
***
Karma: 0
Posts: 156
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Esto que te pongo no es Codigo para que copies y pegues, es simplemente para que te guies y puedas aprender el funcionamiento...


Code:

boolean Valor_pulsador = 0;  // OFF

void loop(){
  
  if (digitalRead(pulsador)){          // Cuando el pulsador está activo...
    Valor_pulsador = !Valor_pulsador;  // Asigna el valor contrario (ON --> OFF --> ON --> OFF...)
  }

  if(Valor_pulsador){        // si Valor_pulsador es Verdadero --> 1 --> ON
  digitalWrite(led,HIGH);    // Enciende el Led
  }
  else {                    // De lo contrario
   digitalWrite(led,LOW);   // Apaga el Led
  }
  
}


Intenta entenderlo linea por línea...

Este es un codigo muy sencillo, se puede mejorar mucho...
« Last Edit: November 28, 2012, 07:49:51 am by Imagina » Logged

Pages: [1]   Go Up
Jump to: