Pulsador arduino

Iniciado por @synthesize, 28 Junio 2010, 02:10 AM

0 Miembros y 1 Visitante están viendo este tema.

@synthesize

Tengo un pulsador (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?

@synthesize

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;
}

GroK

¿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
"I put on my Hendrix album and my son said 'Dad, who's that?' and i said 'Well son, that's God' "- Robert Plant


@synthesize

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

GroK

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
"I put on my Hendrix album and my son said 'Dad, who's that?' and i said 'Well son, that's God' "- Robert Plant


Banti


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?

Debci

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