Foro de elhacker.net

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

Código
  1. int ledPin =13;
  2. int ip =0;
  3. int valor;
  4. int ip2 =3;
  5.  
  6. void setup()
  7. {
  8.  pinMode(ledPin, OUTPUT);
  9.  attachInterrupt(ip, func, CHANGE);
  10.  pinMode(ip2, OUTPUT);
  11. }
  12.  
  13. void loop()
  14. {
  15.  digitalWrite(ip2, HIGH);
  16.  if (valor ==1) {digitalWrite (ledPin, HIGH); delay (2000); digitalWrite(ledPin, LOW); valor =0; }
  17. }
  18.  
  19. void func()
  20. {
  21.  valor =1;
  22. }


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
¿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

Código
  1. int ledPin =13;
  2. int entrada =4;
  3. int valor;
  4. int salida =7;
  5.  
  6. void setup()
  7. {
  8.  pinMode(ledPin, OUTPUT);
  9.  pinMode(entrada, INPUT);
  10.  pinMode(salida, OUTPUT);
  11. }
  12.  
  13. void loop()
  14. {
  15.  digitalWrite(salida, HIGH);
  16.  valor =digitalRead(entrada);
  17.  if (valor ==HIGH) { digitalWrite(ledPin, HIGH); }
  18.  else { digitalWrite(ledPin, LOW); }
  19. }
  20.  

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:

  • ¿A que te refieres exactamente cuando dices que tienes el pulsador en el 7 y en el 4? Con un solo pin te basta
  • ¿Para que usas la variable "salida"? Veo que la seteas a HIGH al principio pero luego no haces nada mas con ella (o quizas solo era un ejemplo :B)

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
Código:
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