Sunteți pe pagina 1din 7

#0002 E/S DIGITALES

Bienvenidos a un nuevo tutorial bsico sobre Arduino con el que podremos exprimir al mximo
nuestro STARTER KIT o LAB KIT!
Parte 1: Qu vamos a hacer?
En este tutorial de Arduino, vamos a aprender a configurar una entrada digital a la que
conectaremos un pulsador y, con lo aprendido sobre el LED en el anterior tutorial, nos
permitir controlar el encendido y apagado del diodo


Material necesario para el proyecto:
1 placa Arduino.
1 protoboard.
1 diodo LED.
1 resistencia 220.
1 resistencia 10K.
1 pulsador.




Parte 2: Diseando el Hardware
En este proyecto, deberemos interpretar en nuestro programa la lectura de una entrada digital,
y en base a su lectura, activaremos, o no, una salida digital a la que conectamos un diodo
LED, es un ejemplo sencillo, pero que nos permite aclarar un concepto muy importe sobre las
entradas digitales, las resistencias de Pull-Up o Pull-Down.
Qu son las resistencias de Pull-Up o Pull-Down?
En nuestro Arduino, las entradas digitales se interpretan de la siguiente manera:
1 (lgico) = Hight = +5v
0 (lgico) = Low = 0v
Esto quiere decir? Que si tenemos una tensin de +5v aplicada a una entrada, este nos la
interpretara como un 1 (hight) sin lugar a dudas, pero no es as al contrario, si nosotros
dejamos dejamos de aplicar esa tensin a la entrada digital, es posible que recibamos algo de
ruido del circuito y que Arduino no nos lo interprete como un 0 (low) por lo que colocamos una
resistencia entre la entrada y masa (GND) que derive estos ruidos asegurandonos una seal
limpia y sin posibles errores, a la resistencia que se conecta a masa se le llama PULL-DOWN.
De igual manera, si tuviramos la necesidad de mantener un 1 lgico en una entrada mientras
el circuito est en reposo, se le puede aplicar una resistencia entre la entrada y +5v para
asegurarnos que le llega sufiente tensin como para que sea interpretada correctamente por
nuestro Arduino, a esta ltima se le denomina PULL-UP.
Aqu podis ver como se conectara la resistencia en un circuito bsico de 0 o 1 en la entrada
8 de Arduino.

Una vez conocido esto, el resto del circuito no tiene misterio, deberemos colocar
el LEDcorrectamente polarizado con su resistencia, y el pulsador con una resistencia de PULL
DOWN de 10K a masa para cuando est en reposo, de manera que cuando pulsemos el
botn, llegue una tensin 5v a la entrada 2 de Arduino y este lo interprete como un 1 lgico, a
partir de aqu el programa har el resto para proporcionarnos la tensin de salida que activar
el diodo LED.
Las conexiones en nuestra protoboard nos quedaran de la siguiente manera:

Para observar con ms detalle las conexiones entre componentes se puede observar el
siguiente esquema elctrico:

Como se puede observar, los pulsadores electrnicos parecen llevar cuatro patillas, pero en
realidad slo son dos muy largas que salen por los laterales del pulsador para facilitar las
conexiones, de manera que si lo colocamos y el LED se enciende continuamente, es muy
posible que lo hayamos conectado mal, si tenis un polmetro, colocarlo en modo continuidad
y aseguraos de la posicin correcta.
Parte 3: Programando
Comencemos como siempre por el programa completo que posteriormente desglosaremos.
?
1
2
3
4
5
6
7
8
9
10
/*
Tutorial #0002 Arduino Academy - E/S DIGITALES

En este proyecto encenderemos un LED conectado
al pin digital 12 cuando presionemos el pulsador
asociado al pin digital 2.

Este proyecto es de dominio pblico
*/

// Variables estticas
int pinBoton = 2; // Declaramos la variable pin del Botn
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
int pinLed = 12; // Declaramos la variable pin del Led

// Variables dinmicas
int estadoBoton = 0; // Variable para estado del botn

void setup() {
// Inicializa el pin del LED como salida:
pinMode(pinLed, OUTPUT);
// Inicializa el pin del botn como entrada:
pinMode(pinBoton, INPUT);
}

void loop(){
// Lee el valor del pin del botn y lo almacena
// en la variable estadoBoton
estadoBoton = digitalRead(pinBoton);

// Chequea si el botn est pulsado:
if (estadoBoton == HIGH) {
// Si es as, enciende el LED:
digitalWrite(pinLed, HIGH);
}

else {
// Si no, lo mantiene apagado:
digitalWrite(pinLed, LOW);
}
}
Como veris algunas instrucciones ya han sido vistas en el anterior tutorial, as que nos
centraremos en aquellas que son nuevas para nosotros.
En primer lugar podemos observar que antes del setup hemos declarado unas variables
globales, y ademas las hemos organizado en estticas y dinmicas:
// Variables estticas
int pinBoton = 2; // Declaramos la variable pin del Botn
int pinLed = 12; // Declaramos la variable pin del Led

// Variables dinmicas
int estadoBoton = 0; // Variable para estado del botn
Para definir una variable imaginemos que queremos comprar una recipiente en el que vamos
a guardar algo, y depende de lo que queramos introducir, tendr que ser de una manera o de
otra, si es lquido, no puede ser de cartn, si es algo pesado no puede ser frgil Eso es una
variable, un lugar en el que almacenaremos algo para utilizar en nuestro programa, y si no las
declaramos antes de utilizar, es como si no hiciramos hueco en nuestra despensa para
guardarlas, otra caracterstica es que su inicializacin no siempre es obligatoria, pero es
recomendable, esto es como meter una pieza de cada producto que vayamos a guardar en
nuestras cajas, en este caso les hemos asignado un valor desde el principio por las
necesidades del programa.
Y como le digo si es de cristal o de cartn?
Definiendo el tipo de variable a utilizar, en este programa hemos utilizado las de tipo int pero
existen muchas ms dependiendo de nuestras necesidades que iremos descubriendo en los
siguientes programas, de momento nos quedamos con la siguiente:
Variable de tipo int: Almacena nmeros enteros con un rango de -32768 a 32767
Al principio de la explicacin, las he descrito en primer lugar como variables globales, esto es
que al estar fuera de todo ciclo, pueden ser utilizadas a lo largo de todo el programa
ahorrndonos mucho cdigo, en ejemplos posteriores veremos otros lugares donde
declararlas.
Y por ltimo, en lo que respecta a las variables, las he organizado como estticas, aquellas
que sern constantes en nuestro programa, y dinmicas, aquellas que variaremos su valor en
algn lugar del programa
Como novedad, podemos ver que en lugar de asignar un valor numrico en la instruccin
pinMode para decirle el pin sobre el que queremos trabajar, le hemos asignado una variable, y
a la hora de interpretar el programa, este utilizara lo que hayamos elegido introducir en
nuestro recipiente, en este caso el nmero entero 12 para la salida del LED y el nmero entero
2 para la entrada del pulsador.
void setup() {
// Inicializa el pin del LED como salida:
pinMode(pinLed, OUTPUT);
// Inicializa el pin del botn como entrada:
pinMode(pinBoton, INPUT);
}
Para explicar el loop, lo dividir en dos partes, en primer lugar, tenemos que cada vez que se
ejecute el ciclo loop, lo primero que va a hacer es almacenar en nuestra variable dinmica de
tipo int estadoBoton, la lectura del pin 2 de nuestro Arduino.
estadoBoton = digitalRead(pinBoton);
Y ahora llega algo nuevo, el ciclo if else, este ciclo es un condicional bsico en
programacin, lo que hace en nuestro programa es comprobar primero si nuestra variable
estadoBoton est a 1 lgico, y, a continuacin, con el resultado obtenido de esa comparacin,
elige un camino u otro, si es que s, entonces encender el LED poniendo en HIGH, si es que
no, entonces pondr en LOW nuestra salida del LED apagndolo.
// Chequea si el botn est pulsado:
if (estadoBoton == HIGH) {
// Si es as, enciende el LED:
digitalWrite(pinLed, HIGH);
}

else {
// Si no, lo mantiene apagado:
digitalWrite(pinLed, LOW);
}
Y con esto hemos concluido la explicacin del segundo tutorial de Arduino Academy, si ha
quedado algn detalle por aclarar, animaos a mandar vuestros comentarios para as ir
mejorando los proyectos

S-ar putea să vă placă și