SlideShare una empresa de Scribd logo
1 de 43
MANUAL INTRODUCTORIO AL
ARDUINO UNO
PROYECTO DE INSTRUMENTACION ELECTRONICA
ALUMNO DE ING. FISICA: CRISTIAN MONZON COELLO
2013
INTRODUCCIÓN AL ARDUINO
Arduino es una plataforma de electrónica abierta (open-source) para la creación de
prototipos basada en software y hardware libre, flexible y fácil de usar. Enfocada a un
público no experto como artistas, diseñadores, entusiastas de la electrónica, o cualquier
interesado en crear entornos u objetos interactivos. Está basada en una placa con un micro
controlador y un entorno de desarrollo, diseñada para facilitar el uso de la electrónica en
proyectos multidisciplinares.
El proyecto Arduino fue concebido en Italia en el año 2005, sus creadores son el zaragozano
David Cuartielles, ingeniero electrónico y docente de la Universidad de Mälmo, Suecia y
Massimo Banzi, italiano, diseñador y desarrollador Web. Su nombre viene del nombre del
bar “Bar di Re Arduino” donde Massimo Banzi pasaba algunas horas, el cual a su vez viene
del nombre de un antiguo rey italiano allá por el año 1002.
Este proyecto acerca la electrónica a la gente común, pues hace frente a la programación
compleja y cerrada de las plataformas especializadas existentes, con una plataforma propia,
que utiliza software y hardware libre, además de presentarse como la solución para iniciar
en el mundo de la electrónica/robótica con un bajo coste.
Arduino es una herramienta para hacer que los ordenadores puedan sentir y controlar el
mundo físico a través de tu ordenador personal. Es una plataforma de desarrollo de
computación física que puede tomar información del entorno a través de sus pines de
entrada, para esto toda una gama de sensores puede ser usada y puede afectar aquello que
le rodea controlando luces, motores y otros actuadores. El microcontrolador en la placa
Arduino se programa mediante el lenguaje de programación Arduino (basado en Wiring) y
el entorno de desarrollo Arduino (basado en Processing).
Hay multitud de diferentes versiones de placas Arduino: Como el Arduino UNO, así como el
Duemilanove, que usan Atmel ATmega328. La anterior Diecimila, y las primeras unidades
de Duemilanove usaban el Atmel ATmega168, mientras que las placas más antiguas usan
el ATmega8. El Arduino Mega está basado en el ATmega1280. Además de muchas placas
otras placas copias de Arduino, también son compatibles y legales debido a la filosofía
abierta del Arduino.
ALGUNAS VERSIONES DEL ARDUINO
PLACAS CLONES COMPATIBLES
ARDUINO SHIELDS
 El concepto de los shields nos permite apilar placas con diferentes funcionalidades,
proporcionando flexibilidad al Arduino, para adaptarse a diferentes proyectos
rápidamente, basta comprar el shield requerido. Ejemplos:
_Shield Xbee - Este shield permite conectar inalámbricamente varios Arduino a
distancias de 100 pies en edificios y 300 pies en el exterior usando el módulo
Maxstream Xbee Zigbee.
_Shield Motores- Este shield permite a Arduino controlar motores eléctricos de
corriente continua, servos y motores paso a paso y leer encoders.
_Shield Ethernet - Este shield permite a una placa Arduino conectarse a una red
Ethernet y tener acceso a y desde Internet.
 Muchas empresas ofrecen diferentes tipos de shields, acuerdo a lo que se requeriera
obtener. Y si no se encontrara un shield adecuado, usted lo puede construir
adaptándolo a la placa.
ALGUNOS SHIELDS DE ARDUINO
ALGUNOS SHIELDS DE ARDUINO
HARDWARE DEL ARDUINO UNO
ESPECIFICACIONES TECNICAS DEL ARDUINO UNO
 Microcontrolador ATmega328
 Voltaje de operación 5V
 Voltaje de entrada (recomendado) 9-12 V
 Voltaje de entrada (limite) 6-20 V
 Digital I/O Pins 14 (con 6 salidas PWM)
 Entradas analógicas Pins 6
 DC corriente I/O Pin 40 mA
 DC corriente 3.3V Pin 50 Ma
 Conversor USB - Serie (chip FTDI)
 Memoria Flash 32 KB (2 KB para el boot loader)
 SRAM 1 KB
 EEPROM 512 byte
 Velocidad de reloj 16 MHz
ARDUINO UNO
La tarjeta Arduino UNO, es una placa basada en el microprocesador ATmega328. Tiene 13
pines para entradas/salidas digitales (6 de estas pueden ser usadas como salidas PWM), 6
pines para entradas analógicas, además de un puerto serial que permite realizar
comunicación con periférico una conexión USB. También tiene un pulsador para resetear
cualquier fallo que exista en los procesos que se vayan a realiza con la tarjeta. Una vez
programado el Arduino, no necesita estar conectado al PC.
Pines de alimentation (Power Pins)
Bien alimentemos al Arduino mediante la conexión USB o mediante una fuente externa
(recomendada de 9-12V), vamos a tener unas salidas de tensión continua debido a unos
reguladores de tensión y condensadores de estabilización.
Estos pines son:
 VIN: se trata de la fuente tensión de entrada que contendrá la tensión a la que
estamos alimentando al Arduino mediante la fuente externa.
 5V: fuente de tensión regulada de 5V, esta tensión puede venir ya sea de pin VIN a
través de un regulador interno, o se suministra a través de USB o de otra fuente de
5V regulada.
 3.3V: fuente de 3.3 voltios generados por el regulador interno con un consumo
máximo de corriente de 50mA.
 GND: pines de tierra.
Digital Inputs/Outputs
 Cada uno de los 14 pines digitales se puede utilizar como una entrada o salida. Cada
pin puede proporcionar o recibir un máximo de 40 mA y tiene una resistencia de pull-
up (desconectado por defecto) de 20 a 50 kOhm. Sólo pueden leer/escribir dos
valores. 0(LOW) y 1(HIGH). En el caso de Arduino, se trabaja con una lógica de 0-5V.
Suele tomarlos valores como HIGH cuando son mayores a 1,5V.
Además, algunos pines tienen funciones especializadas como:
 Pin 0 (RX) y 1 (TX). Se utiliza para recibir (RX) y la transmisión (TX) de datos serie
TTL.
 Pin 2 y 3. Interrupciones externas. Se trata de pines encargados de interrumpir el
programa secuencial establecido por el usuario.
 Pin 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Estos pines son de apoyo a la
comunicación SPI.
 Pin 13. LED. Hay un LED conectado al pin digital 13. Cuando el pin es de alto valor, el
LED está encendido, cuando el valor está bajo, es apagado.
 Pin 3, 5, 6, 9, 10 y 11. PWM (modulación por ancho de pulso) que emiten pulsos de
5V para que Vmedia sea de un valor determinado. Constituyen 6 bits de salida PWM
con la función analogWrite (). PWM es muy utilizado para controlar la velocidad de
motores o la intensidad de diodos LED. También es utilizado para indicar el ángulo de
giro de un servomotor.
Analog Inputs
El Arduino posee 6 entradas analógicas, etiquetadas desde la A0 a A5, cada una de las
cuales ofrecen 10 bits de resolución (es decir, 1024 estados). Por defecto, tenemos una
tensión de 5V, pero podemos cambiar este rango utilizando el pin de AREF y utilizando la
función analogReference(), donde le introducimos una señal externa de continua que la
utilizara como referencia.
INSTALACION DEL ARDUINO
 El IDE Arduino funciona en Windows, Mac OS X y Linux solo se tiene que descargar
de: http://arduino.cc/es/Main/Software para el sistema operativo empleado.
Windows XP, vista, 7
Si tu computador tiene de sistema operativo Windows en versión 7, Vista o XP, debes
realizar la siguiente sucesión de sencillos pasos:
 Conectar la placa Arduino Uno al PC y ver este aviso. No nos debemos pre-ocupar
 Visitar Panel de control y luego Administrador de dispositivos, allí buscar la siguiente
opción
 Click derecho sobre Dispositivo desconocido y luego sobre la opción Actua-lizar
software del controlador.
 Ingresar a la opción Buscar software de controlador en el equipo
 Examinar y buscar la carpeta de Arduino previamente descomprimida. Dentro de esa
carpeta acceder a la carpeta Drivers y dar Aceptar
 Una vez buscamos la carpeta de Drivers le damos Siguiente
 A veces en algunas máquinas aparecerá esta ventana:
 Recibimos la confirmación del Puerto COM asignado, este número de Puerto COM es
muy importante tenerlo en cuenta a la hora de programar.
MAC OS X (v. 10.3.9 o posterior)
1. Descargar el entorno Arduino.
Para programar la placa Arduino necesitas el entorno Arduino.
Descarga la última versión desde http://www.arduino.cc/en/Main/Software.
Cuando termine la descarga, descomprime el archivo descargado. Asegurate de conservar
la estructura de carpetas. Haz doble click en la carpeta para abrirla. Debería haber archivos
y subcarpetas en su interior.
2. Instalar los drivers USB.
Si estas usando un Arduino USB, necesitarás instalar los drivers para el chip FTDI de la placa.
Estos pueden encontrarse en el directorio drivers de la distribución Arduino. Si tienes un
Mac más antiguo como un Powerbook, iBook, G4 o G5, deberías usar los drivers PPC:
FTDIUSBSerialDriver_v2_1_9.dmg. Si tienes un Mac más nuevo como un MacBook, Mac
Book Pro o Mac Pro, necesitas los drivers de Intel: FTDIUSBSerialDriver_v2_2_9_Intel.dmg.
Haz doble click para montar la imagen del disco y ejecutar el FTDIUSBSerialDriver.pkg
La última versión en drives: http://www.ftdichip.com/Drivers/VCP.htm.
GNU/Linux
Estas instrucciones se centran en la distribución Ubuntu1, para más información sobre
cómo instalar el entorno Arduino en otras distribuciones visitar
http://www.arduino.cc/playground/Learning/Linux.
1. Ejecutar el Gestor de Paquetes Synaptic (en Sistema > Administración).
2. Primero necesitas habilitar los repositorios ‘’Universe’’ y ‘’Multiverse’’ para que puedas
acceder a todos los paquetes que necesitas.
Ir a Configuración > Repositorios.
 Haz click en Añadir.
 Marca ‘’Software restringido por copyright o cuestiones legales (multiverse)’’ y
‘’Software libre mantenido por la comunidad (universe)’’ y haz click en Añadir.
 Haz click en Cerrar y click en Cerrar en el diálogo ‘’Los repositorios han cambiado’’.
3. Haz click en el botón Recargar de la barra de herramientas.
4. Marca para instalar: ‘’sun-java5-jre’’, ‘’gcc-avr’’, ‘’avr-libc’’.
5. Haz click en Aplicar en la barra de herramientas.
6. Haz click en Aplicar en el cuadro de diálogo. Esto instalará los paquetes seleccionados.
7. Acepta la licencia de Java.
8. Espera hasta completar la instalación: el cuadro de diálogo dirá _Cambios aplicados_. Haz
click en Cerrar.
9. Cierra Synaptic.
10. Descarga la distribición de GNU/Linux de Arduino desde
http://www.arduino.cc/en/ Main/Software. Haz doble click en el archivo .zip y arrastra la
carpeta que contiene a algún lugar (por ejemplo el Escritorio).
11. Ejecuta el Terminal (en Aplicaciones > Accesorios).
12. Escribe ‘’sudo update-alternatives -config java’’ y presiona Enter. Teclea el número de
opción que tiene ‘’java-1.5.0-sun’’ en él y presiona Enter. Esto hará de la versión de Java de
Sun la predeterminada de tu sistema (necesaria porque la versión GNU todavía no soporta
todo lo necesitado por el entorno Arduino).
13. Haz doble click en ‘’arduino’’ en el directorio de aplicación de Arduino. Esto debería
lanzar un diálogo preguntando dónde guardas los archivos de tus rutinas de Arduino. Un
directorio ‘’Arduino’’ en tu carpeta home es la ubicación típica. Haz click en OK. El entorno
Arduino debería abrirse.
CONOCIENDO EL ENTORNO DE DESARROLLO DE ARDUINO
El entorno Arduino no precisa instalación, se lanza desde la misma carpeta en la que se
haya descargado, haciendo doble clic en “arduino.exe”.
Una vez se ha iniciado el entorno, aparecerá la ventana principal, que contiene las
siguientes partes principales (luego se verán con detalle cada una de ellas)
Para que la computadora reconozca a la placa Arduino, primero tenenos que configurar el
tipo de placa una vez abierta la aplicación nos vamos a Tools>Board>Arduino UNO
Además de elegir el puerto serial en el cual trabajamos, en este caso el COM30, nos vamos
a: Tools>Serial Port>COM 30
PROGRAMACIÓN DE UN ARDUINO
Vamos a comenzar a programar Arduino.
Arduino utiliza una mezcla curiosa de lenguajes de programación. Esta implementado en
Java, pero para programar los chips utiliza C++.
Un programa diseñado para ejecutarse sobre un Arduino se conoce como sketch, que
podríamos traducir como “boceto” o “borrador”. Un sketch siempre tiene la misma
estructura.
Además el IDE de Arduino, nos permite adjuntar librerías como en el lenguaje C++, por
ejemplo si queremos adjuntar la librería EEPROM, escribimos en la parte superior, como
cabecera del sketch:
#include <EEPROM.h>
Para ver más librerías nos vamos a: Sketch >Importar Libreria>…..
FUNCIONES BÁSICAS
 E/S DIGITALES
pinMode(pin,modo)
Configura el pin especificado para comportarse como una entrada (INPUT) o una salida
(OUTPUT).
Ejm: pinMode(Pin13, OUTPUT)
digitalWrite(pin,valor)
Asigna el valor HIGH (5V) o LOW (0V) a un pin digital.
Ejm: digitalWrite(Pin13 , HIGH);
digitalRead(pin)
Lee el valor de un pin digital especificado, HIGH o LOW.
Ejm: val = digitalRead(Pin13);
 E/S ANALÓGICAS
analogRead(pin)
Lee el valor de tensión en el pin analógico especificado. La placa Arduino posee 6 canales
conectados a un conversor analógico digital de 10 bits. Esto significa que convertirá
tensiones entre 0 y 5 voltios a un número entero entre 0 y 1023. Esto proporciona una
resolución en la lectura de: 5 voltios / 1024 unidades, es decir, 0.0049 voltios (4.9mV) por
unidad. El rango de entrada puede ser cambiado usando la función analogReference().
Ejm: val = analogRead(Pin3)
analogWrite(pin,valor)
Escribe un valor analógico (PWM) en un pin. Puede ser usado para controlar la luminosidad
de un LED o la velocidad de un motor. Después de llamar a la función analogWrite(), el pin
generará una onda cuadrada estable con el ciclo de trabajo especificado hasta que se
vuelva a llamar a la función analogWrite() (o una llamada a las funciones
digitalRead() o digitalWrite() en el mismo pin). La frecuencia de la señal PWM será de
aproximadamente 490 Hz. los valores de analogRead van desde 0 a 1023 y los valores de
analogWrite van desde 0 a 255
Parametros:
 pin: Es el pin en el cual se quiere generar la señal PWM.
 valor: El ciclo de trabajo deseado comprendido entre 0 (siempre apagado) y 255
(siempre encendido).
Ejm: val = analogRead(analogPin);
analogWrite(ledPin, val / 4);
 COMUNICACIÓN SERIE
Se utiliza para la comunicación entre la placa Arduino y un ordenador u otros dispositivos.
Todas las placas Arduino tienen al menos un puerto serie Serial. Se comunica a través de los
pines digitales 0 (RX) y 1 (TX), así como con el ordenador mediante USB. Por lo tanto, si
utilizas estas funciones, no puedes usar los pines 0 y 1 como entrada o salida digital.
Puedes utilizar el monitor serial del Arduino para comunicarte con la placa. Haz clic en el
botón del monitor de puerto serie en la barra de herramientas y selecciona la misma
velocidad en baudios utilizada en la llamada a begin().
Serial.begin(speed)
Establece la velocidad de datos en bits por segundo (baudios) para la transmisión de datos
en serie. Para comunicarse con el ordenador, utilice una de estas velocidades: 300, 1200,
2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 o 115200.
Ejm: Serial.begin(9600);
Serial.read()
Lee los datos entrantes del puerto serie.
Ejm; Byte = Serial.read();
Serial.print(val,[format])
Imprime los datos al puerto serie como texto ASCII.
val: el valor a imprimir de cualquier tipo
format: especifica la base (formato) a usar; los valores permitidos son BYTE, BIN (binarios o
base 2), OCT (octales o base 8), DEC (decimales o base 10), HEX (hexadecimales o base 16).
Para números de coma flotante, este parámetro especifica el número de posiciones
decimales a usar. Ejemplos:
o Serial.print(78) imprime "78"
o Serial.print(78, DEC) imprime "78”
o Serial.println(1.23456, 2) imprime "1.23"
Serial.println(val,[format])
Imprime los datos al puerto serie como texto ASCII seguido de un retorno de carro (ASCII
13, o 'r') y un carácter de avance de línea (ASCII 10, o 'n'). Ejemplos:
o Serial.println(analogValue); // imprime como ASCII decimal
o Serial.println(analogValue, HEX);// imprime como ASCII hexadecimal
Serial.available()
Devuelve el número de bytes (caracteres) disponibles para ser leídos por el puerto serie. Se
refiere a datos ya recibidos y disponibles en el buffer de recepción del puerto (que tiene
una capacidad de 128 bytes). Ejemplo:
if (Serial.available() > 0) {
} //realiza la lectura del puerto serie
Para más referencias sobre el lenguaje usado en el IDE de Arduino, además sobre los tipos
de variables a declarar, el manejo de estructura de del programa, la sintaxis empleada en
él, para aprender a usar las librerías y entre otros, podemos ayudarnos con la página web
de Arduino, para una referencia más detallada de los comandos empleados:
http://arduino.cc/es/Reference/HomePage
CARGANDO MI PRIMER PROGRAMA
El primer programa que podemos cargar, muy usado como para empezar en el Arduino,
algo como un ‘’HOLA MUNDO’’ en la placa Arduino, es el prendido y apagado de un led,
usando algún pin digital, en este caso el 13 que tiene una resistencia interna, además de un
led de estado, que se ubica al frente del pin 13 en el Arduino.
Para ello solo tenemos que buscar en el IDE: Archivo>>01.Basics>>Blink
Entonces tenemos, el siguiente programa, el cual lo cargamos con el botón redondo con la
flechita, que está en la parte superior del IDE:
// Blink: Prende un LED por un segundo, y lo apaga por otro segundo, así repetidamente.
int led = 13;
void setup() {
pinMode(led, OUTPUT); // inicializamos el pin 13 con salida
}
void loop() {
digitalWrite(led, HIGH); // enciende el LED
delay(1000); // 1000 milisegundos
digitalWrite(led, LOW); // apaga el LED
delay(1000); // 1000 milisegundos
}
Entonces notamos la intermitencia del foquito, con un periodo de un segundo, tiempo
que podemos variar en el paréntesis de delay( ) del programa.
ENCENDER UN LED CON UN PULSADOR
/*
Encender LED con un pulsador
Oprimir un pulsador y mientras este se mantenga accionado un LED se enciende
*/
int pulsador=2; //Pin donde se encuentra el pulsador, entrada
int led=13; //Pin donde se encuentra el LED, salida
void setup() // Se ejecuta cada vez que el Arduino se inicia
{
pinMode(pulsador, INPUT); //Configurar el pulsador como una entrada
pinMode(led,OUTPUT); //Configurar el LED como una salida
}
void loop()
{
//Condicional para saber estado del pulsador
if (digitalRead(pulsador)==HIGH) //Pulsador oprimido
{
digitalWrite(led,HIGH); //Enciende el LED
}
else //Pulsador NO oprimido
{
digitalWrite(led,LOW); //Apaga el LED
}
}
LECTURA SERIAL DE UNA ENTRADA ANÁLOGA
/*
LECTURA SERIAL DE ENTRADA ANÁLOGA
Leer una entrada análoga y mostrar por la pantalla del
Computador (consola serial) el valor luego de girar el potenciómetro
*/
void setup() // Se ejecuta cada vez que el Arduino se inicia
{
Serial.begin(9600); //Inicia comunicación serial
}
void loop()
{
//Guardar en una variable entera el valor del potenciómetro 0 a 1024
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 serial
delay(100);
}
ESCRITURA SERIAL
/*
ESCRITURA SERIAL
Consiste en escribir por la pantalla del computador (consola serial) una letra predeterminada, la primera vez que se
escriba está un LED se enciende, si se vuelve a escribir por segunda vez el LED se apaga.
*/
int led = 13; //Pin donde se encuentra el LED, salida
char leer; //Variable donde se almacena la letra
boolean prendido=false; //Estado LED la primera vez, apagado
void setup() // Se ejecuta cada vez que el Arduino se inicia
{
Serial.begin(9600); //Inicia comunicación serial
pinMode(led, OUTPUT); //Configurar el LED como una salida
}
void loop()
{
//Guardar en una variable el valor de la consola serial
leer=Serial.read();
// Si es la letra 'a' y además el LED está apagado
if ( (leer=='a') && (prendido==false) )
{
digitalWrite(led,HIGH); // Enciende el LED
prendido=true; // Actualiza el estado del LED
}
// Si es la letra 'a' y además el LED está encendido
else if ( (leer=='a') && (prendido==true) )
{
digitalWrite(led,LOW); // Apaga el LED
prendido=false; // Actualiza el estado del LED
}
}
ENCENDER UN LED POR PWM
/*
ENCIENDE/APAGA UN LED DE FORMA PROPORCIONAL
Programa que enciende proporcionalmente un LED cuando llega a su máximo punto de brillo comienza a
apagarse proporcionalmente.
*/
int brillo = 0; //Variable de brillo inicia en 0
int variacion = 5; //Variable de incremento configurada de 5 en 5
int led = 9; //Pin donde se encuentra el LED, salida
void setup () // Se ejecuta cada vez que el Arduino se inicia
{
pinMode(led, OUTPUT); //Configurar el LED como una salida
}
void loop () {
// Escritura analoga (PWM) en el LED escribo el valor de brillo
analogWrite(led, brillo);
// Incremento la variable brillo de 5 en 5
brillo = brillo + variacion;
// Nota: PWM ----> 0 - 255
// Si el brillo es 0 o 255
if (brillo == 0 || brillo == 255)
variacion = -variacion; //La variación se vuelve negativa
delay (30); //Tiempo de incremento en el brillo
}
CONTROL ON/OFF CON POTENCIÓMETRO
/*
Control ON/OFF 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, es un sistema con control ON/OFF
*/
void setup() // Se ejecuta cada vez que el Arduino se inicia
{
Serial.begin(9600); //Inicia comunicación serial
pinMode(13,OUTPUT); //Configurar el pin 13 como una salida
}
void loop(){
//Guardar en una variable el valor de la lectura análoga
int valor = analogRead(A0);
Serial.println(valor); //Imprime el valor por la consola
//Si el valor es mayor o igual a 500
if (valor >= 500)
{
digitalWrite(13,HIGH); //Enciende el LED en el pin 13
}
//Si el valor es menor a 500
else
{
digitalWrite(13,LOW); //Apaga el LED en el pin 13
}
delay(100); //Retardo de 100ms para ver los datos de la consola
}
CONTROL DE UN LED CON UNA FOTOCELDA
//Programa que enciende un LED de manera proporcional a la cantidad de luz que incida en una
fotocelda.
void setup() // Se ejecuta cada vez que el Arduino se inicia
{
Serial.begin(9600); //Inicia comunicación serial
pinMode(9,OUTPUT); //Configurar el pin 9 como una salida de PWM
}
void loop(){
//Guardar en una variable el valor de la lectura análoga de la fotocelda
int foto = analogRead(A0);
//Verifica el valor máximo y realizar una conversión
int conversion = 780 - foto;
//Condicional para establecer un valor absoluto
if ( conversion < 0)
conversion = conversion * -1; //Multiplicar por -1 porque es negativo
Serial.print("Foto : "); //Imprimir datos del valor de la lectura análoga de la fotocelda
Serial.print(foto);
Serial.println("");
Serial.print("Conv : "); //Imprimir datos del valor de la conversión
Serial.print(conversion);
Serial.println("");
analogWrite(9, conversion); //Escritura análoga de PWM en el LED de acuerdo a la conversión
delay(100); //Retardo para datos en la consola
}
CONTADOR DE PULSOS
//CONTADOR DE PULSOS: Programa que muestra por pantalla (consola serial) el número de veces que el pulsador
//ha sido presionado, se realiza un proceso que de acuerdo al número de pulsos se enciende un LED
int conta = 0; //Variable para guardar el conteo de los pulsos
void setup() // Se ejecuta cada vez que el Arduino se inicia
{
Serial.begin(9600); //Inicia comunicación serial
pinMode(2,INPUT); //Configura el pin 2 como una entrada, pulsador
pinMode(13,OUTPUT); //Configura el pin 13 como una salida, LED
}
void loop() {
if ( digitalRead(2) == HIGH ) // Si el pulsador esta oprimido
{
if ( digitalRead(2) == LOW ) // Si el pulsador no está oprimido, flanco de bajada
{
conta++; //Incrementa el contador
Serial.println(conta); //Imprime el valor por consola
delay (100); // Retardo
}
}
if (conta==5) // Si el valor del contador es 5
{
digitalWrite(13,HIGH); //Enciende el LED
}
if (conta==8) // Si el valor del contador es 8
{
digitalWrite(13,LOW); // Apaga el LED
}
}
LED RGB APOYADO DE TABLA DE COLORES
//Programa que hace uso de una función llamada color para generar diversas tonalidades en un LED RGB
int ledRojo = 9; //Declara Pin LED Rojo
int ledVerde=10; //Declara Pin LED Verde
int ledAzul=11; //Declara Pin LED Azul
void setup() // Se ejecuta cada vez que el Arduino se inicia
{
pinMode(ledRojo,OUTPUT); //El LED Rojo como una salida
pinMode(ledVerde,OUTPUT); //El LED Verde como una salida
pinMode(ledAzul,OUTPUT); //El LED Azul como una salida
}
void loop() {
// Llamado a la función Color que recibe
color(255,0,0); //Rojo, 1er posicion: Intensidad Rojo
delay(1000);
color(0,255,0); //Verde, 2da posición: Intensidad Verde
delay(1000);
color(0,0,255); //Azul, 3ra posición: Intensidad Azul
delay(1000);
color(255,255,255); //Blanco
delay(1000);
color(255,0,255); //Magenta
delay(1000);
color(255,128,0); //Naranja
delay(1000);
}
void color(int rojo, int verde, int azul){ //Funcion color
analogWrite(ledRojo, 255-rojo); //Escritura de PWM del color Rojo
analogWrite(ledVerde, 255-verde); //Escritura de PWM del color Verde
analogWrite(ledAzul, 255-azul); //Escritura de PWM del color Azul
}
CONTROL ON/OFF DE UN MOTOR
Para este experimento necesitamos un transistor NPN, para darle potencia al motor, al
pequeño motor. Armamos el siguiente esquema con los componentes con el Arduino.
Tener en cuenta la posición de las patas del transistor de acuerdo al grafico.
CONTROL ON/OFF DE UN MOTOR
/*
Programa que hace uso de un motor y un pulsador, mientras se mantenga pulsado, el motor
debe estar encendido (ON) de lo contrario debe estar apagado (OFF)
*/
int pulsador =7; //Declara Pin del pusaldor
int motor=3; //Declara Pin del motor
void setup() // Se ejecuta cada vez que el Arduino se inicia
{
pinMode(pulsador,INPUT); //El pulsador como una entrada
pinMode(motor,OUTPUT); //El motor como una salida
}
void loop()
{
// Si el pulsador se encuentra oprimido
if(digitalRead(pulsador) == HIGH){
digitalWrite(motor,HIGH); //Enciende el motor
}else{ //si el pulsador no está oprimido
digitalWrite(motor,LOW); //Apaga el motor
}
}
CONTROL POR PWM DE UN MOTOR
CONTROL POR PWM DE UN MOTOR
/*
Control por PWM de un motor
Programa que hace uso de un motor y la Consola serial de Arduino, tiene la posibilidad de
configurar al motor 5 velocidades distintas, desde el teclado del PC puedes enviarle la
velocidad deseada. Las 5 velocidades se configuran con 5 PWM distintos.
*/
int motor=3; //Declara Pin del motor
void setup() // Se ejecuta cada vez que el Arduino se inicia
{
Serial.begin(9600); //Inicia la comunicacion serial Arduino-PC
}
void loop()
{
// Si hay algun valor en la Consola Serial
if (Serial.available()){
//Variable donde se guarda el caracter enviado desde teclado
char a = Serial.read();
// Si el caracter ingresado esta entre 0 y 5
if (a>='0' && a<='5'){
//Variable para escalar el valor ingresado a rango de PWM
int velocidad = map(a,'0','5',0,255);
//Escritura de PWM al motor
analogWrite(motor,velocidad);
//Mensaje para el usuario
Serial.print("El motor esta girando a la velocidad ");
Serial.println(a);
}else{ // Si el caracter ingresado NO esta entre 0 y 5
//Mensaje para el usuario
Serial.print("Velocidad invalida");
Serial.println(a);
}
}
}
SERVOMOTOR CONTROLADO CON UN POTENCIOMETRO
// Usamos la librería Servo que ya tiene funciones predeterminadas
#include <Servo.h>
Servo miServo; // Creamos un objeto Servo para controlar nuestro servo
int potenciómetro = 0; // Potenciómetro en el Pin Analógico 0
int valor; // Variable para guardar la lectura del potenciómetro
void setup() {
miServo.attach(9); // Conectamos el servo en el Pin PWM 9
}
void loop() {
valor = analogRead(potenciómetro); // Leemos el valor del potenciómetro
valor = map(valor, 0, 1023, 0, 179); // Mapeamos su valor al rango del servo [0-180]
miServo.write(valor); // Le pasamos al servo el valor escalado
delay(15); // Retraso de 15 milisegundos para refrescar el servo
}
GENERAR TONOS CON UN BUZZER
GENERAR TONOS CON UN BUZZER
/*
GENERAR TONOS CON UN BUZZER
Programa que hace uso de un buzzer (chicharra) y un potenciómetro, la idea es generar
diversos tonos en el buzzer a partir del estado análogo del potenciómetro. Además se hace
uso de la función tone que es muy útil para generar diversas melodías
*/
int buzzer = 9; //Declara Pin del buzzer
int tono = 0; //Declara Pin del potenciómetro
void setup() // Se ejecuta cada vez que el Arduino se inicia
{
// No se configuran parámetros inciales, pero se debe
// colocar el encabezado de la función setup()
}
void loop()
{
//Variable entera donde se almacena el valor del potenciómetro
int sensor = analogRead(tono);
//Variable donde se escala la frecuencia de 100 a 5000Hz
int frecuencia = map(sensor,0,1023,100,5000);
//Variable entera para guardar el tiempo deseado en ms
int duracion = 250;
//Funcion tone(), que recibe:
// 1ra posición: Pin del elemento sonoro
// 2da posición: Frecuencia deseada en Hz
// 3ra posición: Duración del tono
tone(buzzer, frecuencia, duracion);
//Retardo
delay(100);
}
MEMORIA EEPROM PARA ALMACENAMIENTO
El EEPROM (Electrically-Erasable Programmable Read-Only Memory) que es una memoria
ROM programable y borrable eléctricamente, a diferencia de la EPROM que ha de borrarse
mediante un aparato que emite rayos ultravioletas. Son memorias no volátiles.
Aunque una EEPROM puede ser leída un número ilimitado de veces, sólo puede ser borrada
y reprogramada entre 100.000 y un millón de veces.
Para añadir su librería, la cabecera EEPROM:
Basta con incluir la directiva #include <EEPROM.H> en nuestro código.
FUNCIONES:
EEPROM.write(dirección, valor)
Escribe un valor en la EEPROM.
Dirección (Address): Disponemos de 511 celdas (int)
Valor (Value): Disponemos de 0 a 255 Tipo Byte)
EEPROM.read(dirección)
Lee un valor de la EEPROM
Value (Address): Disponemos de 511 celdas (int)
Retorna: Byte. (Podemos hacer cast a int)
Código de ejemplo (Desde la página oficial de Arduino)
WRITE
#include <EEPROM.H>
void setup() {
for (int i = 0; i < 512; i++)
EEPROM.write(i, i);
}
void loop() { }
READ
#include <EEPROM.H>
int a = 0;
int value;
void setup() {
Serial.begin(9600); }
void loop() {
value = EEPROM.read(a);
Serial.print(a); Serial.print("t");
Serial.print(value); Serial.println();
a = a + 1;
if (a == 512)
a = 0;
delay(500);
}
SENSOR DE TEMPERATURA LM35 CON PANTALLA LCD
En este experimento usaremos el sensor de temperatura LM35 y ademas de un pantalla LCD, de la cual
existe una librería en el Arduino.
El sensor LM35 el cual nos mide una temperatura de -55ºC a 150ºC y una precisión de 0.5ºC a 25ºC; este
sensor es suficientemente completo, se puede utilizar para realizar pequeños inventos o proyectos
#include <LiquidCrystal.h> //Incluir esta libreria para poder usar el lcd
int Ana1 = A0; //Entrada analogica de LM35
LiquidCrystal lcd(12,11,5,4,3,2); //Definimos la pantalla LCD
int Temp = 0;
char Grados = 'º';
void setup(){
Serial.begin(9600);
lcd.begin(16,2);
pinMode(13,OUTPUT);
digitalWrite(13, HIGH); //Activamos la retroiluminacion
}
void loop(){
Temp = analogRead(Ana1); //Leemos el valor de la entrada analogica
// Primero transformamos la lectura analógica de tensión a un valor de temperatura
Temp = (5.0 * Temp * 100.0)/1024.0;
Serial.print("Grados: ");//Mostramos los grados en el serial
Serial.print(Temp); Serial.print(Grados);
Serial.println("C");
//Mostramos los grados en la pantalla LCD
lcd.setCursor(0,0); //Con este comando decimos en que linea queremos escribir
lcd.print("Temperatura: ");
lcd.setCursor(0,1);
lcd.print(Temp);
lcd.setCursor(3,1);
lcd.print("°C");
delay(1000); //Al ser temperatura no hace falta leerlo tan seguido
}

Más contenido relacionado

La actualidad más candente

Presentazione Arduino
Presentazione ArduinoPresentazione Arduino
Presentazione Arduino
guest01fc9d
 
Microcontroladores: Microcontroladores PIC fundamentos y aplicaciones didácticos
Microcontroladores: Microcontroladores PIC fundamentos y aplicaciones didácticosMicrocontroladores: Microcontroladores PIC fundamentos y aplicaciones didácticos
Microcontroladores: Microcontroladores PIC fundamentos y aplicaciones didácticos
SANTIAGO PABLO ALBERTO
 

La actualidad más candente (20)

Introducción a arduino
Introducción a arduinoIntroducción a arduino
Introducción a arduino
 
Introduccion a arduino 97
Introduccion a arduino 97Introduccion a arduino 97
Introduccion a arduino 97
 
Presentazione Arduino
Presentazione ArduinoPresentazione Arduino
Presentazione Arduino
 
Manual basico de practicas con Arduino uno
Manual basico de practicas con Arduino unoManual basico de practicas con Arduino uno
Manual basico de practicas con Arduino uno
 
Presentación placa arduino
Presentación placa arduinoPresentación placa arduino
Presentación placa arduino
 
Microcontroladores PIC: Manual de practicas PIC C Compiler
Microcontroladores PIC: Manual de practicas PIC C CompilerMicrocontroladores PIC: Manual de practicas PIC C Compiler
Microcontroladores PIC: Manual de practicas PIC C Compiler
 
Arduino uno
Arduino unoArduino uno
Arduino uno
 
Microcontroladores: Microcontroladores PIC fundamentos y aplicaciones didácticos
Microcontroladores: Microcontroladores PIC fundamentos y aplicaciones didácticosMicrocontroladores: Microcontroladores PIC fundamentos y aplicaciones didácticos
Microcontroladores: Microcontroladores PIC fundamentos y aplicaciones didácticos
 
El PIC16F84
El PIC16F84El PIC16F84
El PIC16F84
 
Mis proyectos con Arduino
Mis proyectos con ArduinoMis proyectos con Arduino
Mis proyectos con Arduino
 
Arduino: Practicas con Arduino
Arduino: Practicas con ArduinoArduino: Practicas con Arduino
Arduino: Practicas con Arduino
 
Taller de introducción a Arduino FesTICval 2012
Taller de introducción a Arduino FesTICval 2012Taller de introducción a Arduino FesTICval 2012
Taller de introducción a Arduino FesTICval 2012
 
Arduino
ArduinoArduino
Arduino
 
Examen diagnostico mantenimiento equipo de computo 203 no2
Examen diagnostico mantenimiento equipo de computo 203 no2Examen diagnostico mantenimiento equipo de computo 203 no2
Examen diagnostico mantenimiento equipo de computo 203 no2
 
Arduino
ArduinoArduino
Arduino
 
Informe Seguidor De Linea
Informe Seguidor De LineaInforme Seguidor De Linea
Informe Seguidor De Linea
 
Programación PIC16F84A
Programación PIC16F84AProgramación PIC16F84A
Programación PIC16F84A
 
Arduino presentacion
Arduino presentacionArduino presentacion
Arduino presentacion
 
Arduino practicas
Arduino practicasArduino practicas
Arduino practicas
 
Basics of arduino uno
Basics of arduino unoBasics of arduino uno
Basics of arduino uno
 

Destacado

Teoria del poblamiento americano
Teoria del poblamiento americanoTeoria del poblamiento americano
Teoria del poblamiento americano
Antonio Jimenez
 
Presentación taller arduino
Presentación taller arduinoPresentación taller arduino
Presentación taller arduino
gruposirp
 
Hominizacion
HominizacionHominizacion
Hominizacion
Home
 
Evolución humana ppt
Evolución humana pptEvolución humana ppt
Evolución humana ppt
OSCAR MALO
 

Destacado (20)

Prehistoria 7° i parte
Prehistoria 7° i partePrehistoria 7° i parte
Prehistoria 7° i parte
 
Evolucion Humana
Evolucion HumanaEvolucion Humana
Evolucion Humana
 
El proceso de hominizacion
El proceso de hominizacionEl proceso de hominizacion
El proceso de hominizacion
 
HOMINIZACIÓN
HOMINIZACIÓNHOMINIZACIÓN
HOMINIZACIÓN
 
Libro kit básico arduino
Libro kit básico arduino Libro kit básico arduino
Libro kit básico arduino
 
Prehistoria y Primeras Civilizaciones
Prehistoria y Primeras CivilizacionesPrehistoria y Primeras Civilizaciones
Prehistoria y Primeras Civilizaciones
 
Evolucion del hombre a traves de la historia
Evolucion del hombre a traves de la historiaEvolucion del hombre a traves de la historia
Evolucion del hombre a traves de la historia
 
Repaso prehistoria
Repaso prehistoriaRepaso prehistoria
Repaso prehistoria
 
Teoria del poblamiento americano
Teoria del poblamiento americanoTeoria del poblamiento americano
Teoria del poblamiento americano
 
La paleohistoria
La paleohistoriaLa paleohistoria
La paleohistoria
 
Proceso de hominización. Alicia Arrabal Haro
Proceso de hominización. Alicia Arrabal HaroProceso de hominización. Alicia Arrabal Haro
Proceso de hominización. Alicia Arrabal Haro
 
Libro básico de arduino electrónica y programación varios autores
Libro básico de arduino  electrónica y programación   varios autoresLibro básico de arduino  electrónica y programación   varios autores
Libro básico de arduino electrónica y programación varios autores
 
La Evolución Humana y la Prehistoria
La  Evolución Humana y la PrehistoriaLa  Evolución Humana y la Prehistoria
La Evolución Humana y la Prehistoria
 
Presentación taller arduino
Presentación taller arduinoPresentación taller arduino
Presentación taller arduino
 
Hominizacion
HominizacionHominizacion
Hominizacion
 
Libro kit basico arduino
Libro kit basico arduinoLibro kit basico arduino
Libro kit basico arduino
 
Evolución Humana
Evolución HumanaEvolución Humana
Evolución Humana
 
La Hominizacion
La HominizacionLa Hominizacion
La Hominizacion
 
Evolución humana ppt
Evolución humana pptEvolución humana ppt
Evolución humana ppt
 
Manual programacion arduino
Manual programacion arduinoManual programacion arduino
Manual programacion arduino
 

Similar a GUIA BASICA ARDUINO

Similar a GUIA BASICA ARDUINO (20)

Tarjeta arduino
Tarjeta arduinoTarjeta arduino
Tarjeta arduino
 
Tarjeta arduino
Tarjeta arduinoTarjeta arduino
Tarjeta arduino
 
Estrategia de apoyo arduino uno
Estrategia de apoyo arduino unoEstrategia de apoyo arduino uno
Estrategia de apoyo arduino uno
 
Trababajo sobre placa arduino
Trababajo sobre placa arduinoTrababajo sobre placa arduino
Trababajo sobre placa arduino
 
Tarjeta arduino
Tarjeta arduinoTarjeta arduino
Tarjeta arduino
 
Tarjeta arduino
Tarjeta arduinoTarjeta arduino
Tarjeta arduino
 
Los Diferentes Arduinos y Sus Caracteristicas
Los Diferentes Arduinos y Sus CaracteristicasLos Diferentes Arduinos y Sus Caracteristicas
Los Diferentes Arduinos y Sus Caracteristicas
 
Tarjeta arduino
Tarjeta arduinoTarjeta arduino
Tarjeta arduino
 
Arduino
ArduinoArduino
Arduino
 
Arduino
ArduinoArduino
Arduino
 
Tipos de arduino y sus caracteristicas
Tipos de arduino y sus caracteristicasTipos de arduino y sus caracteristicas
Tipos de arduino y sus caracteristicas
 
Placa arduino
Placa arduinoPlaca arduino
Placa arduino
 
Informe escolar grupal sobre tarjeta arduino
Informe escolar grupal sobre tarjeta arduinoInforme escolar grupal sobre tarjeta arduino
Informe escolar grupal sobre tarjeta arduino
 
Tarjeta arduino (1)
Tarjeta arduino (1)Tarjeta arduino (1)
Tarjeta arduino (1)
 
Tarjeta arduino (1)
Tarjeta arduino (1)Tarjeta arduino (1)
Tarjeta arduino (1)
 
Tarjeta arduino (1)
Tarjeta arduino (1)Tarjeta arduino (1)
Tarjeta arduino (1)
 
Arduino
ArduinoArduino
Arduino
 
Arduino
ArduinoArduino
Arduino
 
Tarjeta arduino
Tarjeta arduinoTarjeta arduino
Tarjeta arduino
 
Tarjeta arduino
Tarjeta arduinoTarjeta arduino
Tarjeta arduino
 

Último

ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
gustavoiashalom
 
PRESENTACION NOM-009-STPS-TRABAJOS EN ALTURAS
PRESENTACION NOM-009-STPS-TRABAJOS EN ALTURASPRESENTACION NOM-009-STPS-TRABAJOS EN ALTURAS
PRESENTACION NOM-009-STPS-TRABAJOS EN ALTURAS
ejcelisgiron
 
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdfMODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
vladimirpaucarmontes
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
BRAYANJOSEPTSANJINEZ
 

Último (20)

Sesion 6 _ Curso Integrador II_TSZVQJ.pdf
Sesion 6 _ Curso Integrador II_TSZVQJ.pdfSesion 6 _ Curso Integrador II_TSZVQJ.pdf
Sesion 6 _ Curso Integrador II_TSZVQJ.pdf
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
 
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdf
 
UNIDAD II 2.pdf ingenieria civil lima upn
UNIDAD  II 2.pdf ingenieria civil lima upnUNIDAD  II 2.pdf ingenieria civil lima upn
UNIDAD II 2.pdf ingenieria civil lima upn
 
PRESENTACION NOM-009-STPS-TRABAJOS EN ALTURAS
PRESENTACION NOM-009-STPS-TRABAJOS EN ALTURASPRESENTACION NOM-009-STPS-TRABAJOS EN ALTURAS
PRESENTACION NOM-009-STPS-TRABAJOS EN ALTURAS
 
2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajas
 
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
 
Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...
 
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdfMODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
CALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSION
CALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSIONCALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSION
CALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSION
 
PostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDPostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCD
 
Herramientas de la productividad - Revit
Herramientas de la productividad - RevitHerramientas de la productividad - Revit
Herramientas de la productividad - Revit
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
 
programacion orientada a objetos poo.pptx
programacion orientada a objetos poo.pptxprogramacion orientada a objetos poo.pptx
programacion orientada a objetos poo.pptx
 
Gestion de proyectos para el control y seguimiento
Gestion de proyectos para el control  y seguimientoGestion de proyectos para el control  y seguimiento
Gestion de proyectos para el control y seguimiento
 
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
 
Desigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdfDesigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdf
 

GUIA BASICA ARDUINO

  • 1. MANUAL INTRODUCTORIO AL ARDUINO UNO PROYECTO DE INSTRUMENTACION ELECTRONICA ALUMNO DE ING. FISICA: CRISTIAN MONZON COELLO 2013
  • 2. INTRODUCCIÓN AL ARDUINO Arduino es una plataforma de electrónica abierta (open-source) para la creación de prototipos basada en software y hardware libre, flexible y fácil de usar. Enfocada a un público no experto como artistas, diseñadores, entusiastas de la electrónica, o cualquier interesado en crear entornos u objetos interactivos. Está basada en una placa con un micro controlador y un entorno de desarrollo, diseñada para facilitar el uso de la electrónica en proyectos multidisciplinares. El proyecto Arduino fue concebido en Italia en el año 2005, sus creadores son el zaragozano David Cuartielles, ingeniero electrónico y docente de la Universidad de Mälmo, Suecia y Massimo Banzi, italiano, diseñador y desarrollador Web. Su nombre viene del nombre del bar “Bar di Re Arduino” donde Massimo Banzi pasaba algunas horas, el cual a su vez viene del nombre de un antiguo rey italiano allá por el año 1002. Este proyecto acerca la electrónica a la gente común, pues hace frente a la programación compleja y cerrada de las plataformas especializadas existentes, con una plataforma propia, que utiliza software y hardware libre, además de presentarse como la solución para iniciar en el mundo de la electrónica/robótica con un bajo coste. Arduino es una herramienta para hacer que los ordenadores puedan sentir y controlar el mundo físico a través de tu ordenador personal. Es una plataforma de desarrollo de computación física que puede tomar información del entorno a través de sus pines de entrada, para esto toda una gama de sensores puede ser usada y puede afectar aquello que le rodea controlando luces, motores y otros actuadores. El microcontrolador en la placa Arduino se programa mediante el lenguaje de programación Arduino (basado en Wiring) y el entorno de desarrollo Arduino (basado en Processing). Hay multitud de diferentes versiones de placas Arduino: Como el Arduino UNO, así como el Duemilanove, que usan Atmel ATmega328. La anterior Diecimila, y las primeras unidades de Duemilanove usaban el Atmel ATmega168, mientras que las placas más antiguas usan el ATmega8. El Arduino Mega está basado en el ATmega1280. Además de muchas placas otras placas copias de Arduino, también son compatibles y legales debido a la filosofía abierta del Arduino.
  • 5. ARDUINO SHIELDS  El concepto de los shields nos permite apilar placas con diferentes funcionalidades, proporcionando flexibilidad al Arduino, para adaptarse a diferentes proyectos rápidamente, basta comprar el shield requerido. Ejemplos: _Shield Xbee - Este shield permite conectar inalámbricamente varios Arduino a distancias de 100 pies en edificios y 300 pies en el exterior usando el módulo Maxstream Xbee Zigbee. _Shield Motores- Este shield permite a Arduino controlar motores eléctricos de corriente continua, servos y motores paso a paso y leer encoders. _Shield Ethernet - Este shield permite a una placa Arduino conectarse a una red Ethernet y tener acceso a y desde Internet.  Muchas empresas ofrecen diferentes tipos de shields, acuerdo a lo que se requeriera obtener. Y si no se encontrara un shield adecuado, usted lo puede construir adaptándolo a la placa.
  • 9. ESPECIFICACIONES TECNICAS DEL ARDUINO UNO  Microcontrolador ATmega328  Voltaje de operación 5V  Voltaje de entrada (recomendado) 9-12 V  Voltaje de entrada (limite) 6-20 V  Digital I/O Pins 14 (con 6 salidas PWM)  Entradas analógicas Pins 6  DC corriente I/O Pin 40 mA  DC corriente 3.3V Pin 50 Ma  Conversor USB - Serie (chip FTDI)  Memoria Flash 32 KB (2 KB para el boot loader)  SRAM 1 KB  EEPROM 512 byte  Velocidad de reloj 16 MHz
  • 10. ARDUINO UNO La tarjeta Arduino UNO, es una placa basada en el microprocesador ATmega328. Tiene 13 pines para entradas/salidas digitales (6 de estas pueden ser usadas como salidas PWM), 6 pines para entradas analógicas, además de un puerto serial que permite realizar comunicación con periférico una conexión USB. También tiene un pulsador para resetear cualquier fallo que exista en los procesos que se vayan a realiza con la tarjeta. Una vez programado el Arduino, no necesita estar conectado al PC. Pines de alimentation (Power Pins) Bien alimentemos al Arduino mediante la conexión USB o mediante una fuente externa (recomendada de 9-12V), vamos a tener unas salidas de tensión continua debido a unos reguladores de tensión y condensadores de estabilización. Estos pines son:  VIN: se trata de la fuente tensión de entrada que contendrá la tensión a la que estamos alimentando al Arduino mediante la fuente externa.  5V: fuente de tensión regulada de 5V, esta tensión puede venir ya sea de pin VIN a través de un regulador interno, o se suministra a través de USB o de otra fuente de 5V regulada.  3.3V: fuente de 3.3 voltios generados por el regulador interno con un consumo máximo de corriente de 50mA.  GND: pines de tierra. Digital Inputs/Outputs  Cada uno de los 14 pines digitales se puede utilizar como una entrada o salida. Cada pin puede proporcionar o recibir un máximo de 40 mA y tiene una resistencia de pull- up (desconectado por defecto) de 20 a 50 kOhm. Sólo pueden leer/escribir dos valores. 0(LOW) y 1(HIGH). En el caso de Arduino, se trabaja con una lógica de 0-5V. Suele tomarlos valores como HIGH cuando son mayores a 1,5V. Además, algunos pines tienen funciones especializadas como:  Pin 0 (RX) y 1 (TX). Se utiliza para recibir (RX) y la transmisión (TX) de datos serie TTL.  Pin 2 y 3. Interrupciones externas. Se trata de pines encargados de interrumpir el programa secuencial establecido por el usuario.  Pin 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Estos pines son de apoyo a la comunicación SPI.  Pin 13. LED. Hay un LED conectado al pin digital 13. Cuando el pin es de alto valor, el LED está encendido, cuando el valor está bajo, es apagado.
  • 11.  Pin 3, 5, 6, 9, 10 y 11. PWM (modulación por ancho de pulso) que emiten pulsos de 5V para que Vmedia sea de un valor determinado. Constituyen 6 bits de salida PWM con la función analogWrite (). PWM es muy utilizado para controlar la velocidad de motores o la intensidad de diodos LED. También es utilizado para indicar el ángulo de giro de un servomotor. Analog Inputs El Arduino posee 6 entradas analógicas, etiquetadas desde la A0 a A5, cada una de las cuales ofrecen 10 bits de resolución (es decir, 1024 estados). Por defecto, tenemos una tensión de 5V, pero podemos cambiar este rango utilizando el pin de AREF y utilizando la función analogReference(), donde le introducimos una señal externa de continua que la utilizara como referencia.
  • 12. INSTALACION DEL ARDUINO  El IDE Arduino funciona en Windows, Mac OS X y Linux solo se tiene que descargar de: http://arduino.cc/es/Main/Software para el sistema operativo empleado. Windows XP, vista, 7 Si tu computador tiene de sistema operativo Windows en versión 7, Vista o XP, debes realizar la siguiente sucesión de sencillos pasos:  Conectar la placa Arduino Uno al PC y ver este aviso. No nos debemos pre-ocupar  Visitar Panel de control y luego Administrador de dispositivos, allí buscar la siguiente opción  Click derecho sobre Dispositivo desconocido y luego sobre la opción Actua-lizar software del controlador.
  • 13.  Ingresar a la opción Buscar software de controlador en el equipo  Examinar y buscar la carpeta de Arduino previamente descomprimida. Dentro de esa carpeta acceder a la carpeta Drivers y dar Aceptar
  • 14.  Una vez buscamos la carpeta de Drivers le damos Siguiente  A veces en algunas máquinas aparecerá esta ventana:
  • 15.  Recibimos la confirmación del Puerto COM asignado, este número de Puerto COM es muy importante tenerlo en cuenta a la hora de programar. MAC OS X (v. 10.3.9 o posterior) 1. Descargar el entorno Arduino. Para programar la placa Arduino necesitas el entorno Arduino. Descarga la última versión desde http://www.arduino.cc/en/Main/Software. Cuando termine la descarga, descomprime el archivo descargado. Asegurate de conservar la estructura de carpetas. Haz doble click en la carpeta para abrirla. Debería haber archivos y subcarpetas en su interior. 2. Instalar los drivers USB. Si estas usando un Arduino USB, necesitarás instalar los drivers para el chip FTDI de la placa. Estos pueden encontrarse en el directorio drivers de la distribución Arduino. Si tienes un Mac más antiguo como un Powerbook, iBook, G4 o G5, deberías usar los drivers PPC: FTDIUSBSerialDriver_v2_1_9.dmg. Si tienes un Mac más nuevo como un MacBook, Mac Book Pro o Mac Pro, necesitas los drivers de Intel: FTDIUSBSerialDriver_v2_2_9_Intel.dmg. Haz doble click para montar la imagen del disco y ejecutar el FTDIUSBSerialDriver.pkg La última versión en drives: http://www.ftdichip.com/Drivers/VCP.htm.
  • 16. GNU/Linux Estas instrucciones se centran en la distribución Ubuntu1, para más información sobre cómo instalar el entorno Arduino en otras distribuciones visitar http://www.arduino.cc/playground/Learning/Linux. 1. Ejecutar el Gestor de Paquetes Synaptic (en Sistema > Administración). 2. Primero necesitas habilitar los repositorios ‘’Universe’’ y ‘’Multiverse’’ para que puedas acceder a todos los paquetes que necesitas. Ir a Configuración > Repositorios.  Haz click en Añadir.  Marca ‘’Software restringido por copyright o cuestiones legales (multiverse)’’ y ‘’Software libre mantenido por la comunidad (universe)’’ y haz click en Añadir.  Haz click en Cerrar y click en Cerrar en el diálogo ‘’Los repositorios han cambiado’’. 3. Haz click en el botón Recargar de la barra de herramientas. 4. Marca para instalar: ‘’sun-java5-jre’’, ‘’gcc-avr’’, ‘’avr-libc’’. 5. Haz click en Aplicar en la barra de herramientas. 6. Haz click en Aplicar en el cuadro de diálogo. Esto instalará los paquetes seleccionados. 7. Acepta la licencia de Java. 8. Espera hasta completar la instalación: el cuadro de diálogo dirá _Cambios aplicados_. Haz click en Cerrar. 9. Cierra Synaptic. 10. Descarga la distribición de GNU/Linux de Arduino desde http://www.arduino.cc/en/ Main/Software. Haz doble click en el archivo .zip y arrastra la carpeta que contiene a algún lugar (por ejemplo el Escritorio). 11. Ejecuta el Terminal (en Aplicaciones > Accesorios). 12. Escribe ‘’sudo update-alternatives -config java’’ y presiona Enter. Teclea el número de opción que tiene ‘’java-1.5.0-sun’’ en él y presiona Enter. Esto hará de la versión de Java de Sun la predeterminada de tu sistema (necesaria porque la versión GNU todavía no soporta todo lo necesitado por el entorno Arduino). 13. Haz doble click en ‘’arduino’’ en el directorio de aplicación de Arduino. Esto debería lanzar un diálogo preguntando dónde guardas los archivos de tus rutinas de Arduino. Un directorio ‘’Arduino’’ en tu carpeta home es la ubicación típica. Haz click en OK. El entorno Arduino debería abrirse.
  • 17. CONOCIENDO EL ENTORNO DE DESARROLLO DE ARDUINO El entorno Arduino no precisa instalación, se lanza desde la misma carpeta en la que se haya descargado, haciendo doble clic en “arduino.exe”. Una vez se ha iniciado el entorno, aparecerá la ventana principal, que contiene las siguientes partes principales (luego se verán con detalle cada una de ellas)
  • 18. Para que la computadora reconozca a la placa Arduino, primero tenenos que configurar el tipo de placa una vez abierta la aplicación nos vamos a Tools>Board>Arduino UNO Además de elegir el puerto serial en el cual trabajamos, en este caso el COM30, nos vamos a: Tools>Serial Port>COM 30
  • 19. PROGRAMACIÓN DE UN ARDUINO Vamos a comenzar a programar Arduino. Arduino utiliza una mezcla curiosa de lenguajes de programación. Esta implementado en Java, pero para programar los chips utiliza C++. Un programa diseñado para ejecutarse sobre un Arduino se conoce como sketch, que podríamos traducir como “boceto” o “borrador”. Un sketch siempre tiene la misma estructura. Además el IDE de Arduino, nos permite adjuntar librerías como en el lenguaje C++, por ejemplo si queremos adjuntar la librería EEPROM, escribimos en la parte superior, como cabecera del sketch: #include <EEPROM.h> Para ver más librerías nos vamos a: Sketch >Importar Libreria>…..
  • 20. FUNCIONES BÁSICAS  E/S DIGITALES pinMode(pin,modo) Configura el pin especificado para comportarse como una entrada (INPUT) o una salida (OUTPUT). Ejm: pinMode(Pin13, OUTPUT) digitalWrite(pin,valor) Asigna el valor HIGH (5V) o LOW (0V) a un pin digital. Ejm: digitalWrite(Pin13 , HIGH); digitalRead(pin) Lee el valor de un pin digital especificado, HIGH o LOW. Ejm: val = digitalRead(Pin13);  E/S ANALÓGICAS analogRead(pin) Lee el valor de tensión en el pin analógico especificado. La placa Arduino posee 6 canales conectados a un conversor analógico digital de 10 bits. Esto significa que convertirá tensiones entre 0 y 5 voltios a un número entero entre 0 y 1023. Esto proporciona una resolución en la lectura de: 5 voltios / 1024 unidades, es decir, 0.0049 voltios (4.9mV) por unidad. El rango de entrada puede ser cambiado usando la función analogReference(). Ejm: val = analogRead(Pin3) analogWrite(pin,valor) Escribe un valor analógico (PWM) en un pin. Puede ser usado para controlar la luminosidad de un LED o la velocidad de un motor. Después de llamar a la función analogWrite(), el pin generará una onda cuadrada estable con el ciclo de trabajo especificado hasta que se vuelva a llamar a la función analogWrite() (o una llamada a las funciones digitalRead() o digitalWrite() en el mismo pin). La frecuencia de la señal PWM será de aproximadamente 490 Hz. los valores de analogRead van desde 0 a 1023 y los valores de analogWrite van desde 0 a 255 Parametros:  pin: Es el pin en el cual se quiere generar la señal PWM.  valor: El ciclo de trabajo deseado comprendido entre 0 (siempre apagado) y 255 (siempre encendido). Ejm: val = analogRead(analogPin); analogWrite(ledPin, val / 4);
  • 21.  COMUNICACIÓN SERIE Se utiliza para la comunicación entre la placa Arduino y un ordenador u otros dispositivos. Todas las placas Arduino tienen al menos un puerto serie Serial. Se comunica a través de los pines digitales 0 (RX) y 1 (TX), así como con el ordenador mediante USB. Por lo tanto, si utilizas estas funciones, no puedes usar los pines 0 y 1 como entrada o salida digital. Puedes utilizar el monitor serial del Arduino para comunicarte con la placa. Haz clic en el botón del monitor de puerto serie en la barra de herramientas y selecciona la misma velocidad en baudios utilizada en la llamada a begin(). Serial.begin(speed) Establece la velocidad de datos en bits por segundo (baudios) para la transmisión de datos en serie. Para comunicarse con el ordenador, utilice una de estas velocidades: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 o 115200. Ejm: Serial.begin(9600); Serial.read() Lee los datos entrantes del puerto serie. Ejm; Byte = Serial.read(); Serial.print(val,[format]) Imprime los datos al puerto serie como texto ASCII. val: el valor a imprimir de cualquier tipo format: especifica la base (formato) a usar; los valores permitidos son BYTE, BIN (binarios o base 2), OCT (octales o base 8), DEC (decimales o base 10), HEX (hexadecimales o base 16). Para números de coma flotante, este parámetro especifica el número de posiciones decimales a usar. Ejemplos: o Serial.print(78) imprime "78" o Serial.print(78, DEC) imprime "78” o Serial.println(1.23456, 2) imprime "1.23" Serial.println(val,[format]) Imprime los datos al puerto serie como texto ASCII seguido de un retorno de carro (ASCII 13, o 'r') y un carácter de avance de línea (ASCII 10, o 'n'). Ejemplos: o Serial.println(analogValue); // imprime como ASCII decimal o Serial.println(analogValue, HEX);// imprime como ASCII hexadecimal Serial.available() Devuelve el número de bytes (caracteres) disponibles para ser leídos por el puerto serie. Se refiere a datos ya recibidos y disponibles en el buffer de recepción del puerto (que tiene una capacidad de 128 bytes). Ejemplo: if (Serial.available() > 0) { } //realiza la lectura del puerto serie
  • 22. Para más referencias sobre el lenguaje usado en el IDE de Arduino, además sobre los tipos de variables a declarar, el manejo de estructura de del programa, la sintaxis empleada en él, para aprender a usar las librerías y entre otros, podemos ayudarnos con la página web de Arduino, para una referencia más detallada de los comandos empleados: http://arduino.cc/es/Reference/HomePage
  • 23. CARGANDO MI PRIMER PROGRAMA El primer programa que podemos cargar, muy usado como para empezar en el Arduino, algo como un ‘’HOLA MUNDO’’ en la placa Arduino, es el prendido y apagado de un led, usando algún pin digital, en este caso el 13 que tiene una resistencia interna, además de un led de estado, que se ubica al frente del pin 13 en el Arduino. Para ello solo tenemos que buscar en el IDE: Archivo>>01.Basics>>Blink Entonces tenemos, el siguiente programa, el cual lo cargamos con el botón redondo con la flechita, que está en la parte superior del IDE: // Blink: Prende un LED por un segundo, y lo apaga por otro segundo, así repetidamente. int led = 13; void setup() { pinMode(led, OUTPUT); // inicializamos el pin 13 con salida } void loop() { digitalWrite(led, HIGH); // enciende el LED delay(1000); // 1000 milisegundos digitalWrite(led, LOW); // apaga el LED delay(1000); // 1000 milisegundos }
  • 24. Entonces notamos la intermitencia del foquito, con un periodo de un segundo, tiempo que podemos variar en el paréntesis de delay( ) del programa.
  • 25. ENCENDER UN LED CON UN PULSADOR /* Encender LED con un pulsador Oprimir un pulsador y mientras este se mantenga accionado un LED se enciende */ int pulsador=2; //Pin donde se encuentra el pulsador, entrada int led=13; //Pin donde se encuentra el LED, salida void setup() // Se ejecuta cada vez que el Arduino se inicia { pinMode(pulsador, INPUT); //Configurar el pulsador como una entrada pinMode(led,OUTPUT); //Configurar el LED como una salida } void loop() { //Condicional para saber estado del pulsador if (digitalRead(pulsador)==HIGH) //Pulsador oprimido { digitalWrite(led,HIGH); //Enciende el LED } else //Pulsador NO oprimido { digitalWrite(led,LOW); //Apaga el LED } }
  • 26. LECTURA SERIAL DE UNA ENTRADA ANÁLOGA /* LECTURA SERIAL DE ENTRADA ANÁLOGA Leer una entrada análoga y mostrar por la pantalla del Computador (consola serial) el valor luego de girar el potenciómetro */ void setup() // Se ejecuta cada vez que el Arduino se inicia { Serial.begin(9600); //Inicia comunicación serial } void loop() { //Guardar en una variable entera el valor del potenciómetro 0 a 1024 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 serial delay(100); }
  • 27. ESCRITURA SERIAL /* ESCRITURA SERIAL Consiste en escribir por la pantalla del computador (consola serial) una letra predeterminada, la primera vez que se escriba está un LED se enciende, si se vuelve a escribir por segunda vez el LED se apaga. */ int led = 13; //Pin donde se encuentra el LED, salida char leer; //Variable donde se almacena la letra boolean prendido=false; //Estado LED la primera vez, apagado void setup() // Se ejecuta cada vez que el Arduino se inicia { Serial.begin(9600); //Inicia comunicación serial pinMode(led, OUTPUT); //Configurar el LED como una salida } void loop() { //Guardar en una variable el valor de la consola serial leer=Serial.read(); // Si es la letra 'a' y además el LED está apagado if ( (leer=='a') && (prendido==false) ) { digitalWrite(led,HIGH); // Enciende el LED prendido=true; // Actualiza el estado del LED } // Si es la letra 'a' y además el LED está encendido else if ( (leer=='a') && (prendido==true) ) { digitalWrite(led,LOW); // Apaga el LED prendido=false; // Actualiza el estado del LED } }
  • 28. ENCENDER UN LED POR PWM /* ENCIENDE/APAGA UN LED DE FORMA PROPORCIONAL Programa que enciende proporcionalmente un LED cuando llega a su máximo punto de brillo comienza a apagarse proporcionalmente. */ int brillo = 0; //Variable de brillo inicia en 0 int variacion = 5; //Variable de incremento configurada de 5 en 5 int led = 9; //Pin donde se encuentra el LED, salida void setup () // Se ejecuta cada vez que el Arduino se inicia { pinMode(led, OUTPUT); //Configurar el LED como una salida } void loop () { // Escritura analoga (PWM) en el LED escribo el valor de brillo analogWrite(led, brillo); // Incremento la variable brillo de 5 en 5 brillo = brillo + variacion; // Nota: PWM ----> 0 - 255 // Si el brillo es 0 o 255 if (brillo == 0 || brillo == 255) variacion = -variacion; //La variación se vuelve negativa delay (30); //Tiempo de incremento en el brillo }
  • 29. CONTROL ON/OFF CON POTENCIÓMETRO /* Control ON/OFF 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, es un sistema con control ON/OFF */ void setup() // Se ejecuta cada vez que el Arduino se inicia { Serial.begin(9600); //Inicia comunicación serial pinMode(13,OUTPUT); //Configurar el pin 13 como una salida } void loop(){ //Guardar en una variable el valor de la lectura análoga int valor = analogRead(A0); Serial.println(valor); //Imprime el valor por la consola //Si el valor es mayor o igual a 500 if (valor >= 500) { digitalWrite(13,HIGH); //Enciende el LED en el pin 13 } //Si el valor es menor a 500 else { digitalWrite(13,LOW); //Apaga el LED en el pin 13 } delay(100); //Retardo de 100ms para ver los datos de la consola }
  • 30. CONTROL DE UN LED CON UNA FOTOCELDA //Programa que enciende un LED de manera proporcional a la cantidad de luz que incida en una fotocelda. void setup() // Se ejecuta cada vez que el Arduino se inicia { Serial.begin(9600); //Inicia comunicación serial pinMode(9,OUTPUT); //Configurar el pin 9 como una salida de PWM } void loop(){ //Guardar en una variable el valor de la lectura análoga de la fotocelda int foto = analogRead(A0); //Verifica el valor máximo y realizar una conversión int conversion = 780 - foto; //Condicional para establecer un valor absoluto if ( conversion < 0) conversion = conversion * -1; //Multiplicar por -1 porque es negativo Serial.print("Foto : "); //Imprimir datos del valor de la lectura análoga de la fotocelda Serial.print(foto); Serial.println(""); Serial.print("Conv : "); //Imprimir datos del valor de la conversión Serial.print(conversion); Serial.println(""); analogWrite(9, conversion); //Escritura análoga de PWM en el LED de acuerdo a la conversión delay(100); //Retardo para datos en la consola }
  • 31. CONTADOR DE PULSOS //CONTADOR DE PULSOS: Programa que muestra por pantalla (consola serial) el número de veces que el pulsador //ha sido presionado, se realiza un proceso que de acuerdo al número de pulsos se enciende un LED int conta = 0; //Variable para guardar el conteo de los pulsos void setup() // Se ejecuta cada vez que el Arduino se inicia { Serial.begin(9600); //Inicia comunicación serial pinMode(2,INPUT); //Configura el pin 2 como una entrada, pulsador pinMode(13,OUTPUT); //Configura el pin 13 como una salida, LED } void loop() { if ( digitalRead(2) == HIGH ) // Si el pulsador esta oprimido { if ( digitalRead(2) == LOW ) // Si el pulsador no está oprimido, flanco de bajada { conta++; //Incrementa el contador Serial.println(conta); //Imprime el valor por consola delay (100); // Retardo } } if (conta==5) // Si el valor del contador es 5 { digitalWrite(13,HIGH); //Enciende el LED } if (conta==8) // Si el valor del contador es 8 { digitalWrite(13,LOW); // Apaga el LED } }
  • 32. LED RGB APOYADO DE TABLA DE COLORES //Programa que hace uso de una función llamada color para generar diversas tonalidades en un LED RGB int ledRojo = 9; //Declara Pin LED Rojo int ledVerde=10; //Declara Pin LED Verde int ledAzul=11; //Declara Pin LED Azul void setup() // Se ejecuta cada vez que el Arduino se inicia { pinMode(ledRojo,OUTPUT); //El LED Rojo como una salida pinMode(ledVerde,OUTPUT); //El LED Verde como una salida pinMode(ledAzul,OUTPUT); //El LED Azul como una salida } void loop() { // Llamado a la función Color que recibe color(255,0,0); //Rojo, 1er posicion: Intensidad Rojo delay(1000); color(0,255,0); //Verde, 2da posición: Intensidad Verde delay(1000); color(0,0,255); //Azul, 3ra posición: Intensidad Azul delay(1000); color(255,255,255); //Blanco delay(1000); color(255,0,255); //Magenta delay(1000); color(255,128,0); //Naranja delay(1000); } void color(int rojo, int verde, int azul){ //Funcion color analogWrite(ledRojo, 255-rojo); //Escritura de PWM del color Rojo analogWrite(ledVerde, 255-verde); //Escritura de PWM del color Verde analogWrite(ledAzul, 255-azul); //Escritura de PWM del color Azul }
  • 33. CONTROL ON/OFF DE UN MOTOR Para este experimento necesitamos un transistor NPN, para darle potencia al motor, al pequeño motor. Armamos el siguiente esquema con los componentes con el Arduino. Tener en cuenta la posición de las patas del transistor de acuerdo al grafico.
  • 34. CONTROL ON/OFF DE UN MOTOR /* Programa que hace uso de un motor y un pulsador, mientras se mantenga pulsado, el motor debe estar encendido (ON) de lo contrario debe estar apagado (OFF) */ int pulsador =7; //Declara Pin del pusaldor int motor=3; //Declara Pin del motor void setup() // Se ejecuta cada vez que el Arduino se inicia { pinMode(pulsador,INPUT); //El pulsador como una entrada pinMode(motor,OUTPUT); //El motor como una salida } void loop() { // Si el pulsador se encuentra oprimido if(digitalRead(pulsador) == HIGH){ digitalWrite(motor,HIGH); //Enciende el motor }else{ //si el pulsador no está oprimido digitalWrite(motor,LOW); //Apaga el motor } }
  • 35. CONTROL POR PWM DE UN MOTOR
  • 36. CONTROL POR PWM DE UN MOTOR /* Control por PWM de un motor Programa que hace uso de un motor y la Consola serial de Arduino, tiene la posibilidad de configurar al motor 5 velocidades distintas, desde el teclado del PC puedes enviarle la velocidad deseada. Las 5 velocidades se configuran con 5 PWM distintos. */ int motor=3; //Declara Pin del motor void setup() // Se ejecuta cada vez que el Arduino se inicia { Serial.begin(9600); //Inicia la comunicacion serial Arduino-PC } void loop() { // Si hay algun valor en la Consola Serial if (Serial.available()){ //Variable donde se guarda el caracter enviado desde teclado char a = Serial.read(); // Si el caracter ingresado esta entre 0 y 5 if (a>='0' && a<='5'){ //Variable para escalar el valor ingresado a rango de PWM int velocidad = map(a,'0','5',0,255); //Escritura de PWM al motor analogWrite(motor,velocidad); //Mensaje para el usuario Serial.print("El motor esta girando a la velocidad "); Serial.println(a); }else{ // Si el caracter ingresado NO esta entre 0 y 5 //Mensaje para el usuario Serial.print("Velocidad invalida"); Serial.println(a); } } }
  • 37. SERVOMOTOR CONTROLADO CON UN POTENCIOMETRO // Usamos la librería Servo que ya tiene funciones predeterminadas #include <Servo.h> Servo miServo; // Creamos un objeto Servo para controlar nuestro servo int potenciómetro = 0; // Potenciómetro en el Pin Analógico 0 int valor; // Variable para guardar la lectura del potenciómetro void setup() { miServo.attach(9); // Conectamos el servo en el Pin PWM 9 } void loop() { valor = analogRead(potenciómetro); // Leemos el valor del potenciómetro valor = map(valor, 0, 1023, 0, 179); // Mapeamos su valor al rango del servo [0-180] miServo.write(valor); // Le pasamos al servo el valor escalado delay(15); // Retraso de 15 milisegundos para refrescar el servo }
  • 38. GENERAR TONOS CON UN BUZZER
  • 39. GENERAR TONOS CON UN BUZZER /* GENERAR TONOS CON UN BUZZER Programa que hace uso de un buzzer (chicharra) y un potenciómetro, la idea es generar diversos tonos en el buzzer a partir del estado análogo del potenciómetro. Además se hace uso de la función tone que es muy útil para generar diversas melodías */ int buzzer = 9; //Declara Pin del buzzer int tono = 0; //Declara Pin del potenciómetro void setup() // Se ejecuta cada vez que el Arduino se inicia { // No se configuran parámetros inciales, pero se debe // colocar el encabezado de la función setup() } void loop() { //Variable entera donde se almacena el valor del potenciómetro int sensor = analogRead(tono); //Variable donde se escala la frecuencia de 100 a 5000Hz int frecuencia = map(sensor,0,1023,100,5000); //Variable entera para guardar el tiempo deseado en ms int duracion = 250; //Funcion tone(), que recibe: // 1ra posición: Pin del elemento sonoro // 2da posición: Frecuencia deseada en Hz // 3ra posición: Duración del tono tone(buzzer, frecuencia, duracion); //Retardo delay(100); }
  • 40. MEMORIA EEPROM PARA ALMACENAMIENTO El EEPROM (Electrically-Erasable Programmable Read-Only Memory) que es una memoria ROM programable y borrable eléctricamente, a diferencia de la EPROM que ha de borrarse mediante un aparato que emite rayos ultravioletas. Son memorias no volátiles. Aunque una EEPROM puede ser leída un número ilimitado de veces, sólo puede ser borrada y reprogramada entre 100.000 y un millón de veces. Para añadir su librería, la cabecera EEPROM: Basta con incluir la directiva #include <EEPROM.H> en nuestro código. FUNCIONES: EEPROM.write(dirección, valor) Escribe un valor en la EEPROM. Dirección (Address): Disponemos de 511 celdas (int) Valor (Value): Disponemos de 0 a 255 Tipo Byte) EEPROM.read(dirección) Lee un valor de la EEPROM Value (Address): Disponemos de 511 celdas (int) Retorna: Byte. (Podemos hacer cast a int)
  • 41. Código de ejemplo (Desde la página oficial de Arduino) WRITE #include <EEPROM.H> void setup() { for (int i = 0; i < 512; i++) EEPROM.write(i, i); } void loop() { } READ #include <EEPROM.H> int a = 0; int value; void setup() { Serial.begin(9600); } void loop() { value = EEPROM.read(a); Serial.print(a); Serial.print("t"); Serial.print(value); Serial.println(); a = a + 1; if (a == 512) a = 0; delay(500); }
  • 42. SENSOR DE TEMPERATURA LM35 CON PANTALLA LCD En este experimento usaremos el sensor de temperatura LM35 y ademas de un pantalla LCD, de la cual existe una librería en el Arduino. El sensor LM35 el cual nos mide una temperatura de -55ºC a 150ºC y una precisión de 0.5ºC a 25ºC; este sensor es suficientemente completo, se puede utilizar para realizar pequeños inventos o proyectos
  • 43. #include <LiquidCrystal.h> //Incluir esta libreria para poder usar el lcd int Ana1 = A0; //Entrada analogica de LM35 LiquidCrystal lcd(12,11,5,4,3,2); //Definimos la pantalla LCD int Temp = 0; char Grados = 'º'; void setup(){ Serial.begin(9600); lcd.begin(16,2); pinMode(13,OUTPUT); digitalWrite(13, HIGH); //Activamos la retroiluminacion } void loop(){ Temp = analogRead(Ana1); //Leemos el valor de la entrada analogica // Primero transformamos la lectura analógica de tensión a un valor de temperatura Temp = (5.0 * Temp * 100.0)/1024.0; Serial.print("Grados: ");//Mostramos los grados en el serial Serial.print(Temp); Serial.print(Grados); Serial.println("C"); //Mostramos los grados en la pantalla LCD lcd.setCursor(0,0); //Con este comando decimos en que linea queremos escribir lcd.print("Temperatura: "); lcd.setCursor(0,1); lcd.print(Temp); lcd.setCursor(3,1); lcd.print("°C"); delay(1000); //Al ser temperatura no hace falta leerlo tan seguido }