0% encontró este documento útil (0 votos)
14 vistas12 páginas

Clase 9 Programacion Basica Arduino Uno 12OCT23

Cargado por

royalecasjm
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
14 vistas12 páginas

Clase 9 Programacion Basica Arduino Uno 12OCT23

Cargado por

royalecasjm
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 12

IJSF. Electrónica Industrial. Año 2023.

Principios de programación
CLASE 9 PROGRAMACION BASICA DE ARDUINO UNO
 Presentación de Arduino Uno.
 Entorno de programación: UnoArduSim
 Programando Arduino.
 Funciones de Arduino.
 Primeros pasos para escribir un sketch.
 Las instrucciones de control.
 Tipos de Arduino.
Presentación de Arduino Uno

OJO!!
Shield WiFi

Driver PaP Display color

Entorno de simulación: UnoArduSim

Interface de
programación

Elementos
disponibles
para la
simulación

1
IJSF. Electrónica Industrial. Año 2023.

Programando en Arduino
Un programa de Arduino se denomina sketch o proyecto y tiene la extensión .ino

Para que un sketch funcione, deberá estar guardado en una carpeta que tenga el
mismo nombre que el sketch.

La estructura básica de un sketch de


Arduino es bastante simple y se compone
de al menos dos partes.

Las dos partes son obligatorios y encierran


bloques que contienen declaraciones,
estamentos o instrucciones.
Setup()

La función setup() es llamada al iniciar el


sketch. Se utiliza para iniciar variables,
modos de pin, comenzar a usar bibliotecas,
etc.

Es así como setup() solo se ejecutará una vez, después de cada encendido o
reinicio de la placa Arduino. Entonces tenemos que setup() es la encargada de
recoger la configuración.
Loop()

La función bucle (loop) siguiente contiene el código que se ejecutará


continuamente (lectura de entradas, activación de salidas, etc). Esta función es el
núcleo de todos los programas de Arduino y se usa para el control activo de la
placa.

La función loop() es la que contiene el programa que se ejecutará cíclicamente


(de ahí el término loop o bucle).

Ambas funciones son necesarias para que el programa o sketch trabaje.

Prácticas complementarias 1 y 2
Recordemos
la estructura Copie y ejecute en ArduUnoSim los sketchs mostrados en las imágenes:
básica

Compare los resultados. Qué cambios detectó? Cambie los tiempos de encendido.

Utilizamos: pinMode (establecimos como funciona el pin), digitalWrite (indicamos el estado del pin), int
(definimos el nombre del pin), delay (pusimos un tiempo de espera en milisegundos).

2
IJSF. Electrónica Industrial. Año 2023.

Funciones de Arduino
Existe un elemento de los lenguajes de programación, independientemente de cual sea, que mantiene
una relación directa con las Estructuras de Control, los Diagramas de Flujo y el lenguaje de programación:
se trata de las Funciones.

Las Funciones son un conjunto de instrucciones que permiten realizar determinadas acciones
integradas en el sketch de Arduino. A cada función se le asigna un nombre único, y esto permite que el
programa principal la “llame”, es decir que la utilice, en cualquier momento y cuantas veces sea
necesario.

Las Funciones pueden recibir parámetros y operar con ellos. Inclusive pueden entregar un resultado.
Inclusive, estas pueden ser creadas por el programador. Por ejemplo,
para realizar una tarea repetitiva dentro de un sketch no es necesario
reescribir varias veces una porción dedicada a dicha tarea, sino que
simplemente la escribimos una única vez y luego la llamamos toda vez
que es necesario.

Conviene llamar a las Funciones del siguiente modo:

suma_dígitos()
Las Variables se utilizan para almacenar un valor temporalmente, y
dichos valores pueden ir cambiando durante el transcurso del programa.

Siempre debemos declarar una Variable antes de utilizarla, tal como se


muestra en el siguiente ejemplo:

int variableSuma = 0;
variableSuma = 10+8;

De este modo hemos definido a “variableSuma”, la declaramos en la


primera línea, y le asignamos un valor inicial =0. Finalmente operamos
matemáticamente, y a partir de ese momento el valor 18 reemplazó al 0.
Al declarar una Variables para que contenga los diferentes datos que se
pueden presentar, debemos indicar el tipo de dato que almacenará esta
dicha variable:

 int: Todo número entero entre 32767 y -32768


 boolean: solo almacena True o False
 char: puede contener caracteres (letras)
 byte: Valor sin decimales entre 0 y 255
 float: son números con decimales, entre 3.4028235E + 38 y
3.4028235E + 38

Analicemos la sintaxis utilizada en la


programación con algunas de las
Funciones más comunes:

3
IJSF. Electrónica Industrial. Año 2023.

Veamos los tipos de comparaciones


que se admiten en la función IF:

Realice la práctica complementaria 3

Primeros pasos para escribir un sketch


El primer paso para
programar un sketch en
Arduino es abrir uno de
los entornos de trabajo
conocidos (las imágenes
corresponden al editor de
UnoArduSIm), donde
escribiremos lo siguiente:

4
IJSF. Electrónica Industrial. Año 2023.

Recordemos que tenemos un sector para configurar el Arduino, y otro para repetir las instrucciones. La
doble // permite escribir notas, muy útiles para recordar que operación o sentido tiene cada línea del
código. Todo lo que se escriba dentro de las llaves { }, será ejecutado en el orden en que aparece
escrito.

Para el sketch que se muestra más abajo será primero el bucle 1, luego el bucle 2, etc., hasta llegar a la
llave final. Luego Arduino vuelve ejecutar bucle 1, etc. La cantidad de repeticiones dependerá del
programa, en tanto que los tiempos de repetición son prácticamente instantáneos y dependen de la
velocidad del micro.

En la parte superior del sketch, antes de void setup () y void loop () y de ser necesario, se pueden definir
las variables, que son nombres donde se pueden guardar datos.

En el siguiente ejemplo, ya realizado, le habíamos otorgado un valor (13) a una nueva variable (llamada
led1), y la asociamos al pin del mismo valor (pin digital 13). Arduino comandará un led que está
conectado al pin 13.
Ahora con Arduino operaremos el led en forma intermitente (hasta que se apague la placa).

Para tal fin debemos escribir dentro de las {} de void setup(), y nuestro pin 13 será configurado como
salida mediante el comando:

pinMode(pin o variable, configuración del pin);

En Arduino un pin digital puede ser una salida o una entrada (OUTPUT o INPUT). En el siguiente paso, le
señalamos a Arduino que ponga un valor HIGH (uno digital o 5V) en el pin 13, donde está el led.
Entonces hacemos uso del comando:

digitalWrite (pin o variable, valor);

Donde pin será nuestra variable led1 y valor será HIGH. De este modo el led se enciende y mantiene el
estado:

5
IJSF. Electrónica Industrial. Año 2023.

Para lograr que led sea intermitente debemos incluir un texto que lo apague
(LOW), y también un retardo de tiempo para que se pueda apreciar el cambio de
estado del led:
delay(tiempo en ms);

El orden de ejecución se puede ver en el sketch “led parpadeante” de la izquierda:

El sketch planteado de esta forma funciona perfectamente.

Sin embargo cabe destacar que en este caso no era estrictamente necesario
declarar una variable para identificar el pin.

Ejercicio1: escriba y simule un sketch con dos led (uno verde y otro rojo).
Cuando enciende el verde el rojo está apagado. Delay 1 segundo.

Ejercicio2: escriba y simule un sketch con 5 led que enciendan


secuencialmente y vuelvan hacia atrás. Debemos modificar sketchs anteriores.

Las instrucciones de Control.

Las instrucciones de control permiten programar al Arduino para que pueda


tomar decisiones frente a un problema.

Las instrucciones de control permiten controlar el flujo de datos obtenidos con


sensores o generados por el mismo Arduino, para luego decidir cómo accionar
los motores, contactores o actuadores del sistema.

Las instrucciones más comunes son: if, else, for, while, do, while.

FOR

El uso de for nos permitirá repetir un número determinado de veces una o


varias sentencias encerradas entre {}. Se puede usar como contador de una
variable o como bucle de retardo para ejecutar una serie de instrucciones.

for (declara la variable e inicializa; condición; incremento) {


Instrucción del bucle;
}

6
IJSF. Electrónica Industrial. Año 2023.

Práctica Complementaria 4 a y b: diferencias?

Práctica Complementaria 5

Habilitamos la
comunicación serie, el
valor 9600 indica la
velocidad de comunicación

Acción

Ejercicio3: reescriba el sketch del ejercicio2, usando la instrucción for para


ordenar la configuración de salida (pinMode/setup) y secuencia de encendido
(digitalWrite/loop).

WHILE

La instrucción while ejecuta las sentencias por tiempo indefinido, hasta que se
cumpla la condición que está dentro de sus (). Se usa para la lectura de sensores,
por ejemplo.

IF

La instrucción if es la clásica condición cuyas opciones son “verdadero” o


“falso”. Permite controlar la ruta que debe seguir un programa. Para hacer esto
evaluará un dato contenido en una variable y decidirá si la condición se cumple
o no.

Veamos como queda expresado:

7
IJSF. Electrónica Industrial. Año 2023.

Práctica Complementaria 6:

En este caso se toma lectura de un valor variable (dado por un potenciómetro


conectado al pin analógico A0), y se muestran los valores mediante el puerto serie.

Superada cierta marca se exhibe el mensaje “valor superado”. Se usa if.

El puerto serie permite ver


texto en una pantalla (con
doble click se agranda)

Usamos un potenciómetro
lineal conectado al pin A0
(simulando un sensor que
mide una magnitud física
variable en el tiempo).

Analicemos el caso anterior: declaramos una constante int, denominada


pinanalógico (A0), que es el pin donde conectamos el potenciómetro de control.

El ejemplo anterior, en la
práctica se vería así +
En void setup() inicializamos en puerto serie, mediante:

Serial.begin(9600); //donde 9600 es un valor medio

En void loop() lo primero que corresponde hacer el leer el pin analógico, y


almacenamos la medición resultante en una variable llamada “valor”:

int valor = analogRead(pinanalogico);

Mostramos “valor” en el monitor serie. Agregamos ln para que los datos sean
mostrados uno debajo del otro:

Serial.println(valor);

Lo que sigue es la operación lógica mediante la instrucción de control if. Para


“valor>300” mostrará el mensaje “Valor superado”.

Finalmente usamos delay() para apreciar correctamente los datos mostrados.

8
IJSF. Electrónica Industrial. Año 2023.

Ejercicio4: A partir de la práctica complementaria 6, escriba un sketch en el cual el potenciómetro


encienda un led rojo cuando se desplaza de la mitad hacia arriba, o un led verde cuando está por
debajo de la mitad. Utilice la función if.

Uso de operadores booleanos


Si quisiéramos un sketch similar, pero con los valores de operación acotados entre
200 y 300, debemos utilizar if pero incorporando los operadores booleanos:

Los booleanos permiten combinar diferentes condiciones dentro de la


instrucción IF.

Para el caso propuesto, donde establecemos un rango de operación que está


entre 200 y 300, es posible aplicar OR:

La línea de código correspondiente a la condición nos queda así:

Al cambiar el rango de operación por el que se muestra más abajo, podemos usar
AND:

IF ELSE

Supongamos que tenemos más de una condición,


por ejemplo: si la temperatura es mayor a 25°C un
servomotor se deberá mover 135°, pero si la
temperatura es menor a 25°C entonces el servo se
mueve 45°. En este caso existen dos caminos.
Vamos primero por el largo:

Usando ELSE el código nos queda más corto, ya que nos ahorramos en
segundo IF:

Práctica Complementaria 7: Modifique el sketch del Ejercicio 4 utilizando el operador if-else.

9
IJSF. Electrónica Industrial. Año 2023.

Ejercicio 5:

En la imagen se muestra un sensor de movimiento y un led conectados


a una placa Arduino Uno.
Realice un skecth que ejecute las siguientes operaciones:

a) El led parpadea permanentemente.


b) Al detectar un movimiento, el led queda fijo.
c) Al desaparecer el movimiento, el led vuelve a parpadear.

Notas:
Para simular el detector de movimiento usamos un pulsador. Con
movimiento habrá una señal HIGH, caso contrario LOW.

Ejercicio 6: Ejecute el siguiente sketch, Explique la función de cada línea de código


usando comentarios (//).

La Función analogWrite()

Esta función permite “simular” una señal analógica (variable en el


tiempo), a partir de una señal digital basada en 0 y 1. Para lograr esto
se envían pulsos de 0 y 5V respectivamente con diferentes anchos, en
lo que se conoce como señal PWM (señal de ancho de pulso
modulado). Solo funciona en los pines “PWM” (3, 5, 6, 9, 10, 11).

La imagen muestra la relación entre el ancho del pulso y la intensidad


lumínica del led.

Copie el sketch y analice su funcionamiento. Se trata de un control de


motor de CC mediante un puerto PWM (variación de ancho de pulso).
“A medida que aumenta el ancho del pulso mostrado en la imagen de
arriba, aumenta, por ejemplo, el brillo de un led o la velocidad de un
motor de CC conectado a uno de los pines digitales PWM de Arduino”.

Se puede controlar la velocidad de un motor de CC de mayor potencia,


vía pin digital, mediante el uso de un “shield” o interface de potencia,
capaz de manejar la corriente de un motor (un puerto Arduino está
limitado a 40 mA).

10
IJSF. Electrónica Industrial. Año 2023.

En Arduino los pines digitales tienen valores de salida que van de 0 a


255 (equivalentes a 0 y 5V respectivamente). Los saltos son
discretos, no continuos, aunque esto es suficiente para generar el
efecto buscado.

La función analogWrite(pin, intensidad) es utilizada para graduar la


salida de los pines digitales. En el ejemplo se ve al motor y
potenciómetro de control conectados a la placa Arduino.

Mediante analogRead se pueden leer datos de los pines analógicos, los cuales
tienen saltos que van de 0 a 1023. Suficiente para darle sensibilidad a la lectura de
un sensor (en este caso un potenciómetro).

Práctica Complementaria 8: Control de un motor de CC mediante un potenciómetro, que usa la función


“map”.
Un adelanto de la función “map”. Rango del elemento
de control
Referencia
para el X = map(control,0,1023,0,255);
elemento Rango del
controlado elemento
Elemento de control controlado

Realice un sketch para el bucle de control (100) según:


a)
 LT-100 mide y transmite el nivel del líquido (lleno = 1, vacío = 0).
 LT transmite el nivel a LC-100 (Arduino), como una señal eléctrica.
 LC decide qué hacer según el valor preset.
 LC comanda LV a través de una señal neumática (0 - 1).
b)
 En este caso el sensor de nivel es variable (potenciómetro), igual que la
válvula LV-100 (led en PIN PWM). Use la función map.
 LV deberá abrir al máximo cuando el flotante marca lleno. Luego cierra
gradualmente. Esto es para evitar el “golpe de ariete” en la cañería.

11
IJSF. Electrónica Industrial. Año 2023.

NOTA:

En el sitio de Arduino podremos encontrar detalles de las Variables, Funciones y Estructura necesarias
para ayudarnos a darle forma a un sketch.
https://www.arduino.cc/reference/en/

Tipos de Arduino

Hay diferentes placas de Arduino.

Cada una cuenta con el mismo microcontrolador, esto significa que funcionan con el mismo programa,
pero tienen diferente cantidad de entradas/salidas.

Controlino

Arduino Ind

12

También podría gustarte