Puerto digital Arduino

Ahora ya sabemos que podemos utilizar los pines 2 a 13 como puerto digital. El inconveniente es que *de momento*, tendremos que declarar los pines uno a uno. ¿Os acordáis del LED que parpadea para indicar que la placa está bien nada más llegar a casa? Pues es un programa genial para explicar la estructura general y varias instrucciones:

Cabe destacar que éste programa es de dominio público y se encuentra, junto a muchos más programas de ejemplo, en la web de Arduino y en nuestro software.

La estructura es la siguiente: declaración de variables, setup y loop. En la declaración de variables indicamos al programa que usaremos un tipo de variable con un nombre concreto durante todo el programa. En setup ponemos las cosas que sólo se ejecutarán una vez, por ejemplo la configuración de pines.

La configuración de pines es muy sencilla, sólo tienes 2 opciones:

pinMode(númerodepin,OUTPUT), para salida

pinMode(númerodepin,INPUT), para entrada

Observad que en éste programa se ha declarado “led” asignandole el numero 13 y luego hemos usado “led” como “número de pin”, así se hace más sencillo recordar qué tienes en cada pin. Recordemos que en el pin 13 no puede haber INPUT porque hay un LED que actúa como diodo unidireccional, sólo salida.

Una vez hemos configurado nuestro dispositivo pasamos a la parte del programa que se va a repetir infinitas veces si lo dejamos conectado: el loop. Sencillamente programamos aquí lo que queremos que haga. Es simple como programar en C pero con varias instrucciones. No sirve de nada ponerle a la variable 1 o 0 porque no lo entiende.

Para escribir un 1 o un 0 en un pin, tenemos que usar las instrucciones:

digitalWrite(númerodepin,HIGH) si queremos ponerlo en estado alto (1)

digitalWrite(númerodepin,LOW) si queremos ponerlo en estado bajo (0)

Para indicar al programa que se tiene que esperar un tiempo x, en milisegundos, escribimos la función delay(x).

Recordemos que al pasar a la práctica, cualquier dispositivo LED que pongamos a una salida deberá llevar una resistencia acorde a la tensión de salida y a la corriente máxima. Lo mismo haremos en una entrada, para limitar la corriente que pasa por ella y dirigirla a HIGH o LOW como convenga, sin cortocircuitar la placa.

Para comprobar el estado de una entrada utilizaremos la función:

var = digitalRead(númerodepin)

La función digitalRead devolverá un 1 o un 0 dependiendo de si el pin está en estado alto o bajo, respectivamente. Para que un pin esté en estado bajo deberá estar conectado a GND, no servirá si dejamos el cable suelto. Después haremos la acción que queramos con un if(var==1) o if(var==0) según convenga.

Ésto es lo básico y os animo a que entrenéis un poco el tema. Una buena práctica es hacer las luces del coche fantásitico. Ésto se basa en poner 8 LED que se encienden y apagan individualmente. En vez de escribir 2000 líneas de código, podéis utilizar un for o un while. Más tarde podéis implementar un botón para que se ejecute ésa acción u otra cualquiera al estar cerrado o abiero. Mucha atención de poner resistencias mínimo 220 ohms a las salidas.

Cualquier duda es bien recibida en comentarios y será resuelta o por lo menos se intentará.