Вы находитесь на странице: 1из 51

Arduino para Principiantes

Eleazar Baeza Lara


¿Qué veremos?
1. Introducción a Arduino
2. Nociones de programación
3. IDE de Arduino
4. Estructura de control
5. Ejemplo 1: Blink (digitalWrite)
6. Ejemplo 2: Pulsador (digitalRead)
7. Ejemplo 3: Lectura potenciómetro (analogRead)
8. Ejemplo 4: Cambio brillo led (analogWrite)
9. Ejemplo 5: Servo (Libreria)
¿Que es Arduino?

Arduino UNO
Programación física

+ =
Arduino:
 Es un sistema mínimo sofisticado.

 Tiene un convertidor TTL a USB (el chip FTDI).


 Tiene un cristal oscilador de 16 MHz.
 Un switch de reset (y a la vez se puede resetear por software).
 Puede alimentarse externamente.
Ventajas:
 Bajo costo
 Tamaño optimizado
 Distribución sencilla de pines
Limitaciones:
 CORRIENTE máxima de salida
 CAPACIDAD de procesamiento

ATMEGA 328
32 KB memoria FLASH
2 KB memoria RAM
Arduino UNO
Shields
Conceptos de programación
• Concepto de Algoritmo: es un conjunto prescrito de instrucciones o
reglas bien definidas, ordenadas y finitas que permite realizar una
actividad mediante pasos sucesivos que no generen dudas a quien
deba realizar dicha actividad

• EJERCICIO: Supongamos que requerimos ordenar 3 números de


forma ascendente.
Inicial: 2 3 1 Final: 1 2 3
Diagramas de flujo

El diagrama de flujo o diagrama de


actividades es la representación
gráfica del algoritmo o proceso.
En el podemos identificar 6 símbolos
principales:
Conceptos para la programación
• Pseudocódigo: Son la serie de instrucciones generales de un procesos o
algoritmo, estas instrucciones no responden necesariamente a algún lenguaje
en particular y solo hacen inteligible el proceso previo a la programación.
• Código: Es el conjunto de instrucciones que redacta el programador, y que
responden a ciertas reglas propias de cada lenguaje de programación, puede
ser definido como el texto que es transmisible al computador por medio de un
compilador.
• Lenguaje de programación: Un lenguaje de programación es una serie de
códigos diseñado para expresar procesos que pueden ser llevados a cabo por
máquina.
• Compilador: Es el software que interpreta el código desarrollado con el fin de
transcribirlo a un lenguaje interpretable por el procesador, normalmente la
transcripción es a código hexadecimal y luego a binario.
Programando Arduino
 Arduino está basado en C y soporta todas las funciones del
estándar C y algunas de C++. A continuación se muestra un
resumen con la estructura y sintaxis del lenguaje Arduino.
 Para ello necesitaremos el compilador para programarlo.

Software Arduino – Descarga de Software:


Verificar
Cargar

Configuración inicial

Código principal
Funciones principales

 void setup ( )
 void loop ( )
Void setup( )

Esta es una de las funciones principales de


Arduino, siempre debe estar presente, y en pinMode(numero_de_pin,EntradaSalida)
ella se realizan las rutinas de configuración ejemplo: pinMode(8,INPUT);
inicial de la placa. En general la utilizamos
para definir la modalidad en la que
trabajarán los pines, ya sea como entrada o
Serial.begin(baudios)
salida (Input - Output). ejemplo: Serial.begin(9600);
digitalWrite(numero_de_pin,Alto_Bajo)
void loop( ) ejemplo: digitalWrite(6,HIGH);
Esta es la segunda función principal de analogWrite(A_numero_de_pin,0~254)
Arduino, contiene el conjunto de ejemplo: analogWrite(A5,100);
instrucciones que se repetirán infinitas
veces.
Valor=analogRead(A_numero_de_pin)
En su modalidad más básica utilizamos ejemplo: Valor_analogo=analogRead(A5);
funciones que nos permiten leer y escribir
a través de los pines digitales o análogos.
digitalWrite(numero_de_pin,Alto_Bajo)
NOTAS : ejemplo: digitalWrite(6,HIGH);
Cada línea de código termina con un;
(Punto y coma). Estado_logico=digitalRed(numero_de_pin)
El lenguaje discrimina entre Minúsculas y ejemplo: Estado=digitalRead(6);
Mayúsculas.
delay(espera_en_milisegundos)
ejemplo: delay(100);
“Blink”: Apliquemos digitalWrite

Programaremos nuestro
Arduino por primera vez ,
basados en uno de los
ejemplo disponibles en el
IDE.
“Blink”: Apliquemos digitalWrite
BLINK: Es una rutina simple
que permite encender y
apagar un led a partir de
una activación y
desactivación de un pin
Digital configurado como
Salida
“Blink”: Apliquemos digitalWrite
Haciendo clic en el
ticket, podemos
verificar si nuestro
código no posee
errores de sintaxis.
“Blink”: Apliquemos digitalWrite
Es importante recordar que
antes de cargar nuestro
código, debemos verificar
que nuestra tarjeta Arduino
esté en el puerto COM que
nos indica el IDE de
Arduino.

De otra forma nuestro


programa no se cargará.
“Blink”: Apliquemos digitalWrite
Por último procedemos
a cargar nuestro
programa, haciendo
clic en la flecha de
nuestro IDE.
Encender un LED
La presente
configuración nos
permite visualizar la
actividad planteada
en el programa Blink.
Sintaxis básica
 Delimitadores: ; (punto y coma)
{} (corchetes)

 Comentarios: // (comentario línea única)


/* */ (comentario multilínea)
Estructura de control

 Condicionales: if(){…}
if(){….}else{…..}

 Bucles: for(inicio, final, iteración){…….}


while(condicion){…….}

 Bifurcaciones return valor;


Declaración de una variable
Una variable puede ser
tipo nombreVariable;
declara y asignado su valor en
la misma línea.
Declaración de una variable
Varias variables de un mismo tipo puede ser declaradas y
asignadas en una misma línea.
Resumen: Funciones de arduino
Encender un led con un pulsador
Oprimir un pulsador y
mientras este se
mantenga accionado un
LED se enciende.

NOTA: Recuerde conectar


una resistencia en Serie
para el LED, si conectará
en pin diferente al 13.

Explicar Resistencia Pull-


UP y Pull Down -
Pulsadores
Manejo Monitor Serial
Sabemos que Arduino se programa por medio de los pines digitales TX y RX asociados
a los números 0 y 1 del puerto digital, estos pines en su conjunto son el puerto de
comunicación serial de Arduino.
El IDE de Arduino nos permite visualizar lo que se encuentra pasando en este puerto,
por medio de su monitor serial.
Y para poder utilizarlo debemos realizar la activación en el segmento de
configuración (Función void setup() ) de nuestro código.
void setup(){
Serial.begin(9600);
}
Al activar el monitor serial, podremos realizar operaciones por medio de las funciones
disponibles como son:
Serial.print(“Mensaje por puerto serial”); o Serial.read(pin); entre otras.
Manejo Monitor Serial
Ahora que sabemos como
enviar datos desde Arduino a
través del puerto Serie,
podemos pasar al siguiente
paso que es hacer que Arduino
reciba datos seriales y los
interprete. Dichos datos los
enviaremos a través del
monitor serial utilizando el
teclado de nuestra
computadora.
Manejo Monitor Serial
Al principio del código se
declara una variable tipo int
llamada input. En ella se
guardará los valores que
obtendremos a través del
puerto serie.

La función setup permanece


igual.
Manejo Monitor Serial
En la función loop es donde está la parte importante.

La línea que dice Serial.available()>0 es sumamente importante ya que


limita la ejecución del código solamente cuando haya datos disponibles
en el puerto serie. Está dentro de una estructura selectiva (if). Cuando
haya datos disponibles para leer en el puerto serie, el método
Serial.available() tendrá un número mayor a cero (>0) por lo que
cumplirá con la condición establecida en la estructura selectiva y el
programa procederá a ejecutar los comandos que estén dentro de las
llaves ({}) del if.

 Cuando entre en la estructura selectiva, a la variable input se le


asignará un valor que se lea desde el puerto serie mediante el
método Serial.read(). Siempre que necesitamos leer algo lo hacemos
mediante este método.

 Luego de asignarle a input un valor, haremos que el


microcontrolador nos devuelva por el puerto serie el mismo valor
que le enviamos desde la computadora. Para ello imprimimos el valor
de input mediante el método Serial.println(input).
Formato ASCII
 Si abrimos el monitor serial y en la ventana de comandos escribimos 1 y le damos clic en enviar. Luego enviamos 2, 3, 4
y 5. , nos aparecerá lo siguiente: 49, 50, 51 , 52 , 53

 Se preguntarán, si he tecleado el 1 y me aparece el 49, con el 2 me aparece el 50, con el 3 el 51 y así sucesivamente…
¿que está sucediendo?

 Simplemente es la forma como estamos imprimiendo los caracteres con el método Serial.println( ).

 Cuando imprimíamos el ’1′ en el ejemplo anterior, aparecía el 1 en el monitor serial. Ahora estamos imprimiendo un
valor entero a través de la variable input.

 Cuando se intenta imprimir un entero (1,2,3,4,5…), el método Serial.println( ) imprimirá dicho entero en formato
ASCII.

 El ASCII es muy utilizado en programación y telecomunicaciones. Existen tablas que permiten traducir caracteres de
ASCII a valores alfanuméricos y vice versa.

 En esta tabla se muestra los valores ASCII que representa cada carácter del alfabeto. A los números del 0 al 9 les
corresponde los valores del 48 (0) al 57 (9).

 Si se desea que los números que aparezcan en el monitor serial aparezcan tal y como lo introducimos por teclado,
podemos agregar la línea

 input=input-48;

 Esta sentencia le quitará 48 a cualquier número ASCII, lo que hará que nos aparezcan números del 0 al 9.
Leer valores desde potenciómetro
Encender led con potenciómetro.

Programa que
enciende un LED
cuando el valor de la
entrada análoga
comandada por el
potenciómetro está
en cierto valor,
cuando este valor
cambia el LED se
apaga.
Funciones
Son estructuras creada, para
administrar de mejor forma sub-
rutinas utilizadas con gran
frecuencia dentro del algoritmo.

tipo nombre_funcion (argumento)


{
//rutinas
}
Encender un LED RGB
PWM: frecuencia y DUTY CYCLE
 La técnica PWM (Pulse-Width Modulation) o modulación por anchura del pulso
permite generar ondas cuadradas con una frecuencia y ciclo de actividad
determinada:
 En Arduino UNO la frecuencia del reloj del sistema es 16Mhz
 16*10^6 ciclos (ticks) por segundo tiempo de ciclo es 1/ 16*10^6 = 62.5ns
 Es posible modificar la frecuencia para que el número de ciclos por segundo sea
1 por cada 8,16,32,64, etc. ciclos de reloj del sistema. Este valor se llama factor de
pre-escalado.
 El ciclo de actividad (o duty cycle, DC) representa la anchura del pulso: cuánto
tiempo de cada onda cuadrada hay pulso (5V) y cuándo no lo hay (0V).
DUTY CYCLE
 Ejemplos de DUTY CYCLE:

analogWrite(pin,DC): es una función de Arduino que escribe en pin (salida) un determinado DC o duty
cycle.
Está función se implementa como un PWM con una frecuencia fija (mediante un factor de pre-
escalado de 64).
Problema: aunque permite modificar el duty cycle, no es posible modificar la frecuencia, ya que el
valor de pre-escalado está fijo.
PWM (Modulación de ancho de pulso)
Servomotores
• Motor de corriente continua
• Driver de motor
• Caja reductora
PWM (pulso modulado)
 Control de servomotores (180º)
Librería servo
Librerías
 Colección de funciones, lista para utilizar.
 Rápida implementación.
 Gran diversidad en la web.
 Creadas principalmente para facilitar el uso de dispositivos
complejos.
Manejo de servo con potenciómetro
Conexión
Arduino para principiantes

Gracias por su atención

Вам также может понравиться