Curso Arduino FULL
Curso Arduino FULL
INTEGRACIÓN
TECNOLÓGICA I
https://www.arduino.cc
Arduino es una familia de
circuitos de control
(microcontroladores) y un
software de fácil uso.
Es HARDWARE ABIERTO
(Están los diseños y se los
puede usar, fabricar y
modificar libremente)
https://www.arduino.cc/en/Main/Products
Copyright (c) 2020 - Diego Brengi y Gabriela Valles
¿Qué modelos hay? MEJORADOS/AVANZADOS
https://www.arduino.cc/en/Main/Products
Copyright (c) 2020 - Diego Brengi y Gabriela Valles
¿Qué modelos hay? PARA IoT
https://www.arduino.cc/en/Main/Products
Copyright (c) 2020 - Diego Brengi y Gabriela Valles
¿Qué modelos hay? PARA WEARABLES
https://www.arduino.cc/en/Main/Products
Copyright (c) 2020 - Diego Brengi y Gabriela Valles
¿Qué modelos hay? RETIRADOS
https://www.arduino.cc/en/Main/Products
Copyright (c) 2020 - Diego Brengi y Gabriela Valles
¿Qué es un SHIELD (Escudo)?
Los SHIELDS son placas de expansión
que se conectan al Arduino y le agregan
funcionalidades.
Algunos SHIELDS:
● Control de servomotores.
● Control de motores.
● Comunicación BlueTooth,
GSM, Zigbee.
● Display LCD.
● Wi-Fi.
● GPS.
● Acelerómetros
PLACAS SHIELDS
ARDUINO
MÓDULOS
ELECTRÓNICOS
SOFTWARE, IDE,
SIMULADORES
BIBLIOTECAS DE
CÓDIGO COMUNIDAD
USUARIOS
Tiene un microcontrolador
Atmega328 de AVR con 32
KB de memoria de
programa, RAM de 2KB y
EEPROM de 1 KB
Tiene un conector de
expansión para los
SHIELDS.
Copyright (c) 2020 - Diego Brengi y Gabriela Valles
Esquema de PINOUT Arduino UNO
USB
ALIMENTACIÓN
RESET
PROGRA
MACIÓN
BAJO
NIVEL
CONECTORES DE EXPANSIÓN
ALIMENTACIÓN
7 a 12 V DC
ALIMENTACIÓN
POR CONECTOR DE
Copyright (c) 2020 - Diego Brengi y Gabriela Valles EXPANSIÓN
Entorno de sofwtare (IDE)
Permite:
● Programar
● Grabar el programa
● Comunicación serie
Abrir la IDE
Seleccionar el modelo
arduino y el puerto de
comunicación
Escribir el código
Transferir/grabar el programa
● Es una herramienta de
simulación para
sistemas Arduino,
ESP32, STM32 y Rpi
Pico.
● Es web, no hay que
instalar nada en tu PC.
● No es libre pero se
puede usar
gratuitamente. Algunas
funciones avanzadas
requieren membresía
paga.
https://wokwi.com/
Copyright (c) 2020 - Diego Brengi y Gabriela Valles
Tinkercad
Si te interesa aprender
SIMULIDE, podés ver el
curso online que se dictó
en la UNLaM.
Actualmente hay
versiones más nuevas de
Simulide, pero su uso es
similar.
https://youtu.be/B6Rsham_ch4
Materiales a utilizar:
● Arduino UNO
void setup() {
pinMode( ledPin, OUTPUT);
}
void loop() {
digitalWrite( ledPin, HIGH);
delay(5000);
digitalWrite( ledPin, LOW);
delay(5000);
}
Compilar
Compilar
Abrir
*.ino
Resultado
de la
Compilación
Led Onboard
Encendido
Programa
cargado
exitosamente
https://www.digikey.com/es/resources/conv
ersion-calculators/conversion-calculator-res
istor-color-code-5-band
Copyright (c) 2020 - Diego Brengi y Gabriela Valles
Práctica Nº 2: Salidas Digitales - Encendido y Apagado de Led Externos
Diagrama de conexión:
Materiales a utilizar:
● Arduino UNO
● Protoboard
● 2 Leds
● 2 Resistencias de 220 Ω
● Cables de conexión
Diagrama de conexión:
Materiales a utilizar:
● Arduino UNO
● 2 Leds
● 2 Resistencias de 220 Ω
● Cables de conexión
void setup() {
pinMode( led1, OUTPUT);
pinMode( led2, OUTPUT);
}
void loop() {
digitalWrite( led1, HIGH);
delay(1000);
digitalWrite( led2, HIGH);
delay(1000);
digitalWrite( led1, LOW);
delay(1000);
digitalWrite( led2, LOW);
delay(1000);
}
Copyright (c) 2020 - Diego Brengi y Gabriela Valles
Práctica Nº 2: Salidas Digitales - Encendido y Apagado de Led Externos
Agregando el código en la IDE de Arduino y SimulIDE:
Abrir
*.ino
Resultado
de la
Compilación
Programa
cargado
exitosamente
Copyright (c) 2020 - Diego Brengi y Gabriela Valles
Práctica Nº 2: Salidas Digitales - Encendido y Apagado de Led Externos
Simulando el ejercicio:
1° 2°
3° 4°
Incorporamos es uso
de un condicional (IF).
● Protoboard
● 1 Led
● 1 Resistencia de 220 Ω
● 1 Resistencia de 10K Ω
● Cables de conexión
Copyright (c) 2020 - Diego Brengi y Gabriela Valles
Práctica Nº 3: Entrada digital – Encendido de Led externo mediante llave
● 1 Led
● 1 Resistencia de 220 Ω
● 1 Resistencia de 10K Ω
● Cables de conexión
if (condición) {
…;
Ejemplo: }
else {
if ( edad >= 18) { …;
mayor_de_edad = “SI”; }
}
else { Donde la condición es la expresión que será evaluada.
mayor_de_edad = “NO”; Si esta condición es verdadera, el extracto es
} ejecutado. Si esta es falsa, el extracto es ignorado (no
Copyright (c) 2020 - Diego Brengi y Gabriela Valles ejecutado) y el programa continua en la siguiente
Práctica Nº 3: Entrada digital – Encendido de Led externo mediante llave
Se declaran las variables llamadas led y
Ejemplo de código: llave donde se indica que corresponderán
a los Pines 10 y 4 correspondientemente
const int led1 = 9; de la placa Arduino
const int llave1 = 4; Se declara una variable del tipo `int`
int tension; llamada ´tension´
void setup() {
El pin 10 (led) es seteado como
pinMode(led1, OUTPUT); Salida Digital
pinMode( llave1, INPUT); El pin 4 (llave) es seteado como
Entrada Digital
}
void loop() {
tension = digitalRead( llave1);
if ( tension == HIGH ) {
digitalWrite( led1, HIGH); Condicional IF()….else…
} Se usará la estructura condicional IF para
void setup() {
pinMode(led1, OUTPUT);
pinMode( llave1, INPUT);
}
void loop() {
tension = digitalRead( llave1);
if ( tension == HIGH ) {
digitalWrite( led1, HIGH);
}
else {
digitalWrite( led1, LOW);
}
}
Copyright (c) 2020 - Diego Brengi y Gabriela Valles
Práctica Nº 3: Entrada digital – Encendido de Led externo mediante llave
Agregando el código en la IDE de Arduino y SimulIDE:
Abrir
*.ino
Resultado
de la
Compilación
Programa
cargado
exitosamente
Copyright (c) 2020 - Diego Brengi y Gabriela Valles
Práctica Nº 3: Entrada digital – Encendido de Led externo mediante llave
Simulando el ejercicio:
1° 2°
Elementos básicos
y un poco de HW
1° 2°
AD
C
void loop() {
tension = digitalRead( llave1);
if ( tension == HIGH ) {
digitalWrite( led1, HIGH);
} CPU
else {
digitalWrite( led1, LOW);
}
}
Diagrama de Flujo:
const int led1 = 9;
const int llave1 = 4;
int tension;
void setup() {
pinMode(led1, OUTPUT);
pinMode( llave1, INPUT);
}
void loop() {
tension = digitalRead( llave1);
if ( tension == HIGH ) {
digitalWrite( led1, HIGH);
}
else {
digitalWrite( led1, LOW);
}
}
void setup() {
pinMode(led1, OUTPUT);
pinMode( llave1, INPUT);
}
void loop() {
tension = digitalRead( llave1);
if ( tension == HIGH ) {
digitalWrite( led1, HIGH);
}
else {
digitalWrite( led1, LOW);
}
}
void loop() {
tension=digitalRead( llave1);
if ( tension == HIGH ) {
digitalWrite( led1, HIGH);
}
else {
digitalWrite( led1, LOW);
}
}
void loop() {
tension=digitalRead( llave1);
if ( tension == HIGH ) {
digitalWrite( led1, HIGH);
}
else {
digitalWrite( led1, LOW);
}
}
void loop() {
tension=digitalRead( llave1);
if ( tension == HIGH ) {
digitalWrite( led1, HIGH);
}
else {
digitalWrite( led1, LOW);
}
}
void loop()
{
tension=digitalRead( llave1);
if ( tension == HIGH ) {
digitalWrite( led1, HIGH);
}
else {
digitalWrite( led1, LOW);
}
}
void loop() {
tension=digitalRead( llave1);
if ( tension == HIGH ) {
digitalWrite( led1, HIGH);
}
else {
digitalWrite( led1, LOW);
}
}
While
Encender LED
Esperar 10s
Cond F Leer
ición PULSADOR
V PULSADOR
==
HIGH
Instrucciones
Apagar LED
Apagar LED
F
millis()
<=
tfinal PULSADOR
==
V HIGH
Leer
¿Cuándo leo el
pulsador? Apagar LED
PULSADOR
PULSADOR
==
HIGH Apagar LED
tfinal=t;
Apagar LED
digitalWrite(LED, HIGH);
t = millis();
tfinal = t + 10000;
if ( tension == HIGH ) {
tfinal=t;
}
}
digitalWrite(LED, LOW);
digitalWrite(LED, HIGH);
t = millis();
tfinal = t + 10000;
if ( tension == HIGH ) {
break;
tfinal=t;
}
}
digitalWrite(LED, LOW);
Estructuras de
control de flujo de
programa
IF if(condición)
{ //acción}
IF ELSE if(condición)
{ //acción}
else
{ //otra acción}
ELSE IF if(condición)
{ //acción}
else if (condición2)
{ //otra acción}
else
{ //otra acción más}
WHILE while(condición)
{ //acción}
DO WHILE do
{ //acción }
while (condición);
http://lacie-unlam.org/
https://www.facebook.com/lacie.unlam/
Copyright (c) 2020 - Diego Brengi y Gabriela Valles