Test Foro de elhacker.net SMF 2.1

Informática => Electrónica => Mensaje iniciado por: @synthesize en 28 Junio 2010, 02:10 AM

Título: Pulsador arduino
Publicado por: @synthesize en 28 Junio 2010, 02:10 AM
Tengo un pulsador (http://www.bricogeek.com/shop/img/p/85-200-large.jpg (http://www.bricogeek.com/shop/img/p/85-200-large.jpg)) y me gustaría que cuando sea pulsado, cambie el valor de una variable dentro de mi programa. He pensado en usar interrupciones, probé con CHANGE, pero nada.

¿Alguna idea?
Título: Re: Pulsador arduino
Publicado por: @synthesize en 28 Junio 2010, 02:20 AM
CASI Solucionado

int ledPin =13;
int ip =0;
int valor;
int ip2 =3;

void setup()
{
 pinMode(ledPin, OUTPUT);
 attachInterrupt(ip, func, CHANGE);
 pinMode(ip2, OUTPUT);
}

void loop()
{
 digitalWrite(ip2, HIGH);
 if (valor ==1) {digitalWrite (ledPin, HIGH); delay (2000); digitalWrite(ledPin, LOW); valor =0; }
}
   
void func()
{
 valor =1;
}
Título: Re: Pulsador arduino
Publicado por: GroK en 28 Junio 2010, 02:29 AM
¿Por que necesitas interrupciones? Con digitalRead deberia bastar, aqui tienes un ejemplo muy bueno de la propios tutoriales oficiales de Arduino, lo usan para encender o apagar un LED segun este pulsado o no el switch, pero tu puedes cambiarlo para que setee la variable que quieras (o cualquier otra cosa que se te ocurra)

http://arduino.cc/en/Tutorial/Button

Saludos
Título: Re: Pulsador arduino
Publicado por: @synthesize en 28 Junio 2010, 02:36 AM
Cita de: GroK en 28 Junio 2010, 02:29 AM
¿Por que necesitas interrupciones? Con digitalRead deberia bastar, aqui tienes un ejemplo muy bueno de la propios tutoriales oficiales de Arduino, lo usan para encender o apagar un LED segun este pulsado o no el switch, pero tu puedes cambiarlo para que setee la variable que quieras (o cualquier otra cosa que se te ocurra)

http://arduino.cc/en/Tutorial/Button

Saludos

int ledPin =13;
int entrada =4;
int valor;
int salida =7;

void setup()
{
  pinMode(ledPin, OUTPUT);
  pinMode(entrada, INPUT);
  pinMode(salida, OUTPUT);
}

void loop()
{
  digitalWrite(salida, HIGH);
  valor =digitalRead(entrada);
  if (valor ==HIGH) { digitalWrite(ledPin, HIGH); }
  else { digitalWrite(ledPin, LOW); }
}


Led en el 13, y pulsador en el 7 y 4. Se me queda todo el rato encendido el led
Título: Re: Pulsador arduino
Publicado por: GroK en 28 Junio 2010, 02:50 AM
Uhmm hay dos cosas que no veo claras:


Con respecto al problema principal, te has asegurado de poner la resistencia pull-up/down correspondiente? Porque puede que te hayas despistado en el montaje y este el pin del switch siempre al aire, por lo que te da lecturas espurias. En el tuto viene un esquematico del montaje, fijate por si acaso.

Saludos
Título: Re: Pulsador arduino
Publicado por: Banti en 28 Junio 2010, 04:01 AM

void loop()
{
  valor =digitalRead(entrada);
digitalWrite(ledPin, valor)
}

Eso seria TODO el codigo necesario para que un led se encienda por pulsaciones.
Ahora que es la misteriosa variable salida que no tienen sentido?
Título: Re: Pulsador arduino
Publicado por: Debci en 28 Junio 2010, 21:47 PM
Tan sencillo como hacer que cuando reibas tension en un input, que este limitado por el pulsador encienda algo, un pin, un led, un sensor...

Saludos