Esta vez vamos a ver como interactuar con Arduino mediante pulsadores.
Arduino interpreta estas entradas digitales TTL 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 una señal de +5v, si conectamos una resistencia a +5v en serie con un pulsador conectado a GND e intercalamos el pin correspondiente de Arduino, siempre estará en un estado alto HIGH. Al presionar el pulsador, ese voltaje pasa a GND 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
También podemos utilizar varios pulsador, con uno apagamos y con el otro encendemos o 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:
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); // Pin 9 es salida
pinMode(pul1, INPUT); // Pin 2 es entrada
// pinMode(pul1, INPUT_PULLUP); // Pin 2 es 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); // Pin 9 es salida
pinMode(pul1, INPUT); // Pin 2 es entrada
pinMode(pul2, INPUT); // Pin 3 es entrada
// pinMode(pul1, INPUT_PULLUP); // El pin 2 entrada con resistencia interna activada
// pinMode(pul2, INPUT_PULLUP); // El pin 3 entrada con resistencia interna activada
}
void loop(){ // Comienza el programa
p1=digitalRead(pul1); // Comprueba pulsador 1
p2=digitalRead(pul2); // Comprueba pulsador 2
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 pulso o PWM por sus siglas en ingles.
Más adelante explicaremos 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 salida
pinMode(pul1, INPUT); // El pin 2 es entrada
pinMode(pul2, INPUT); // El pin 3 es entrada
// pinMode(pul1, INPUT_PULLUP); // El pin 2 es entrada con resistencias internas
// pinMode(pul2, INPUT_PULLUP); // El pin 3 es entrada con resistencias internas
}
void loop(){
valor = constrain(valor, 0, 255); // constrain asegura valores están entre 0 y 255
analogWrite(led, valor); // Función PWM
p1=digitalRead(pul1); // Lee el pulsador 1
p2=digitalRead(pul2); // Lee el pulsador 2
if (p1 == HIGH) {
valor++; // Con pulsador 1 activo, incrementa la variable "valor"
}else if (p2 == HIGH) {
valor--; // Con pulsador 2 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