Documentos de Académico
Documentos de Profesional
Documentos de Cultura
www.zonaelectronica.com
www.clubzona.zonaelectronica.com
Francisco Di Zonno
+58.414.246.48.25
fdizonno@zonaelectronica.com
fdizonno@gmail.com
La Automatización
Fundamentos de ARDUINO
El mundo del siglo XXI
¿Ficción? ¿Realidad?
¿Futuro? ¿Actualidad?
Fundamentos de ARDUINO
Domótica
El término inmótica
El término urbótica
Fundamentos de ARDUINO
Domótica
1.- La Electricidad
2.- La Electrónica
3.- La Informática
Fundamentos de ARDUINO
La Electrónica
El Transistor
16 de diciembre de 1947
William Shockley,
John Bardeen
y Walter Brattain
Laboratorios Bell
Fundamentos de ARDUINO
La Electrónica
Fundamentos de ARDUINO
La Informática
Fundamentos de ARDUINO
Automatismos y la Domótica
• Gestión Energética,
• Seguridad,
• Bienestar y Confort,
• Accesibilidad,
• Comunicación.
Fundamentos de ARDUINO
Aspectos principales de la Domótica
Ahorro Energético
- Climatización (HVAC)
- Gestión Eléctrica
- Uso Energías Renovables
Fundamentos de ARDUINO
Aspectos principales de la Domótica
Confort
- Iluminación
- Automatización de todos los sistemas,
instalaciones y equipos
- Integración del Intercomunicador al teléfono
o al Televisor
- Control de dispositivos vía Internet
- Gestión Multimedia y Ocio
Fundamentos de ARDUINO
Aspectos principales de la Domótica
Seguridad
- Alarmas de intrusión
- Cierre de persianas puntual y
seguro
- Simulación de presencia
- Alarmas de detección de
incendios, fugas de gas, escape
de agua, concentración de
monóxido de carbono
- Alerta médica. Tele asistencia.
- Acceso a Cámaras IP.
Fundamentos de ARDUINO
Aspectos principales de la Domótica
Comunicaciones
- Ubicuidad en el control tanto externo
como interno, control remoto desde
Internet, PC, mandos inalámbricos
(Smartphone con WIFI)
- Tele asistencia
- Tele mantenimiento
- Informes de consumo y costes
- Transmisión de alarmas
- Intercomunicaciones
Accesibilidad
Aplicaciones o instalaciones de control
remoto del entorno que favorecen la
autonomía personal de personas con
limitaciones funcionales, o discapacidad.
Fundamentos de ARDUINO
Inmótica
¿Qué hace a un edificio más inteligente?
Los sistemas que conversan con sistemas
Fundamentos de ARDUINO
Urbótica – Smart Cities
Fundamentos de ARDUINO
Urbótica – Smart Cities
Generación de energía
Pavegen tiene una instalación
permanente, fuera de la estación
de trenes en Saint Omer, Francia.
14 mosaicos instalados en marzo
de 2014, convierten energía
cinética de los pasajeros que van
caminando en energía eléctrica
sustentable.
Fundamentos de ARDUINO
Algunos fabricantes
http://www.insteon.com/
http://www.leviton.com/
http://www.crestron.com/
http://nest.com/
http://www.smarthome.com/
http://www.honeywell.es/
http://es-la.control4.com/ http://www.bticino.com/
Fundamentos de ARDUINO
Algunos productos
Fundamentos de ARDUINO
Actores importantes
Fundamentos de ARDUINO
Actores importantes
Fundamentos de ARDUINO
Actores importantes
• Sensores
• Actuadores
• Soportes de
comunicación
• Central de Gestión
o de Control
Fundamentos de ARDUINO
Arquitectura
• USB
– Bus serie, cable, 600 MB/s. Topología en bus/árbol.
– Máxima distancia: 6m. Hasta 127 dispositivos.
• IrDA
– Punto a punto, inalámbrico. Máxima distancia: 10m
• Bluetooth
– Bus inalámbrico. Máxima distancia 100m. Hasta 24MB/s.
Fundamentos de ARDUINO
Buses de Control
X10: Protocolo de comunicaciones para el control remoto de dispositivos eléctricos a través de los
enchufes eléctricos. Es de código abierto y el más difundido. Poco fiable frente a ruidos eléctricos.
CEBus abreviación para Consumer Electronics Bus, también conocida como EIA-600. Es un estándar
de protocolos eléctricos y DATA.
Universal Plug and Play (UPnP): Arquitectura software abierta y distribuida que permite el
intercambio de información y datos a los dispositivos conectados a una red.
KNX/EIB: Bus de Instalación Europeo con más de 20 años y más de 100 fabricantes de productos
compatibles entre sí.
Genéricos. Conectividad vía Ethernet (IEEE 802.3) y/o WiFi (IEEE 802.11)
Fundamentos de ARDUINO
Redes Domésticas
http://www.zigbee.org/
Fundamentos de ARDUINO
Redes Domésticas
http://www.knx.org
Fundamentos de ARDUINO
La idea propuesta por Kevin Ashton en 1999
Se estima que 50 mil millones de dispositivos
estarán conectados en el año 2020
Fundamentos de ARDUINO
Dispositivos IoT
Lo que hace a los dispositivos
IoT diferentes de un sensor
“ordinario” es básicamente la
habilidad de éste de
comunicarse (usualmente) en
forma directa o indirecta a la
Internet.
Dirección IP
Numero único que identifica a un
equipo conectado a una red de
datos.
IPv6 admite
340.282.366.920.938.463.463.374.607.431.768.211.456
(2128 o 340 sextillones de direcciones) — cerca de 6,7 ×
1017 (670 mil billones) de direcciones por cada milímetro
cuadrado de la superficie de La Tierra. Fundamentos de ARDUINO
Fuente: Wikipedia
Algunas posibilidades
Fundamentos de ARDUINO
Actores principales
Microcontroladores
Fundamentos de ARDUINO
Las Computadoras
Fundamentos de ARDUINO
Microprocesadores (μP)
o simplemente Procesador
Fundamentos de ARDUINO
Microcontrolador (μC)
Un microcontrolador es un circuito
integrado que contiene internamente
todos los componentes básicos de un
computador:
•CPU
•Memoria
•Unidades de E/S
Fundamentos de ARDUINO
Microcontrolador (μC)
Área
de RAM
Reloj y Temporizadores
Puertos de E/S
Área
de ROM
Periférico 1 Periférico 2
Periférico 3 Periférico 4
Fundamentos de ARDUINO
Microcontroladores (μC) hoy en día
Sistemas embebidos (embedded)
Fundamentos de ARDUINO
Algunos fabricantes de Microcontroladores
Fundamentos de ARDUINO
Programando los
Microcontroladores
Fundamentos de ARDUINO
Proceso de desarrollo de proyectos con
Microcontroladores
Computador
Programa de
Grabación
Dispositivo de
Grabación
Fundamentos de ARDUINO
Unidad de Memoria
Fundamentos de ARDUINO
Lenguajes de Programación
Fundamentos de ARDUINO
Lenguajes de Programación
Instrucción:
Suma 58 al registro de trabajo W y guarda el resultado
en este mismo registro W
Lenguaje de Máquina
11111000111010 – Binario
3E3A - Hexadecimal
Lenguaje Ensamblador
addlw d’58
Fundamentos de ARDUINO
Ambiente de Desarrollo Integrado - IDE
Tareas Típicas de un IDE
ARDUINO
PINGUINO
MPLAB X
Fundamentos de ARDUINO
Pasos para elaborar un “Programa”
Fundamentos de ARDUINO
Escribir un Programa
Tareas – Pasos – Algoritmo
Problema:
Tener un programa que mida la
temperatura y la muestre en una pantalla
LCD.
Fundamentos de ARDUINO
Dispositivos Interactivos
Dispositivo electrónico capaz de
“sentir”
el medio ambiente usando
sensores,
que convierten las señales
externas en señales eléctricas.
Fundamentos de ARDUINO
Fundamentos de ARDUINO
¿Qué es ARDUINO?
Fundamentos de ARDUINO
ARDUINO
www.arduino.cc
Fundamentos de ARDUINO
ARDUINO - Historia
– Massimo Banzi
– David Cuartielles
– Gianluca Martino
– Tom Igoe
– David Mellis
Consiste de:
o La placa Arduino
o El IDE Arduino
o El lenguaje Arduino
o Software (Bibliotecas) de terceros
o Shields o extensiones
o Componentes electrónicos
Fundamentos de ARDUINO
Arduino
Fundamentos de ARDUINO
Arduino
Fundamentos de ARDUINO
Arduino
Fundamentos de ARDUINO
Arduino UNO R3
Fundamentos de ARDUINO
Arduino UNO R3
ESPECIFICACIONES TECNICAS
- Microcontrolador ATmega328
- Voltaje de operación 5V
- Voltaje de entrada (recomendado) 7-12 V
- Voltaje de entrada (limite) 6-20 V
- Digital I/O Pins 14
- Canales PWM 6
- Entradas analógicas (6 pines)
- DC corriente I/O Pin 40 mA
- DC corriente 3.3V Pin 50 mA
- Memoria Flash 32 KB (ATmega328) con
0.5KB para el bootloader
- SRAM 2KB (ATmega328)
- EEPROM 1KB (ATmega328)
- Velocidad de reloj 16MHz
- ATmega 16U2 para comunicación USB
Fundamentos de ARDUINO
Arduino – Shields - Extensiones
Fundamentos de ARDUINO
Arduino - Shields
http://shieldlist.org/
Fundamentos de ARDUINO
Comenzando con ARDUINO
Pasos:
Fundamentos de ARDUINO
Descargar el IDE - Arduino
http://www.arduino.cc/en/Main/Software
Fundamentos de ARDUINO
Puertos COM Virtuales – Ambiente Windows
Fundamentos de ARDUINO
ARDUINO - IDE
Barra de menues
Barra de herramientas
Pestañas
Editor de texto
Área de mensajes
Consola
Fundamentos de ARDUINO
Seleccionar la tarjeta Arduino y el puerto serial
Fundamentos de ARDUINO
“Cargar” el sketch y verificar el
funcionamiento en la tarjeta
Fundamentos de ARDUINO
ARDUINO – Ejemplos
Fundamentos de ARDUINO
ARDUINO - Bibliotecas
(Libraries)
Fundamentos de ARDUINO
ARDUINO – Ayuda
Fundamentos de ARDUINO
ARDUINO – Otros IDE
Arduino se puede programar por medio de otras plataformas
Arduino Create
Eclipse
Fundamentos de ARDUINO
ARDUINO – Sketch o programa base
Fundamentos de ARDUINO
Elementos de los sketchs o programas
Comentarios:
Proveer información al ser humano de los que hace o debe hacer cierta parte de un
programa.
/* Esto es un comentario
dentro de un sketch de Arduino */
Declaraciones:
Se usa para crear elementos de un programa como variables y funciones y también
para indicar sus propiedades.
Fundamentos de ARDUINO
Elementos de los sketchs o programas
digitalWrite(13, HIGH);
contador = 1;
Bloques de Código:
Tanto las Declaraciones como las Instrucciones pueden ser agrupadas en Bloques.
Un bloque se define como lo encerrado entre dos símbolos de llaves.
while (1) {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the
voltage level)
delay(1000); // wait for a second
}
Ejercicio: XC8_Plantilla
Fundamentos de ARDUINO
Elementos de los sketchs
Funciones:
Una función (también conocida
como procedimiento o sub-
rutina
es una pieza de código que
puede ser usada en cualquier
parte de un Sketch.
Fundamentos de ARDUINO
Algunas definiciones que se deben conocer
Fundamentos de ARDUINO
Algunas definiciones que se deben conocer
Sistemas de Numeración
Sabia usted que toda las personas pueden ser clasificadas en 10
grupos La que conocen el Sistema de numeración binaria y las que
no lo conocen.
Fundamentos de ARDUINO
Diferentes bases numéricas
Fundamentos de ARDUINO
Transducción
Energía Física
Sensores Actuadores
Energía Eléctrica
Fundamentos de ARDUINO
Conceptos Fundamentales
CORRIENTE:
También denominada intensidad, es el flujo de electrones libres a través de un
conductor o semiconductor en un sentido. La unidad de medida de este parámetro
es el amperio (A).
Fundamentos de ARDUINO
Conceptos Fundamentales
VOLTAJE:
Es la diferencia de potencial generada entre los extremos de un componente o
dispositivo eléctrico. También podemos decir que es la energía capaz de poner en
movimiento los electrones libres de un conductor o semiconductor. La unidad de
este parámetro es el voltio (V).
Fuente: Wikipedia
Fundamentos de ARDUINO
Conceptos Fundamentales
RESISTENCIA ELECTRICA:
Es la propiedad física mediante la cual todos los materiales tienden a oponerse al
flujo de la corriente. La unidad de este parámetro es el Ohmio (Ω).
Fuente: Wikipedia
Fundamentos de ARDUINO
Conceptos Fundamentales
ElectroDroid - Android
Fundamentos de ARDUINO
Conceptos Fundamentales
ElectroDroid - Android
Fundamentos de ARDUINO
Electrónica – Conceptos Fundamentales
Ley de Ohm
Fundamentos de ARDUINO
Tareas en las que usamos el Arduino
Fundamentos de ARDUINO
Salidas Digitales
Salida Digital:
Cualquier dispositivo que pueda ser
encendido-apagado, puede ser un Simples:
potencial transductor de salida digital LEDs, Buzzer
Fundamentos de ARDUINO
ARDUINO – Salidas Digitales
LED en Pin 13
Instrucciones
- pinMode(pin,TIPO)
- digitalWrite(pin,ESTADO)
- delay(tiempo)
Fundamentos de ARDUINO
Proyecto – Hola Mundo
LED Intermitente (Blink) Salidas Digitales
Por una de las patas del Arduino hacer parpadear
un LED.
/* Encender y apagar un LED durante 1 segundo, repetidamente
*/
Algoritmo
- Encender el LED // El pin 13 del Arduino está conectado a un LED
- Esperar un tiempo
- Apagar el LED // Rutina de inicialización.
- Esperar otro tiempo void setup() {
- Repetir siempre // Inicializa el pin 13 como salida
pinMode(13, OUTPUT);
}
DIODO:
Un diodo es un componente electrónico de dos terminales
que permite la circulación de la corriente eléctrica a través
de él en un solo sentido.
Fundamentos de ARDUINO
LEDs – Diodos emisores de luz
Ánodo (A)
Cátodo (K)
Fundamentos de ARDUINO
Protoboard
Fundamentos de ARDUINO
http://fritzing.org
Fundamentos de ARDUINO
Proyecto
Crear el siguiente
circuito y determinar el
valor aproximado de la
resistencia del circuito.
El LED se conecta en el
pin 5 del Arduino.
Realizar el montaje y la
respectiva
programación
de 2 segundos
prendido y 1 segundo
apagado.
Fundamentos de ARDUINO
Proyecto
Hacer un montaje de 2 LEDs
Intermitentes en una placa
Arduino.
Realizar el montaje y la
respectiva programación de
500ms segundos prendido y
500ms segundos apagado
Fundamentos de ARDUINO
Variables
Fundamentos de ARDUINO
Variables
Fundamentos de ARDUINO
Tipos de datos y sus tamaños
TIPO DE TAMAÑO
RANGO DE VALORES
DATO (EN BITS)
Fundamentos de ARDUINO
Tipos de Datos y sus Tamaños
TIPO DE TAMAÑO
( N U M E RO D E RANGO DE VALORES
DATO BITS)
Fundamentos de ARDUINO
Uso de Variables
OPERADOR OPERACION
+ Adición
- Sustracción
* Multiplicación
/ División
% Modulo
Fundamentos de ARDUINO
Operadores de asignación
void setup() {
// inicializa la pata pinLed como salida
pinMode(pinLed, OUTPUT);
}
void loop() {
a = a + 100;
digitalWrite(pinLed, HIGH); // enciende el Led
delay(a); // retardo
Ejercicios:
E02_OperadoresAsignacion digitalWrite(pinLed, LOW); // apaga el led
E02_OperadoresAsignacion01 delay(a); // retardo
}
Fundamentos de ARDUINO
Operadores compuestos
E JEMPLO
OPERADOR
Expresión Equivalente
+= a += 8 a=a+8
-= a -= 8 a=a-8
*= a *= 8 a=a*8
/= a /= 8 a=a/8
%= a %= 8 a=a%8
Fundamentos de ARDUINO
Operadores condicionales o de control
Se usan para tomar decisiones o bifurcaciones basadas en varias
condiciones que pueden ocurrir durante la ejecución del programa
Instrucciones
NO / SI
¿Condición?
SI / NO
Fundamentos de ARDUINO
Operador condicional If --- if / else
Fundamentos de ARDUINO
Condicionales lógicos
CONDICIÓN
OPERADOR SIGNIFICADO E JEMPLO
VERDADERA
> Es mayor que b>a Si b es mayor que a
Si a es mayor o igual que
>= Es mayor o igual que a >= 5
5
< Es menor que a<b Si a es menor que b
Si a es menor o igual que
<= Es menor o igual que a <= b
b
== Es igual a a == 6 Si a es igual a 6
!= No es igual a a != b Si a es diferente de b
Verdadero es 1 -- Falso es 0
Valores diferentes de Cero son tratados como Verdadero
Valores iguales a Cero son tratados como Falso
Fundamentos de ARDUINO
Operadores de condicionales
/* Uso de Operadores condicionales en un programa */
void setup() {
// inicializa la pata pinLed como salida
pinMode(pinLed, OUTPUT);
}
void loop() {
a += 100; // a = a + 100
digitalWrite(pinLed, HIGH); // enciende el Led
delay(a); // retardo
digitalWrite(pinLed, LOW); // apaga el led
delay(a); // retardo
OPERADOR O LÓ G I C A
Operando 1 Operando 2 Resultado
0 0 0
|| 0 1 1
1 0 1
1 1 1
OPERADOR N E G A D O LÓ G I CO
Operador Resultado
! 0 1
1 0
Fundamentos de ARDUINO
Operadores de condicionales
/* Uso de Operadores condicionales en un programa */
void setup() {
// inicializa la pata pinLed como salida
pinMode(pinLed, OUTPUT);
}
void loop() {
a += 100; // a = a + 100
b += 200;
digitalWrite(pinLed, HIGH); // enciende el Led
delay(a); // retardo
digitalWrite(pinLed, LOW); // apaga el led
delay(a); // retardo
Inicia Contador
Instrucciones
Lazo condicionado
Decrementar Contador
Instrucciones
NO / SI
¿Contador=0? NO / SI
¿Condición?
SI / NO
SI / NO
Fundamentos de ARDUINO
Instrucciones de repetición
Operador for
for(initial_expression; condition_expression; change_expression) {
operations
...
}
Fundamentos de ARDUINO
ARDUINO – Ejercicio – Ciclo for
/* Ejemplo Semaforo */
void loop() {
digitalWrite (2,HIGH); //Asigna un estado 1 lógico al pin 2
delay (4000);
digitalWrite (4,HIGH);
delay (5000); Ejercicio:
digitalWrite (4,LOW); E04_SemaforoFOR
} Fundamentos de ARDUINO
Instrucciones de repetición
Operador while
Permite crear un loop continuo hasta que se cumpla que la
expresión entre paréntesis sea falsa.
while (expression) {
// statement(s)
}
var = 0;
while(var < 200) {
// Repetir 200 veces
var++;
} Fundamentos de ARDUINO
Instrucciones de Bucle, lazo o Loop
Operador do - while
do {
// hacer algo
Fundamentos de ARDUINO
ARDUINO – Ejercicio – Ciclo while
/* Ejemplo Semaforo */
//Configura los pines 2, 3 y 4 como salida
void setup() {
pinMode (2,OUTPUT); Ejercicio:
pinMode (3,OUTPUT); E05_SemaforoWHILE
pinMode (4,OUTPUT);
}
void loop() {
while (cuenta<5) {
digitalWrite (3,HIGH);
delay (1000);
digitalWrite (3,LOW);
delay (200);
cuenta++;
}
digitalWrite (4,HIGH);
delay (5000);
digitalWrite (4,LOW);
} Fundamentos de ARDUINO
Entradas Digitales
Fundamentos de ARDUINO
Electrónica – Componentes
Fundamentos de ARDUINO
Pines o Patas Digitales
Fundamentos de ARDUINO
Pines o Patas Digitales
Las patas configuradas como
Entradas que no tengan nada
conectado deben colocársele una
resistencia de Pull-Up o
Pull-Down, típicamente de 10K.
Fundamentos de ARDUINO
ARDUINO – Entradas Digitales
Fundamentos de ARDUINO
ARDUINO – Entradas Digitales
Fundamentos de ARDUINO
ARDUINO – Ejercicios
/* Instrucción: digitalRead()
Botón para controlar un LED
Encender un LED mientras se mantiene pulsado un Botón y
Apagarlo cuando se suelta el botón …
void loop(){ // Programa principal
El Circuito: // Lee el estado del boton
* LED conectado entre el pin 5 y tierra EstadoBoton = digitalRead(BotonPin);
* Botón momentáneo conectado al pin 2 y a +5V
* Resistencia de 10K entre el pin 5 y tierra // Verifica si el boton está presionado
*/ if (EstadoBoton == HIGH) { // Condición para el botón
// presionado.
// Definición de constantes // Encender el LED
int BotonPin = 2; // Botón conectado al pin 2 digitalWrite(LEDPin, HIGH);
int LEDPin = 5; // LED conectado al pin 5
} else { // Condición para botón no presionado.
// Definición de variables // Apagar el LED
int EstadoBoton = 0; // En esta variable se guardo la digitalWrite(LEDPin, LOW);
// lectura del boton }
}
void setup() { // Inicializaciones del programa
Fundamentos de ARDUINO
ARDUINO – Ejercicio
Semáforo peatonal
Fundamentos de ARDUINO
Resistencias internas de Pull-Up
Resistencia
Interna de pull-up
Fundamentos de ARDUINO
Usando las Resistencias INTERNAS
Esquema con resistencia interna de /*
Con un botón encendemos el LED, el cual se mantiene
Pull-up encendido hasta que pisamos el otro botón.
El Circuito:
* LED conectado entre el pin 5 y tierra
* Botón momentáneo conectado al pin 9 y pin 8 y a tierra
*/
int ledPin = 5;
int buttonApin = 9;
int buttonBpin = 8;
byte leds = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonApin, INPUT_PULLUP);
pinMode(buttonBpin, INPUT_PULLUP);
}
void loop() {
if (digitalRead(buttonApin) == LOW) {
digitalWrite(ledPin, HIGH);
}
if (digitalRead(buttonBpin) == LOW) {
digitalWrite(ledPin, LOW);
}
}
Ejercicio:
E07_LedControladoPorBoton02 Fundamentos de ARDUINO
Electrónica – Componentes
Fundamentos de ARDUINO
Arduino con PIR
void setup(){
pinMode(13,OUTPUT);
pinMode(2,INPUT);
}
void loop(){
digitalWrite(13,digitalRead(2));
}
Ejercicio:
E09_SerialConsola00
E09_SerialConsola01
Fundamentos de ARDUINO
Código ASCII
Ejercicio:
IDE Arduino
Archivo>Ejemplos>
Communication>ASCIITable
Fundamentos de ARDUINO
ARDUINO – Revisando el estado de una señal
/*
--------------------------------------
Lectura serial de una entrada digital
--------------------------------------
Leer una entrada digital y mostrar por la pantalla del
computador (consola serial) el estado del pulsador
*/
Fundamentos de ARDUINO
ARDUINO – Activando una señal desde la consola
/*
--------------------------------------------------------
Controlar un LED desde el Monitor Serial
--------------------------------------------------------
Encendemos o apagamos un LED en función de la tecla pulsada
*/
int input;
void setup() {
pinMode(13, OUTPUT); // Declaramos que utilizaremos el pin 13 como salida
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
input = Serial.read();
if (input == '1') {
digitalWrite(13, HIGH); //Si el valor de input es 1, se enciende el led Ejercicio:
} E09_SerialConsola03
else
{
digitalWrite(13, LOW); //Si el valor de input es diferente de 1, se apaga el LED
}
}
}
Fundamentos de ARDUINO
No todo es blanco y negro, hay grises
Sensores
Transducción:
Transformación o conversión de una forma de energía de
entrada, en otra diferente de salida
Fundamentos de ARDUINO
Entradas Analógicas
Potenciómetros, reóstatos
Resistores Flex
Resistores de fuerza
Termistores
Fundamentos de ARDUINO
Entradas analógicas
Fundamentos de ARDUINO
Convertidores Análogos a Digitales
Fundamentos de ARDUINO
Proceso de Conversión Análogo a Digital
Fundamentos de ARDUINO
Pines o Patas de Entrada Analógicas
Fundamentos de ARDUINO
Electrónica – Componentes
Fundamentos de ARDUINO
Potenciómetro
Fundamentos de ARDUINO
Electrónica – Divisor de Tensión
Fundamentos de ARDUINO
ARDUINO – Entradas Análogas
Instrucciones
analogRead(pin)
Valor entre 0 y 1023
/*
Leer una entrada análoga y mostrar por la pantalla
del computador (consola serial) el valor luego de
girar el potenciómetro
*/
void setup(){
Serial.begin(9600); //Inicia comunicación serial
}
void loop(){
//Guardar en una variable entera el valor
//del potenciómetro 0 a 1023
int valor= analogRead(A0);
//Imprime en la consola serial el valor de la variable
Serial.println(valor);
//Retardo para la visualización de datos
//en la consola
delay(100); Ejercicio:
} E12_LecturaPotenciómetro
E12_LecturaPotenciómetroMapeado
E12_LecturaPotenciometroConstrain
Fundamentos de ARDUINO
Ejercicio
Se requiere hacer parpadear un LED con el parpadeo controlado por un potenciómetro
/*
Leer una entrada análoga y varía la velocidad de parpadeo de un LED
en función del valor leído, luego de girar el potenciómetro.
*/
void setup(){
pinMode(LED, OUTPUT);
}
void loop(){
//leemos el pin del potenciómetro
lectura = analogRead(POT); // El valor leído está comprendido
// entre 0 y 1023
digitalWrite(LED, HIGH);
//Esperamos un tiempo equivalente al valor del potenciómetro
delay(lectura);
digitalWrite(LED, LOW);
delay(lectura);
}
Fundamentos de ARDUINO
Ejercicio Vúmetro
El rango es:
0v < Valor <= 1v // Leds apagados
1v < Valor <= 2,2v // Led verde encendido
2,2v < Valor <= 3,6v // Led verde y amarillo encendido,
3,6v < Valor <= 4,6 // Led verde,- amarillo y rojo encendido
4,6v < Valor <= 5v // Todos los Leds parpadean
Fundamentos de ARDUINO
Electrónica – Componentes
Fundamentos de ARDUINO
ARDUINO – Ejercicio
// Parpadear un LED a una tasa definida por un valor analógico
void setup() {
Serial.begin(9600);
pinMode(LED, OUTPUT);
void loop() {
val = analogRead(A0); // Lee el valor del pin 0 (análogo)
digitalWrite(LED, HIGH); // Enciende el LED
delay(val); // Detiene el programa por un tiempo
digitalWrite(LED, LOW); // Apaga el LED
delay(val); // Detiene el programa por un tiempo
Serial.println(val);
}
Ejercicio:
E12_SensorAnalogicoFotoresistenciaDigital
Fundamentos de ARDUINO
Actuadores
Fundamentos de ARDUINO
Salidas Analógicas
Salida Analógicas:
Ejemplos:
Cambiar el brillo de un LED
Control de la velocidad de un motor DC
Generar tonos
Servomecanismos
Fundamentos de ARDUINO
Pines o Patas de Salidas Analógicas - PWM
La PWM o Modulación por Ancho de Pulso, es una técnica que permite obtener
resultados de salidas análogas usando medios digitales.
Fundamentos de ARDUINO
ARDUINO – Salidas Análogas
Instrucción
PWM: Modulación por ancho de Pulso - analogWrite(pin,valor)
Voltaje Efectivo
Voltaje Efectivo
Fundamentos de ARDUINO
ARDUINO – Efecto dimmer
Ejercicio:
// Efecto dimmer con un LED E14_EfectoDimmerConLED
void setup() {
pinMode(LED, OUTPUT);
}
void loop(){
for (i = 0; i < 255; i++) { // loop de 0 to 254 (fade in)
analogWrite(LED, i);
delay(10);
}
for (i = 255; i > 0; i--) { // loop de 255 to 1 (fade out)
analogWrite(LED, i);
delay(10);
}
}
Fundamentos de ARDUINO
ARDUINO – Ejercicio
void setup() {
Serial.begin(9600);
pinMode(LED, OUTPUT); // Se fija el pin del LED como salida
}
void loop() {
val = analogRead(0); // lee el valor del sensor a través de
// analogRead() y retorna un número
// entre 0 y 1023
Serial.println(val);
val = map(val,0,150,0,255);
Ejercicio:
E14_SensorAnalogicoFotoresistenciaAnaloga
Fundamentos de ARDUINO
LED RGB - Semiconductores
Fundamentos de ARDUINO
LED RGB - Semiconductores
Fundamentos de ARDUINO
LED RGB - Creando funciones
Ejercicio:
E15_LED_RGB
Fundamentos de ARDUINO
Funciones en Arduino
/* LEDs RGB LED */
Fundamentos de ARDUINO
Electrónica – Componentes
Fundamentos de ARDUINO
Relé – Relay - Relevador
Fundamentos de ARDUINO
Manejo de Carga con Relés
Voltaje de la bobina:
• AC / DC
• Voltios
Fundamentos de ARDUINO
Electrónica – Semiconductores
NPN
PNP
Fundamentos de ARDUINO
Manejo de Carga
Carga
Motores, Solenoides,
Bombillos,
Fundamentos de ARDUINO
Manejo de Carga con Relés
Fundamentos de ARDUINO
Motor DC
Fundamentos de ARDUINO
ARDUINO – Motores DC
// Variar la velocidad de un motor
void setup() {
pinMode(Motor, OUTPUT);
}
void loop(){
for (i = 0; i < 255; i++) { // loop de 0 to 254 (fade in)
analogWrite(Motor, i); // fija la velocidad
delay(10);
}
for (i = 255; i > 0; i--) { // loop de 255 to 1 (fade out)
analogWrite(Motor, i); // fija la velocidad
delay(10);
}
}
Ejercicio:
E16_MotorDC Fundamentos de ARDUINO
ARDUINO – Motores DC
/* Motor DC */
int motorPin = 3;
void setup(){
pinMode(motorPin, OUTPUT);
Serial.begin(9600);
}
void loop(){
if (Serial.available()){
int speed = Serial.parseInt();
Ejercicio:
MotorDCVelocidad
Fundamentos de ARDUINO
Motores DC
void setup(){
pinMode(motorPin, OUTPUT);
}
void loop(){
Fundamentos de ARDUINO
Motores DC – Puente H
Fundamentos de ARDUINO
Motores DC – Puente H
Fundamentos de ARDUINO
Servomotores
Fundamentos de ARDUINO
Servomotores
Fundamentos de ARDUINO
Servomotores DC
/* Servomotores */
#include <Servo.h>
int servoPin = 9;
Servo servo;
int angle = 0; // Posición del servo en grados
void setup(){
servo.attach(servoPin);
}
void loop(){
// Realiza un barrido desde 0 hasta 180 grados
for(angle = 0; angle < 180; angle++){
servo.write(angle);
delay(15);
}
// Realiza un barrido desde 180 hasta 0 grados
for(angle = 180; angle > 0; angle--){
servo.write(angle);
delay(15);
}
} Ejercicio:
E17_ServoMotor
Fundamentos de ARDUINO
ARDUINO – Servomotores
#include <Servo.h>
void setup(){
myservo.attach(9); // Colocar el servo en la pata 9
}
void loop(){
val = analogRead(potpin);
val = map(val, 0, 1023, 0, 180);
myservo.write(val);
delay(15);
}
Ejercicio:
E17_ServomotorPotenciometro
Fundamentos de ARDUINO
Servomotores
NOTA:
Los servos pueden
producir
comportamientos
erráticos cuando están
conectados a algunos
puertos USB.
Usualmente se corrige
con un condensador
mayor de 470uF.
Fundamentos de ARDUINO
Electrónica – Componentes
Fundamentos de ARDUINO
ARDUINO – Buzzer
void setup () {
pinMode (8, OUTPUT); // Pin al que está
// conectado
// el zumbador
}
void loop () {
digitalWrite (8, HIGH);
delayMicroseconds (1000);
digitalWrite (8, LOW);
delayMicroseconds (1000);
}
Ejercicio:
E18_Buzzer1
E18_Buzzer2
E18_BuzzerSirena
Fundamentos de ARDUINO
ARDUINO – Melodía
*/
#include "pitches.h"
void setup() {
// iterate over the notes of the melody:
for (int thisNote = 0; thisNote < 8; thisNote++) {
Fundamentos de ARDUINO
ARDUINO – Termistor
/*
Alerta Recalentamiento
void setup() {
pinMode(buzzer, OUTPUT);
}
void loop() {
while(analogRead(sensor)<60) {
tone(buzzer,1000,500); //Bucle: mientras se mantenga la
temperatura elevada, el micro estará emitiendo sonido por el pin
13
delay(1000);
}
digitalWrite(buzzer,LOW);
} Ejercicio:
E20_Recalentamiento
Fundamentos de ARDUINO
ARDUINO – Recursos
Scratch for Arduino – S4A
Fundamentos de ARDUINO
ARDUINO para todos
Fundamentos de ARDUINO
Gracias
Francisco Di Zonno
+58.414.246.48.25
fdizonno@zonaelectronica.com
fdizonno@gmail.com
@fdizonno
Fundamentos de ARDUINO