
Esta vez vamos a ver como interactuar con Arduino mediante pulsadores.
Arduino interpreta estas entradas digitales como 1 lógico = 5v (high) o con un 0 lógico = 0v (low).
¿Como interpreta Arduino un pulsador?
Cuando Arduino recibe un 1 quiere decir que en esa entrada están llegando +5v, si conectamos una resistencia a +5v en serie con un pulsador a masa e intercalamos Arduino, siempre estará en un estado alto (HIGH). Al presionar el pulsador, ese voltaje pasa a masa y Arduino recibe un 0 (LOW). A esto le llamamos una resistencia Pull Up (figura 1 de la foto)
De estas dos maneras podemos indicarle al microcontrolador un cambio en la programación, como por ejemplo apagar y encender un Led con un solo pulsador o utilizar varios pulsador, con uno apagamos y con el otro encendemos. También se pueden conectar varios pulsadores en matriz y hacer un teclado.
Para poder usar un pulsador como entrada tenemos que declararlo como entrada en el void setup de la siguiente manera:
pinMode(pin, INPUT);
También se pueden se puede usar INPUT_PULLUP, esta manera de usar los pulsadores utiliza las resistencias internas del microcontrolador, con lo que no haría falta una resistencia externa. Llamamos a INPUT_PULLUP de la siguiente manera:
pinMode(pin, INPUT_PULLUP);

En este primer ejemplo sobre pulsadores vamos a encender y apagar un LED con un solo pulsador:
int pul1 = 2; //Cargamos un 2 en la variable "pul1" int led = 9; //Cargamos un 9 en la variable "LED" int e = 1; //Cargamos un 1 en la variable "e" int estado = 0; //Cargamos un 0 en la variable "estado" void setup() { //Inicia la configuración pinMode(led, OUTPUT); //El pin 9 es un pin de salida pinMode(pul1, INPUT); //El pin 2 es un pin de entrada //pinMode(pul1, INPUT_PULLUP); //El pin 2 es un pin de entrada con resistencia interna activada } void loop(){ //Inicia el Programa estado = digitalRead(pul1); //Lee el estado del pulsador if (estado == HIGH){ //Si el pusador es activado... if (e==1) { //Si la variable "e" es igual a 1 entonces... digitalWrite(led, HIGH); //Enciende el led en el pin 9 e=0; //Pasa la variabe "e" a 0 delay (500); //Pausa de 500ms } else { //Si "e" no es 1 entonce... if (e==0){ //Si la variable "e" es igual a 0 entonces... digitalWrite(led, LOW); //Apaga el LED en el pin 9 e=1; //Cargamos la variable "e" con un 1 delay (500); //Hace una pausa de 500ms } } } }
En este ejemplo vamos haremos que encienda y apague el LED con pulsadores independientes:
int led = 9;//Led int pul1 = 2; // Primer pulsador int pul2 = 3; // Segundo pulsador int p1; int p2; void setup() { pinMode(led, OUTPUT); //El pin 9 es un pin de saida pinMode(pul1, INPUT); //El pin 2 es un pin de entrada pinMode(pul2, INPUT); //El pin 3 es un pin de entrada //pinMode(pul1, INPUT_PULLUP); //El pin 2 es un pin de entrada con resistencia interna activada //pinMode(pul2, INPUT_PULLUP); //El pin 3 es un pin de entrada con resistencia interna activada } void loop(){ //Comienza el programa p1=digitalRead(pul1); //Comprueba si el pulsador 1 esta activo p2=digitalRead(pul2); //Comprueba si el pulsador 2 esta activo if (p1 == HIGH) { // Si el pulsador 1 esta activo entonces... digitalWrite(led, HIGH); //Enciende el led situado en el pin 9 } else if (p2 == HIGH) { //Si el pulsador 2 esta activo... digitalWrite(led, LOW); //Apaga el LED situado en el pin 9 } }
En este tercer y ultimo ejemplo haremos que un LED apague y encienda pero además controlaremos la intensidad con la que lucirá mediante la modulación por ancho de lpulso PWM por sus siglas en ingles. Explicare más adelante como funciona el PWM con más detalle.
int led = 9; //Cargamos un 9 en la variable "led" int pul1 = 2; //Cargamos un 2 en la variable "pul1" int pul2 = 3; //Cargamos un 3 en la variable "pul2" int valor = 0;//Cargamos un 0 en la valriable "valor" int p1; //Creamos una variable llamada p1 int p2; //Creamos una variable llamada p2 void setup() { pinMode(led, OUTPUT); //El pin 9 es un pin de salida pinMode(pul1, INPUT); //El pin 2 es un pin de entrada //pinMode(pul1, INPUT_PULLUP); //El pin 2 es un pin de entrada con resistencias internas pinMode(pul2, INPUT); //El pin 3 es un pin de entrada //pinMode(pul2, INPUT_PULLUP); //El pin 3 es un pin de entrada con resistencias internas } void loop(){ valor = constrain(valor, 0, 255); //Aseguramos que los valores estaran dentro de estos valores analogWrite(led, valor); //Función PWM p1=digitalRead(pul1); //Lee el pulsador 1 p2=digitalRead(pul2); //Lee el pulsador 2 if (p1 == HIGH) { valor++; } //Si el pulsador 1 esta activo, incrementa la variable "valor" else if (p2 == HIGH) { valor--; } //Si el pulsador 2 esta activo, decrece la variable "valor" delay(50); //Hace una pausa de 50 ms }
hola , cUANDO DICE PULSADOR ACTIVO EN BAJO SE REFERIRIA A PULL DOWN ???
ResponderEliminar