Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 10

Taller de Arduino para estudiantes de Invenio

Folleto de Teoría – Nivel Básico


Elaborado por: Luis León

Introducción:

En este pequeño material de apoyo, encontrarán lo más básico para iniciarse


en Arduino, como las instrucciones más básicas. Como toda tecnología e ingeniería,
la programación de Arduino es acumulativa y basada en la experiencia del estudiante
con esta plataforma de desarrollo.

Introducción a C:

El lenguaje nativo que emplea el entorno de desarrollo (Arduino IDE) que


emplea el Arduino es por defecto un híbrido de C con C++. El programador en este
lenguaje podrá adaptarse muy fácilmente para poder desarrollar en Arduino, no
obstante, hay comandos nuevos y librarías nuevas que deberán conocerse.

Casi todas las sintaxis de los códigos de ejecución culminan con un “;” de esta
manera:

digitalWrite(3, HIGH);

Por otro lado, líneas de código que emplean condiciones o etiquetas (labels)
como los void y que a su vez engloban códigos condicionados, encierran dichos
códigos entre llaves “{}”.

if(digitalRead(3)==HIGH){
digitalWrite(2, LOW);}

Quizás algunos se preguntan por qué hay códigos encerrados en paréntesis;


resulta que estos códigos son propiedades que definen un comando o una condición.
Por así decirlo, especifican las condiciones por las cuales se deben manifestar las

1
instrucciones del usuario. Algunos ejemplos son número de pin, estado del pin,
condición.

- Estructura de un programa de Arduino

Los programas de Arduino tienen una estructura lógica definida que casi
siempre hay que respetar. Por lo general se inicia con la declaración de variables a
nivel global (para todo el código), luego una etiqueta de configuración (que contiene
códigos de ejecución One-Time o de una sola vez) y culmina en la rutina que se
ejecuta por forma indefinida.

+ Apartado de Variables:

2
Las variables las utilizamos para almacenar valores que cambian a lo largo
del programa o necesitan almacenarse de forma permanente sin variaciones (como
constantes).

Hay varios tipos de variables. Algunos son:

Int (Integer): Almacena números enteros hasta el 65555.

Long: Almacena números enteros muy extensos.

Float (Decimal): Almacena números decimales.

Char: Almacena caracteres o palabras.

Para utilizar variables dentro de los códigos hay tres procesos que hay que
seguir y que son obligatorios. El primero es declarar la variable utilizando la siguiente
sintaxis:

TipodeVariable NombredeVariable= ValorInicial;

Ejemplo:

Int Lectura1 = 0;

Esta declaración se ubicará en la parte superior del código, en el espacio


señalado para variables.

Posteriormente se indica en la rutina el valor de programa o el valor que


capturará dicha variable dentro de cada repetición del ciclo. Por lo general, los
valores tienden a cambiar en las rutinas, como por ejemplo la lectura de un pin
digital de entrada, que puede cambiar en valores booleanos (unos y ceros). Para
ello empleamos la siguiente sintaxis:

NombredeVariable = ValordeEjecución;

Ejemplo:

Lectura1 = digitalRead(1);

3
La ubicación de este código puede ir en cualquier lugar, pero si se quiere que
actualice cada vez que se repita la rutina, debe ir en el Void Loop.

Por último empleamos la variable de alguna forma, siendo posible definir las
propiedades de algún comando o bien, definiendo una condición. Para utilizarla, solo
basta colocar el nombre de la variable, como se muestra a continuación:

Ejemplo 1.

digitalWrite(3, Lectura1);

Ejemplo 2.

If(Lectura1==HIGH){

digitalWrite(3, Lectura1);

+ Apartado de configuración:

En los apartados de configuración se ejecutan sólo una vez en todo el


programa que escribamos del Arduino. Por lo general acá inicializamos dispositivos
o periféricos que necesitan ser inicializados como por ejemplo el Puerto Serial, o
bien ejecutamos códigos de inicio, como por ejemplo, encender un pin al iniciar el
programa. A continuación se muestran dos ejemplos en uno:

En este ejemplo en particular, el puerto serial es iniciado a un baudrate


(velocidad de transmisión de paquetes) de 9600 bauds. Además el led que estará
conectado en la patilla 13, nos indicará que la rutina comenzará a ejecutarse.

+ Apartado de rutina:

4
Todos los códigos que se encuentran en el cuadro de la rutina, se repetirán
de forma ordenada y de forma indefinida hasta que el Arduino sea apagado. Como
consejo al momento de hacer un programa de Arduino, es importante hacer un
diagrama de bloques para que se entienda de la mejor forma y sea más rápido de
programar. Un ejemplo de diagrama de bloques se presenta a continuación:

Dentro del ejemplo ilustrado anteriormente, se encuentra un bloque de


verificación. Este bloque puede ser hecho con una condicional IF/ELSE. Este
comando de condición nos permite verificar si se cumple o no una condición
determinada y proceder a ejecutar otros bloques que se derivan de dicha condición.
Se emplea de la siguiente forma:

if(condiciónquesedebecumplir){

acciónaejecutarsisecumple;

else{

acciónsinosecumple

5
Para el ejemplo del diagrama de bloques, nuestro código implica verificar si
la patilla 2 tiene un positivo o un neutro conectado (1 o 0 respectivamente). Si se
cumple la condición (si hay un 1), entonces enciende un led en la patilla 3 y se
apaga un led en la patilla 4. Si no se cumple la condición, entonces la acción es
que se apague el led en la patilla 3 y se encienda el led en la patilla 4.

Para abastecer lo dicho anteriormente, se hará el siguiente código:

Para ir adelantando un poco de los puertos digitales, cada pin que usemos
como entrada o como salida digital debe ser configurada con el comando pinMode
y para cambiar los valores utilizamos digitalWrite en el caso de las salidas y para
leer el estado de un pin digital usamos digitalRead. Las sintaxis que se emplean para
el digitalWrite es:

digitalWrite(numerodepin, estado);

Ejemplo1:

digitalWrite(3, HIGH);

Pone la patilla 3 en estado alto o 1

6
Para el digitalRead es:

Valor = digitalRead(patilla);

Ejemplo1:

If(digitalRead(2)==HIGH){}

Como digitalRead(2) nos arroja valores, no es necesario usar una variable y


podremos someterla a la condición

Puerto Digital:

Configuración

Llamamos puertos digitales a los que trabajan con conmutaciones de unos y


ceros (por lo general el 1 equivale a 5V y el 0 equivale a 0V). Existen dos formas en
que podemos configurar un pin para que funcione como puerto digital, y en síntesis
es determinarlo como entrada o como salida.

Para configurar una patilla como puerto digital es necesario usar el comando
PinMode, que funciona con la siguiente sintaxis:

pinMode(patillaaconfigurar, modo);

En total hay dos modos en que podemos configurar, como INPUT (como
entrada) o bien como OUTPUT (como salida).

Es importante que conozcas que todos los pines que usemos como puertos
digitales deben ser configurados, si no se hace, podría ocasionar errores o bugs en
la programación del Arduino.

7
Utilización

Para utilizar un puerto digital ya configurado como salida, debemos utilizar el


comando digitalWrite (ya antes mencionado). Para ello se emplea la siguiente
sintaxis para definir el estado en el cual estará en determinado tiempo de programa:

digitalWrite(numerodepin, estado);

En total hay dos estados para el digitalWrite, los cuales son HIGH para poner
un pin en 1 y el LOW para poner un pin en 0.

Podemos usar el digitalWrite casi en cualquier parte del código según la


conveniencia, desde códigos de inicio hasta condiciones que indiquen un estado o
bien, realicen una acción concreta como activar un motor.

Por otro lado, para utilizar un puerto digital como entrada, debemos utilizar
el comando digitalRead, que nos generará un valor booleano (1 o 0). Podríamos
eventualmente cargar dichos valores en una variable INT o bien utilizarlos en una
condición. En el primer caso se usará la siguiente sintaxis:

Variable = digitalRead(pin);

Para utilizar el modo variable, podríamos ubicarlo al principio de la rutina y


comenzar a utilizar la variable en todas las condiciones que necesitemos.

Además, por sí mismo, el digitalRead generará un valor, por lo que no es


obligatorio el uso de la variable. Como se muestra a continuación:

If(digitalRead(2)==LOW){}

En este ejemplo la condición es que cuando el valor generado por el


digitalRead sea 0, entonces se ejecuten los comandos encerrados entre las llaves
del if.

8
Puerto Analógico:

Los puertos analógicos los usamos cuando debemos valores de tensión


variables (valores que cambian de voltaje de 0 a 5V). Por lo general, los Arduinos
tienen una dimensión o profundidad. En el caso particular del Arduino UNO debemos
usar escalas y los valores varían de 0 a 1023 en el caso de las entradas y de 0 a 255
en el caso de las salidas o PWM.

Si el vREF del Arduino no está conectado, se asume que el voltaje de


referencia (o 1023) será de 5000mV. Para poder convertir lo obtenido por un
comando de lectura analógica usamos el siguiente factor:

5000 𝑥
=
1023 𝑣𝑎𝑙𝑜𝑟 𝑜𝑏𝑡𝑒𝑛𝑖𝑑𝑜

Igualmente sucede con la salida con profundidad de 255:

5000 𝑥
=
255 𝑣𝑎𝑙𝑜𝑟 𝑜𝑏𝑡𝑒𝑛𝑖𝑑𝑜

Para configurar un puerto analógico como entrada, emplearemos las patillas


que están acompañadas por una letra A (Ejemplo: A0, A1…). Asimismo, no es
necesario configurar los puertos digitales en el void setup y sólo basta con almacenar
el valor en una variable, de la siguiente forma:

Variable = analogRead(patilla);

Ejemplo1:

Voltaje = analogRead(A0) * (5000/1023);

Con la razón incluida

Igualmente podríamos usar el analogRead para condiciones, utilizando


operadores cuantitativos de igual, mayor o menor (= < >). De la siguiente forma:

If(analogRead(A0)<1000){}

9
Es importante recordar que NO SE DEBE exceder de 5V en la entrada de estas
patillas. Para colocar más de 5V debemos usar un divisor de voltaje como mínimo.

Por otro lado, para emplear un puerto analógico como salida, debemos usar
las patillas digitales que tengan una ondulación (~), lo cual nos indica que son
patillas PWM (Pulse Width Modulation).

El comando para variar la tensión de corriente es analogWrite, que nos


permite enviar valores de 0 a 255 en el espacio de PWMValor, que a continuación
se muestra:

analogWrite(patilla, PWMValor);

Ejemplo:

analogWrite(3, 200);

Es importante no conectar periféricos que consuman más de 50mA en el PWM


por el riesgo de quemar dicho puerto. Para conectarlos debemos usar una interface
hecha con un transistor bipolar o bien un MOSFET (Transistor de Efecto de Cambo
de Óxido de Metal Semiconductor).

10

También podría gustarte