Está en la página 1de 11

Tipos de Arduino

Arduino UNO:
Arduino de gama básica, todas las shields están diseñadas para usarse sobre esta placa.
Cuenta 14 pines entrada/salida digitales de las cuales 6 se pueden usar como PWM,
además cuenta con 6 entradas analógicas, además cuenta con I2C, SPI, además de un
modulo UART.

Arduino DUE:
Arduino basado en un microcontrolador de 32 Bits, Tiene 54 entradas/salidas digitales y
12 entradas analógicas, 2 buses TWI, SPI y 4 UARTs. Funcionan todos los módulos
basados en 3.3V, no soporta 5V ya que puede dañar la placa. Posee adicionalmente
interno dos puerto USB para poder controlar periféricos.

Arduino Leonardo:
Arduino básico, Con características similaresa la arduino, sin embargo tiene 12 entradas
analógicas y 20 entrada salidas digitales. A diferencias del resto de arduinos con el
microcontrolador ATmega32u4 en que no posee un controlador adicional para controlar el
USB. Además tiene más pines de interrupciones externas. Tiene comunicación TWI, SPI y
dos UART.
Arduino Mega 2560:
Arduino basado en un microcontrolador ATmega2560. Tiene 54 entradas/salidas digitales,
16 de ellos pueden usarse como PWM, 16 entradas analógicas y 4 UART además dos
modos PWI y uno SPI. Tiene 6 interrupciones externas. Y es compatible con todos los
shields de arduino.

Arduino Mega ADK:


Exactamente igual que el Mega 2560 pero con la diferencia de que en este caso se tiene
la posibilidad de USB Host, poco utíl en este proyecto.

Arduino Micro:
Es completamente similar al Leonardo, la única diferencia es el tamaño con el que fue
construido. Es compatible con las Shields de arduino, sin embargo se debe instalar de
forma externa, es decir, cableándolo, aunque en el caso de que se construya nuestra
propia shield no es ningún problema.
Arduino Nano:
Arduino basado en un microcontrolador ATmega328. Es similar en cuanto a
características al arduino uno. Las diferencias son tanto el tamaño como la
forma de conectarlo al ordenador para programarlo. Es compatible con la
mayoría de shield, aunque de la misma forma que el arduino Micro.

Arduino YUN:
El Arduino YUN se trata de un conjunto que trabaja por separado de forma
complementaria, por un lado se tiene la versatilidad de un arduino normal. En
este caso un ATmega 32u48 a 16 Mhz, y por otro lado de un dispositivo con
microprocesador Atheros AR9331. El cual funciona con Lilino (Linux basado en
OperWrt (OperWrt-Yun)) a 400 Mhz. Las características del arduino son
similares a la placa Leonardo. Tiene Ethernet, slot SD y WiFi incluidos,
controlados por Lilino.. Es compatible con todas las Shields y es capaz de
trabajar por separado.

Arduino FIO:
Arduino basado en un microcontrolador ATmega328p. Trabaja a 8 Mhz y 3.3V
tiene 14 pines de entrada/salida digitales (6 PWM), 8 pines de entrada
analógicas e integra tanto un conector para la batería y su correspondiente
modulo de carga, como un slot para poder instalar un modulo de
comunicaciones xBee.
Tiene UART TTL e interrupciones lo que nos permite también ponerlo en modo
Sleep, permite también poner el XBEE en modo Sleep, reduciendo el consumo
total. Además posee tanto TWI (I2C) como SPI. Unas ventajas importantes de
este dispositivo son el bajo consumo en Sleep y el poder programarlo mediante
XBEE, sin necesidad conectarlo físicamente al ordenador.
Estructura básica de un programa en Arduino

La estructura básica de programación de Arduino es bastante simple y divide la


ejecución en dos partes: setup y loop. Setup() constituye la preparación del
programa y loop() es la ejecución. En la función Setup() se incluye la
declaración de variables y se trata de la primera función que se ejecuta en el
programa. Esta función se ejecuta una única vez y es empleada para configurar
el pinMode (p. ej. si un determinado pin digital es de entrada o salida) e
inicializar la comunicación serie. La función loop() incluye el código a ser
ejecutado continuamente (leyendo las entradas de la placa, salidas, etc.).
void setup() {
inMode(pin, OUTPUT); // Establece 'pin' como salida
}
void loop() {
digitalWrite(pin, HIGH); // Activa 'pin'
delay(1000); // Pausa un segundo
digitalWrite(pin, LOW); // Desactiva 'pin'
delay(1000);
}
Como se observa en este bloque de código cada instrucción acaba con ; y los
comentarios se indican con //. Al igual que en C se pueden introducir bloques
de comentarios con /* ... */ (Jimenez, 2019)

Funciones
Una función es un bloque de código que tiene un nombre y un conjunto de
estamentos que son ejecutados cuando se llama a la función. Son funciones
setup() y loop() de las que ya se ha hablado. Las funciones de usuario pueden
ser escritas para realizar tareas repetitivas y para reducir el tamaño de un
programa. Las funciones se declaran asociadas a un tipo de valor "type". Este
valor será el que devolverá la función, por ejemplo 'int' se utilizará cuando la
función devuelva un dato numérico de tipo entero. Si la función no devuelve
ningún valor entonces se colocará delante la palabra "void", que significa
"función vacía".
Después de declarar el tipo de dato que devuelve la función se debe escribir el
nombre de la función y entre paréntesis se escribirán, si es necesario, los
parámetros que se deben pasar a la función para que se ejecute. La
declaración de una función incluye en primer lugar el tipo de datos que
devuelve la función (e.j. int si lo que devuelve es un valor entero). Después del
tipo de datos se especifica el nombre de la
funció<bookmark>OLE_LINK1</bookmark>int delayVal() {

int v; // crea una variable temporal 'v'


v = analogRead(pot); // lee el valor del potenciómetro
v /= 4; // convierte los valores 0-1023 a 0-255
return v; // devuelve el valor final de la variable
}
(Rivera, 2020)
Variables

Una variable debe ser declarada y opcionalmente asignada a un determinado


valor. Una variable es una manera de nombrar y almacenar un valor numérico
para su uso posterior por el programa. Como su nombre indica, las variables
son números que se pueden variar continuamente en contra de lo que ocurre
con las constantes cuyo valor nunca cambia. Una variable debe ser declarada
y, opcionalmente, asignarle un valor. El siguiente código de ejemplo declara
una variable llamada variableEntrada y luego le asigna el valor obtenido en la
entrada analógica del PIN2. En la declaración de la variable se indica el tipo de
datos que almacenará (int, float, long)
int inputVariable = 0;

Una variable puede ser declarada en el inicio del programa antes de setup(),
localmente a una determinada función e incluso dentro de un bloque como
pueda ser un bucle. El sitio en el que la variable es declarada determina el
ámbito de la misma. Una variable global es aquella que puede ser empleada en
cualquier función del programa. Estas variables deben ser declaradas al inicio
del programa (antes de la función setup()).

int v; // 'v' es visible en todo el


programa
void setup() {
// no se requiere setup
}
void loop() {
for (int i=0; i<20;) // 'i' es visible solo en el bucle
i++;
float f; // 'f' es visible únicamente en la función
loop()
}
(Castillo, 2018)
Tipos de datos

Arduino permite manejar los siguientes tipos de datos:

 Byte. - Almacena un valor numérico de 8 bits. Tienen un rango de 0-255.

 Int. - Enteros son un tipo de datos primarios que almacenan valores


numéricos de 16 bits sin decimales comprendidos en el rango 32, 767 to
-32,768.

 Long. - El formato de variable numérica de tipo extendido "long" se


refiere a números enteros (tipo 32 bits) sin decimales que se encuentran
dentro del rango -2147483648 a 2147483647. Valor entero almacenado
en 32 bits con un rango de 2,147,483,647 a -2,147,483,648.

 Float. - El formato de dato del tipo "punto flotante" "float" se aplica a los
números con decimales. Los números de punto flotante tienen una
mayor resolución que los de 32 bits con un rango comprendido
3.4028235E +38a +38-3.4028235E. Tipo coma flotante almacenado en
32 bits con un rango de 3.4028235E+38 a -3.4028235E+38.

 Arrays. - Un array es un conjunto de valores a los que se accede con un


número índice. Cualquier valor puede ser recogido haciendo uso del
nombre de la matriz y el número del índice. El primer valor de la matriz
es el que está indicado con el índice 0, es decir el primer valor del
conjunto es el de la posición 0. Un array tiene que ser declarado y
opcionalmente asignados valores a cada posición antes de ser utilizado.
Se trata de una colección de valores que pueden ser accedidos con un
número de índice (el primer valor del índice es 0).
(Aguayo, 2021)
Operadores aritméticos
Los operadores aritméticos que se resta, incluyen en el entorno de
programación son suma, multiplicación y división. Estos devuelven la suma,
diferencia, producto, o cociente (respectivamente) de dos operandos.
Empleando variables, valores constantes o componentes de un array pueden
realizarse operaciones aritméticas y se puede utilizar el operador cast para
conversión de tipos.
 y=y+z
 x = x 7; -
 i =j^ * 6;
 r =r/ 5;

La operaciones se efectúa teniendo en cuanta el tipo de datos que hemos


definido para los operandos (int, dbl, float, etc..), por lo que, por ejemplo, si
definimos 9 y 4 como enteros "int", 9/4 devuelve de resultado 2 en lugar de 2,
25 ya que el 9 y 4 se valores de tipo entero "int" (enteros) y no se reconocen
los decimales con este tipo de datos.
(Pinicaiza, 2020)
Operadores Compuestos
Las asignaciones compuestas combinan una operación aritmética con una
variable asignada. Estas son comúnmente utilizadas en los bucles tal como se
describe más adelante.
(Mendieta, 2020)

Operadores de Comparación
Las comparaciones de una variable o constante con otra se utilizan con
frecuencia en las estructuras condicionales del tipo if.. para testear si una
condición es verdadera.
(Mendoza, 2018)
Operadores Lógicos
Los operadores lógicos son usualmente una forma de comparar dos
expresiones y devolver un VERDADERO o FALSO dependiendo del operador.
Existen tres operadores lógicos, AND (&&), OR (||) y NOT (!), que a menudo se
utilizan estamentos de tipo if.
(Garcia, 2014)
Constantes

El lenguaje de programación de Arduino tiene unos valores predeterminados,


que son llamados constantes. Se utilizan para hacer los programas más fáciles
de leer. Las constantes se clasifican en grupos “Cierto” / “Falso” (True/False)
Estas son constantes booleanas que definen los niveles HIGH (alto) y LOW
(bajo) cuando estos se refieren al estado de las salidas digitales. FALSE se
asocia con 0 (cero mientras que TRUE se asocia con 1, pero TRUE también
puede ser cualquier otra cosa excepto cero. Por lo tanto, en sentido booleano, -
1, 2 y -200 son todos también se defin como TRUE.
(Valdivieso, 2016)
Funciones de tiempo y matemáticas
 Delay(ms). - Realiza una pausa en el programa la cantidad de tiempo en
milisegundos especificada en el parámetro (máximo 1000, mínimo 1).
 Millis(). - Devuelve la cantidad de milisegundos que lleva la placa
Arduino ejecutando el programa actual como un valor long unsigned.
Después de de 9 horas el contador vuelve a 0.
 Min(x,y). max(x,y). - Devuelve el mínimo y el máximo respectivamente
de entre sus parámetros.
(Calvas, 2018)
Funciones de generación aleatoria
 RandomSeed(seed). - Especifica un valor o semilla como el punto de
inicio para la función random(). Este parámetro debe ser realmente
aleatorio y para ello puede emplearse la función millis() o incluso
analogRead() para leer ruido eléctrico desde una entrada analógica.
 Random(max), random(min, max). - Esta función devuelve un valor
aleatorio entre el rango especificado.
(Caicho, 2023)
Puerto Serie
 Serial.begin(rate). - Abre un Puerto serie y especifica la velocidad de
transmisión. La velocidad típica para comunicación con el ordenador es
de 9600 aunque se pueden soportar otras velocidades.
 Serial.println(data). - Imprime datos al puerto serie seguido por un
retorno de línea automático. Este comando tiene la misma forma que
Serial.print() pero este último sin el salto de línea al final. Este comando
puede emplearse para realizar la depuración de programas. Para ello
puede mandarse mensajes de depuración y valores de variables por el
puerto serie. Posteriormente, desde el entorno de programación de
Arduino, activando el “Serial Monitor” se puede observar el contenido
del puerto serie, y, por lo tanto, los mensajes de depuración. Para
observar correctamente el contenido del puerto serie se debe tener en
cuenta que el “Serial Monitor” y el puerto serie han de estar
configurados a la misma velocidad (Para configurar la velocidad del
puerto serie se hará con el comando Serial.begin(rate)).
 Serial.read(). - Lee o captura un byte (un caracter) desde el puerto
serie. Devuelve -1 si no hay ningún carácter en el puerto serie.
 Serial.available(). - Devuelve el número de caracteres disponibles para
leer desde el puerto serie.
(Romero, 2014)
Entradas y salidas digitales y analógicas
 Función pinMode(pin, mode).- Función usada en la function setup()
para configurar un pin dado para comportarse como INPUT o OUTPUT.
Ej. pinMode(pin, OUTPUT); configura el pin número 'pin' como de salida.
Los pines de Arduino funcionan por defecto como entradas, de forma
que no necesitan declararse explícitamente como entradas empleando
pinMode().
 Función digitalRead(pin).- Lee el valor desde un pin digital específico.
Devuelve un valor HIGH o LOW. El pin puede ser especificado con una
variable o una constante (0-13). Ej. v = digitalRead(Pin).
 Funcion digitalWrite(pin, value).- Introduce un nivel alto (HIGH) o bajo
(LOW) en el pin digital especificado. De nuevo, el pin puede ser
especificado con una variable o una constante 0-13. Ej. digitalWrite(pin,
HIGH);
 Función analogRead(pin).- Lee el valor desde el pin analógico
especificado con una resolución de 10 bits. Esta función solo funciona
en los pines analógicos (0-5). El valor resultante es un entero de 0 a
1023. Los pines analógicos, a diferencia de los digitales no necesitan
declararse previamente como INPUT o OUTPUT.
 Función analogWrite(pin, value).- Escribe un valor pseudo-analógico
usando modulación por ancho de pulso (PWM) en un pin de salida
marcado como PWM. Esta función está activa para los pines 3, 5, 6, 9,
10, 11. Ej analogWrite(pin, v); // escribe 'v' en el 'pin' analógico. Puede
especificarse un valor de 0 - 255. Un valor 0 genera 0 V en el pin
especificado y 255 genera 5 V. Para valores de 0 a 255, el pin alterna
rápidamente entre 0 V y 5 V, cuanto mayor sea el valor, más a menudo
el pin se encuentra en HIGH (5 V). Por ejemplo, un valor de 64 será 0 V
tres cuartas partes del tiempo y 5 V una cuarta parte. Un valor de 128
será 0 V la mitad del tiempo y 5 V la otra mitad. Un valor de 192 será 0 V
una cuarta parte del tiempo y 5 V tres cuartas partes.
(Quiroz, 2021)

Bibliografía
Aguayo, P. (11 de Octubre de 2021). arduino.cl. Obtenido de arduino.cl:
https://arduino.cl/introduccion-a-los-tipos-de-dato-con-arduino/
Caicho, H. (2 de Octubre de 2023). arduino-spain.site. Obtenido de arduino-spain.site:
https://arduino-spain.site/funcion-random/
Calvas, H. (21 de Septiembre de 2018). dfists.ua.es. Obtenido de dfists.ua.es:
http://dfists.ua.es/~jpomares/arduino/page_11.htm
Castillo, K. (16 de Junio de 2018). wexterhome. Obtenido de wexterhome:
https://www.wexterhome.com/curso-arduino/variables-y-tipos-de-datos/
Garcia, A. (11 de Febrero de 2014). panamahitek.com. Obtenido de panamahitek.com:
https://panamahitek.com/operadores-logicos-en-arduino/
Jimenez, F. (15 de Marzo de 2019). dfists. Obtenido de dfists:
http://dfists.ua.es/~jpomares/arduino/page_01.htm
Mendieta, F. (3 de Junio de 2020). eloctavobit.com. Obtenido de eloctavobit.com:
https://eloctavobit.com/lenguaje-programacion-arduino/operadores-compuestos/
Mendoza, H. (21 de Noviembre de 2018). electrodaddy.com. Obtenido de electrodaddy.com:
https://www.electrodaddy.com/condiciones-y-comparaciones-en-arduino/
Pinicaiza, M. (3 de Junio de 2020). eloctavobit. Obtenido de eloctavobit:
https://eloctavobit.com/lenguaje-programacion-arduino/operadores-aritmeticos/
Quiroz, J. (31 de Marzo de 2021). redusers.com. Obtenido de redusers.com:
https://www.redusers.com/noticias/publicaciones/arduino-2/
Rivera, J. (10 de Septiembre de 2020). pasionelectronica. Obtenido de pasionelectronica:
https://pasionelectronica.com/funciones-en-arduino/
Romero, M. (17 de Junio de 2014). luisllamas.es. Obtenido de luisllamas.es:
https://www.luisllamas.es/arduino-puerto-serie/
Valdivieso, A. (7 de Mayo de 2016). rduinostar.com. Obtenido de rduinostar.com:
https://rduinostar.com/documentacion/programacion-arduino/constantes/

También podría gustarte