Introducción a Arduino y Programación
Introducción a Arduino y Programación
1. PRESENTACIÓN ARDUINO........................................................................................................................... 2
2. LA PLACA ARDUINO UNOO ............................................................................................................................ 3
2.1. Los diferentes elementos
2.2. Las principales características ...................................................................................................... 3
2.3. La alimentación................................................................................................................................ 4
2.4. Las entradas-salidas ........................................................................................................................... 4
2.5. Los recuerdos................................................................................................................................. 5
2.6. El reloj........................................................................................................................................ 5
2.7. La comunicación
2.8. El restablecimiento.......................................................................................................................................... 5
2.9. La protección de sobreintensidad USB................................................................................................... 5
3. LA PROGRAMACIÓN DE LA TARJETA ARDUINO ........................................................................................... 6
3.1. La interfaz de programación........................................................................................................ 6
3.2. La estructura de un programa......................................................................................................... 7
3.3. La sintaxis del lenguaje ARDUINO..................................................................................................... 8
3.4. Los comentarios .......................................................................................................................... 8
3.5. Los datos, variables y constantes .............................................................................................. 8
3.6. Los operadores ............................................................................................................................... 9
3.7. Las bibliotecas de funciones ..................................................................................................... 10
3.8. Las etapas de desarrollo de un programa............................................................................ 17
4. LOS EJERCICIOS
P á g e 1 | 22
CPES
ARDUINO
1. Presentación ARDUINO
ARDUINO es una plataforma de hardware y software para el desarrollo de aplicaciones embebidas.
El software de programación de los módulos ARDUINO es una aplicación Java, libre y multiplataforma, que sirve
de editor de código y compilador, y que puede transferir el programa a través de la conexión USB. El lenguaje de
La programación utilizada es una mezcla de C y C++, restringida y adaptada a las posibilidades de la tarjeta.
➢ Material poco costoso: Las tarjetas ARDUINO son relativamente económicas en comparación con las demás.
plataformas de desarrollo. La versión más barata del módulo ARDUINO puede ser ensamblada en la
principal, e incluso las placas ARDUINO preensambladas cuestan menos de 25 €.
➢ Material: Los esquemas de los módulos se publican bajo una licencia Creative Commons, y es posible de
realizar nuestras propias versiones de las tarjetas ARDUINO, complementándolas y mejorándolas.
➢ Software gratuito: El software ARDUINO y el lenguaje ARDUINO están disponibles para ser complementados por
programadores experimentados. El lenguaje también se puede ampliar con la ayuda de bibliotecas C++.
➢ Software multiplataforma: El software ARDUINO, escrito en Java, funciona en los sistemas operativos
Windows, Macintosh y Linux.
➢ Módulos « Shield »: Tarjetas adicionales que se conectan al módulo ARDUINO para aumentar la
posibilidades: pantalla gráfica en color, interfaz Ethernet, GPS, etc.…
P á g i n a 2 | 22
CPES
ARDUINO
Entradas analógicas 6
Corriente máxima por pines E/S 40 mA (200 mA acumulados para el conjunto de los pines)
Memoria del programa Flash 32 Ko, de los cuales 0,5 Ko son utilizados por el bootloader
ARDUINO
La alimentación
La placa ARDUINO UNO puede ser alimentada por el cable USB, por un bloque de alimentación externo conectado a través de una
prise « jack » de 2,1mm o bien por un bloque de pilas cuyo conexionado se realiza a través de los « GND »
« Vin » del conector de alimentación. La alimentación exterior debe tener un voltaje comprendido entre 7 y 12V.
Las entradas-salidas
La placa « ARDUINO UNO » dispone de 14 E/S digitales y de 6 entradas analógicas.
Funcionan con lógica TTL (0V-5V); cada una puede proporcionar (fuente) o recibir una corriente máxima de
40 mA y dispone si es necesario de una resistencia interna de 'pull-up'.
Ciertas pines pueden tener varias funciones diferentes seleccionadas por programación descritas a continuación:
ARDUINO
Las entradas A4 y A5 también se pueden utilizar respectivamente como la línea de datos SDA y la línea
del reloj SCL de la interfaz serie I2C.
Las memorias
El microcontrolador ATmega 328 dispone de 32k de memoria Flash que permite almacenar el programa en
ejecutar.
También contiene 2 ko de memoria RAM (SRAM). Esta memoria se utiliza generalmente para almacenar los
resultados temporales durante cálculos. Puede ser leída y escrita en cualquier momento por el microcontrolador, pero su contenido
est perdido tan pronto como no se alimenta más.
El ATmega 328 también tiene 1k de memoria EEPROM para permitir que el programa almacene datos.
persistentes. El contenido de esta memoria es accesible gracias a las funciones de la biblioteca « EEPROM ».
El reloj
El reloj está controlado por cuarzo y funciona a una frecuencia de 16 MHz.
La comunicación
La placa « ARDUINO UNO » tiene numerosas posibilidades de comunicación con el exterior. El Atmega328
posee una interfaz de comunicación serie accesible, gracias a los pines digitales 0 (Rx) y 1 (Tx).
Por otro lado, soporta el bus I2C accesible, gracias a los pines analógicos 4 (SDA) y 5 (SCL) y la conexión serie.
SPI síncrono gracias a las patas digitales 10 (SS), 11 (MOSI), 12 (MISO) y 13 (SCX).
El reinicio
A la puesta en marcha, un reinicio automático permite al programa contenido en la memoria del microcontrolador de
iniciar automáticamente tan pronto como la placa ARDUINO esté alimentada.
La placa « Arduino UNO » también está equipada con un botón pulsador de reinicio manual. Una pulsación en este
permite reiniciar la ejecución de un programa si es necesario, ya sea porque se ha "colgado" o simplemente
porque se desea que vuelva a empezar desde su inicio.
ARDUINO
La interfaz de programación
La interfaz de programación del software ARDUINO es la siguiente:
La « Barra de Botones » que da acceso directo a las funciones esenciales del software. Los diferentes botones
son :
P á g e 6 | 22
CPES
ARDUINO
La estructura de un programa
Un programa destinado a una tarjeta ARDUINO se compone de 3 partes:
void setup()
{
pinMode(ledPin, OUTPUT); // Define la pin n°13 como una salida
}
bucle vacío()
{
digitalWrite(ledPin,ALTO) ; Coloca la salida ledPin en NL1 (diodo encendido)
retraso(3000) ; // Esperar 3 s
digitalWrite(ledPin,BAJO) ; // Pone la salida ledPin a NL0 (diodo apagado)
retraso(1000) ; Esperar 1 s
}
Funciónconfiguración() Funciónbucle()
que contiene las instrucciones de inicialización que contiene las instrucciones del programa
La primera parte permite definir las constantes y las variables declarando su tipo. También permite
la inclusión de las bibliotecas utilizadas en el programa mediante #include.
La función setup() contiene las instrucciones de inicialización o de configuración de los recursos de la placa como
por ejemplo, la configuración de entrada o salida de los pines de E/S digitales, la definición de la velocidad de
comunicaciones de la interfaz serie, etc.. Esta función se ejecuta sólo una vez justo después del lanzamiento del
programa.
La función loop() contiene las instrucciones del programa en sí. Esta función se repetirá
indefinidamente mientras la tarjeta ARDUINO esté bajo tensión.
P á g e 7 | 22
CPES
ARDUINO
Los comentarios
Para colocar comentarios en una sola línea o al final de la línea, hay que utilizar la siguiente sintaxis:
// Esta línea es un comentario en UNA SOLA línea
Nombre Descripción
booleano Dato lógico (verdadero o falso) sobre 8 bits
byte Entero sin signo de 8 bits
int Entero firmado de 16 bits
sin signo entero Entero sin signo de 16 bits
largo Entero firmado de 32 bits
sin signo largo Entero sin signo de 32 bits
flotar Número de punto flotante de 32 bits
personaje Carácter de 8 bits. Solo se definen los caracteres cuyo código ASCII tiene un valor de 0 a 127.
Nombre Descripción
verdadero Dato binario igual a 1 o dato numérico diferente de 0
falso Dato binario o numérico igual a 0
ALTO Generación de un nivel de tensión alto en una de las salidas digitales
BAJO Generación de un nivel de tensión bajo en una de las salidas digitales
ENTRADA Configuración de un pin digital como entrada
SALIDA Configuración de un pin digital como salida
P á g e 8 | 22
CPES
ARDUINO
Los operadores
3.6.1. Los operadores aritméticos
Símbolo Descripción Ejemplo
+ Adición c=a+b;
- Sustracción c=a-b;
* Multiplicación c=a*b;
/ División c=a/b;
% Módulo (resto de la división entera) c=a%b;
ARDUINO
El IDE de ARDUINO incluye por defecto varias bibliotecas externas. Para importarlas en tu programa,
debe utilizar el siguiente menú:
Ejemplo :
Algunas funciones ya están presentes en el IDE de ARDUINO, las principales se explican a continuación.
Esta función genera una pausa cuya duración es igual a tempo × 1 ms.
La variable tempo debe ser del tipo unsigned long, lo que puede permitir temporizaciones que pueden ser muy
largas.
retraso(1000) ; // Pausa de 1 s
La función « delayMicroseconds »
retardoMicrosegundos(tempo) ;
Esta función genera una pausa cuya duración es igual a tempo × 1 μs.
P á g e 10 | 22
CPES
ARDUINO
La función «millis() »
Valor =milisegundos() ;
Esta función devuelve el número de milisegundos desde el arranque del programa por la tarjeta ARDUINO.
La función «micros() »
Valormicros() ;
Esta función devuelve el número de microsegundos desde el inicio del programa por la placa ARDUINO.
Esta función tiene una resolución de 4µs (con un reloj de 16MHz), por lo tanto, el valor devuelto es un
múltiplo de 4.
El número de milisegundos vuelve a cero aproximadamente después de 70 minutos.
Esta función permite configurar la dirección de funcionamiento, entrada o salida, del pin seleccionado.
La función « digitalWrite »
digitalWrite(Número de broche, Nivel lógico) ;
Esta función permite imponer un nivel lógico alto o bajo en la salida numérica seleccionada.
La función « digitalRead »
Valor =leerDigital(Número de broche)
Esta función permite leer el nivel lógico en la entrada numérica seleccionada. Esta función no retorna
que dos valores ALTO o BAJO.
P á g e 11 | 22
CPES
ARDUINO
Se trata de señales lógicas rectangulares de frecuencia igual a 490 Hz y con ciclo de trabajo programable.
La función « analogWrite »
analogWrite(Número de salida, Informe cíclico) ;
Esta función permite generar, en la salida seleccionada, una señal PWM con el ciclo de trabajo deseado.
La variable « Rapport cyclique » debe ser de tipo int, es decir, que puede estar comprendida entre 0 y 255 para un
rapport cíclico, para la señal generada, comprendido entre 0 y 100 %.
La señal PWM se genera a partir del momento de la ejecución de la función « analogWrite » y hasta que una
nueva instrucción « analogWrite » o una instrucción « digitalRead » o « digitalWrite » se ejecute en la misma
broche
La función « analogReference »
referenciaAnalógica(Tipo)
➢ DEFAUT: La tensión de referencia es igual a la tensión de alimentación de la placa Arduino (5V para la placa
Arduino Uno
➢ INTERNAL: La tensión de referencia es igual a 1,1 V para la tarjeta Arduino Uno;
➢ EXTERNO: La tensión de referencia es igual a la tensión aplicada en la entrada externa AREF de la placa
Arduino.
La tensión aplicada a una entrada analógica nunca debe ser superior a la tensión de alimentación
de la carta.
P á g e 12 | 22
CPES
ARDUINO
La función « analogRead »
Valor =leerAnalógico(Número de entrada) ;
Esta función permite leer el resultado de la conversión analógica a digital de la tensión presente en
la entrada analógica seleccionada.
El dato devuelto debe estar entre 0 y 1023 y debe ser de tipo int.
Esta función permite generar, en la salida seleccionada, una señal cuadrada (ciclo de trabajo del 50%) de
frecuencia programable y durante la duración deseada.
La dato "Frecuencia" debe ser dada en Hz y la dato "Duración" debe ser fijada en ms. Si esta duración no es
No especificado, la señal se genera hasta que se ejecute la función « notone ».
La función « notone »
notone(Número de salida) ;
La función « pulseIn »
duraciónpulseIn(Número de entrada, Tipo, Plazo máximo) ;
Esta función permite medir la duración de un impulso en la entrada seleccionada. El resultado devuelto es de
tipo sin signo largo.
El valor de la dato « Tipo » puede ser ALTO en el caso de un impulso en NL1 o BAJO en un impulso en
NL0.
La variable « Delai max » permite definir el tiempo de espera de la impulsión. Cuando este tiempo se supera y
que ninguna impulsión se ha producido, la función devuelve un valor nulo. Este dato es del tipo unsigned.
long etest expresado en μs. Si esta dato no está especificado, el valor por defecto será de 1 s.
El resultado proporcionado se considera correcto solo para impulsos de duración comprendida entre 10 μs y
3 min.
Página 13 | 22
CPES
ARDUINO
Esta función permite extraer los 8 bits de peso bajo de la variable 'Donnée'.
El valor devuelto es de tipo byte mientras que la variable "Donnée" puede ser de cualquier tipo (por lo tanto
cualquier tamaño).
La función « highByte »
resultatbyteAlto(Dato) ;
Esta función permite extraer el segundo byte desde la derecha de la variable « Dato ».
El valor devuelto es de tipo byte mientras que la variable "Donnée" puede ser de cualquier tipo.
La función « bitRead »
resultatbitLeer(Dato, n)
La función « bitWrite »
bitWriteDatos
Esta función permite imponer un nivel lógico sobre el enésimo bit de la variable "Datos".
La función « bitSet »
conjuntoDeBitsDato
La función « bitClear »
bitClearDatos
P á g i n a 14 | 22
CPES
ARDUINO
El puerto serie asíncrono de los microcontroladores que equipan las placas ARDUINO dispone de un búfer.
capaz de memorizar hasta 128 caracteres recibidos.
La función « [Link] »
[Link](Velocidad) ;
Esta función que debe ser llamada al menos una vez, generalmente en la función setup(), permite definir
la velocidad utilizada por la conexión serie.
El valor tomado por la variable "Velocidad" debe ser una de las velocidades definidas por la norma RS232.
La función « [Link] »
[Link]() ;
Esta función permite desactivar la conexión serie asíncrona y, por lo tanto, liberar los pines digitales 0 y 1.
La función « [Link] »
[Link]() ;
Esta función permite conocer el número de caracteres recibidos y por lo tanto contenidos en el búfer de memoria en
atención de lectura por el programa. La variable « número » es de tipo int.
La función « [Link] »
[Link]() ;
Esta función permite leer el primer carácter disponible en el búfer de recepción. La variable
"carácter" es de tipo int. El valor devuelto es -1 si no se ha recibido ningún carácter (memoria intermedia vacía).
La función « [Link] »
[Link]() ;
La función « [Link] »
[Link](Dato) ;
Esta función permite emitir uno o varios datos a través de la conexión serie en forma binaria bruta. Si la
La donnée es de tipo cadena de caracteres, los caracteres se transmiten, en formato ASCII, uno tras otro.
P á g i n a 15 | 22
CPES
ARDUINO
La función « [Link] »
[Link]
Esta función permite emitir uno o más datos a través de la conexión serie especificando la codificación utilizada.
Si la variable « Format » no se especifica, un dato numérico se considerará como decimal, una cadena
de caracteres se transmitirá tal cual y un dato de punto flotante se transmitirá únicamente con dos
décimales.
De lo contrario, la variable « Formato » permite especificar la codificación o la base de numeración para los datos numéricos.
Puede tomar uno de los siguientes valores: BIN (binario), OCT (octal), HEX (hexadecimal), DEC (decimal) o BYTE
(codificación ASCII). Para los datos de punto flotante, la variable « Formato » puede tomar un valor numérico
comprende entre 0 y 7 correspondiendo al número de decimales a transmitir.
P á g e 16 | 22
CPES
ARDUINO
Editar el programa a partir de ARDUINO Verificar y compilar el código usando el botón 'Verificar'.
ARDUINO
[Link]
4.1 EJERCICIO N°1: HACER PARPADEAR UN LED
Este programa debe permitir que un LED conectado al pin digital n°10 parpadee. Debe permanecer
encendida durante 2 s y apagada durante 1 s.
void configurar()
{
pinMode(ledPin, SALIDA); // Define el pin n°10 como una salida
}
bucle vacío()
{
digitalWrite(ledPin,ALTO); // Pone la salida ledPin en NL1 (diodo encendido)
retrasar(3000); // Esperar 3 s
digitalWrite(ledPin,Bajo) ; // Establece la salida ledPin en NL0 (diodo apagado)
retraso(1000); // Esperar 1 s
}
Funciónconfigurar() Funciónbucle()
que contiene las instrucciones de inicialización que contiene las instrucciones del programa
Compila el programa.
Ahora vamos a simular este programa bajo PROTEUS, que es un software de CAO electrónico que permite ...
dibujar y simular diversos montajes.
P á g e 18 | 22
CPES
ARDUINO
Una vez que el esquema esté terminado, vas a transferir el archivo .hex proveniente de la compilación de la
carta ARDUINO. Atención, debe primero poner los retrasos en segundos, porque por ahora, ellos
son enms
Ahora con el funcionamiento en real. Para ello, necesitas una tarjeta Arduino, una BREADBORD,
un LED, un cable de televersement PC-CARTE y unos cables de conexiones
Reestablecer los retrasos en ms. Luego compilar el programa. Subir a la tarjeta ARDUINO.
De ahora en adelante para los siguientes ejercicios, seguirán este procedimiento. Simulación en PROTEUS, luego
cableado de la tarjeta ARDUINO una vez que la simulación esté validada
P á g i n a 19 | 22
CPES
ARDUINO
Realizar el cableado con una tarjeta ARDUINO, un LED y un BP. Luego, cargar en la tarjeta.
ARDUINO suprograma, luego probar el funcionamiento
Realizar el cableado utilizando una tarjeta ARDUINO, un motor de corriente continua, una resistencia
d'environ 500Ω et une de 10 kΩ, une diode de roue libre 1N4001, un transistor 2N2222A et un
BP. Arrastra el programa en la tarjeta ARDUINO, luego prueba el funcionamiento
P á g e 20 | 22
CPES
ARDUINO
Realizar el cableado utilizando una placa ARDUINO, un motor de corriente continua, una resistencia de
10 kΩ, un puente en H (L293D) y un BP. Puedes cargarlo en la placa ARDUINO tu programa,
puedes probar el funcionamiento
Realizar el cableado utilizando una tarjeta ARDUINO, una resistencia de 10 kΩ y un LDR. Luego
Cargue su programa en la tarjeta ARDUINO y luego pruebe su funcionamiento
P á g e 21 | 22
CPES
ARDUINO
[Link] DE PAN
La Breadboard no es una tabla de pan como su nombre indica, sino una 'placa
à essai"ouplaquette de prototypage rapide pour l'électronique. Il n'y apas besoin de
soldar los componentes en la placa de pruebas, ya que está diseñado para probar rápidamente
circuitos electrónicos.
Así, la plaqueta está compuesta por una multitud de agujeros de los cuales algunos están conectados
eléctricamente entre ellos. Existen diferentes formatos y diferentes tamaños de Breadboard.
SIMULACIÓN DE TABLERO DE PROTOTIPADO
SERVICIO A ENCENDER UN LED
Aquí hay uno de los formatos de Breadboard más utilizados:
Estas placas de prueba son realmente fáciles de usar. En una protoboard estándar, las dos líneas de arriba y del
Las bases están conectadas eléctricamente. Del mismo modo, cada columna en el centro está compuesta por puntos conectados eléctricamente.
La creación de un circuito electrónico se facilita en gran medida. Solo hace falta insertar algunos componentes en los
agujeros y usar algunos cables eléctricos. Un muy gran número de componentes electrónicos pueden ser enchufados
directamente y simplemente en una Breadboard. Y aquí están los cables que se pueden usar para conectar los componentes entre
las columnas :
El primer tipo de hilo es práctico para visualizar bien el resultado final del circuito electrónico. El segundo tipo de
Es más fácil de manejar, pero nos perdemos rápidamente cuando aumenta el número de hilos utilizados. Además, los hilos
los cables tienden a desviarse por los lados y a veces proporcionan malas conexiones cuando los conectores de la
La placa de prueba ha sido utilizada varias veces. Por lo tanto, recomendamos utilizar hilos rígidos y siempre tener una
pinza plana pequeña para quitarlas más fácilmente.
P á g i n a 22 | 22