Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DURACIN 16 HORAS
www.arduino.cc
www.arduino.cc
www.arduino.cc
QU ES ARDUINO?
QU ES ARDUINO?
www.arduino.cc
POR QU ARDUINO?
Hay muchos otros microcontroladores y plataformas de
microcontroladores disponibles para la computacin
fsica. Microchip, Parallax Basic Stamp, Netmedia de BX24, Phidgets, Handyboard del MIT, y muchos otros
ofrecen una funcionalidad similar. Todas estas
herramientas toman los detalles complicados de la
programacin de microcontroladores y se envuelve en
un paquete fcil de usar. Arduino tambin simplifica el
proceso de trabajar con los microcontroladores, pero
ofrece algunas ventajas para los profesores, estudiantes
y aficionados interesados sobre otros sistemas:
Asequible: Las placas Arduino son relativamente baratas
en comparacin con otras plataformas de
microcontroladores. La versin menos costosa del
mdulo Arduino puede ser ensamblado a mano, e
incluso los mdulos de Arduino preensamblados
cuestan menos de 50 $.
www.arduino.cc
POR QU ARDUINO?
Multiplataforma: El software de Arduino se ejecuta en
Windows, Macintosh OSX y sistemas operativos
Linux. La mayora de los sistemas de microcontrolador
se limitan a Windows.
Simple medio ambiente, programacin clara: El
entorno de programacin de Arduino es fcil de usar
para los principiantes, pero lo suficientemente
complejo para usuarios avanzados para aprovechar as
la flexibilidad. Para los profesores, se basa
convenientemente en el entorno de programacin
Processing, para que los estudiantes que estn
aprendiendo a programar en ese entorno estarn
familiarizados con la apariencia de Arduino
www.arduino.cc
POR QU ARDUINO?
El cdigo abierto y el software de Arduino extensible: se
publica como herramientas de cdigo abierto, disponible para
la extensin por programadores experimentados. El idioma se
puede ampliar a travs de bibliotecas de C ++, y la gente que
quiere entender los detalles tcnicos se puede dar el salto de
Arduino para el lenguaje de programacin AVR C en el que se
basa. Del mismo modo, puede agregar cdigo AVR-C
directamente en sus programas de Arduino si quieres.
El cdigo abierto y el hardware ampliable: El Arduino se basa
en la familia de microcontroladores
de Atmel
ATMEGA8 y ATmega168. Los planes para los mdulos estn
publicados bajo una licencia de Creative Commons, por lo que
los diseadores de circuitos con experiencia pueden hacer su
propia
versin
del
mdulo,
amplindolo
y
mejorndolo. Incluso los usuarios con poca experiencia
pueden construir la versin tablero del mdulo con el fin de
entender cmo funciona y ahorrar dinero.
www.arduino.cc
www.arduino.cc
www.arduino.cc
www.arduino.cc
HASTA 20 MHZ
HASTA 20 MHZ
8K FLASH
32K FLASH
2K RAM
1K EEPROM
3 TIMERS
4 TIMERS
COMUNICACIN I2C
COMUNICACIN I2C
NO POSEE
Prof. Luis Zurita
www.arduino.cc
www.arduino.cc
PINES
COMUNICACIN
SERIAL
CONECTOR
USB
CONECTOR
ICSP
ATMEGA328P
CONECTOR
ALIMENTACIN
9-12VDC
www.arduino.cc
www.arduino.cc
www.arduino.cc
www.arduino.cc
www.arduino.cc
www.arduino.cc
CAMBIO DE IDIOMA
Seleccione: Archivo Preferencias
www.arduino.cc
REA DE
TRABAJO
Qu es un Sketch?
Es el nombre que
usa Arduino para un
programa.
Es la unidad de
cdigo que se sube
y ejecuta en la placa
Arduino
Sketch: Bosquejo,
esquema, croquis
ZONA DE
ESTADO Y
MENSAJES
DE ERROR
www.arduino.cc
ESTRUCTURA
DEUN
UN PROGRAMA
ESTRUCTURA
DE
PROGRAMA
La funcin void setup ( ) se utiliza cuando se inicia un
boceto (Sketch). Se usa para inicializar variables, modos
de pines, uso de libreras, etc La funcin de setup slo se
ejecutar una vez, despus de cada arranque o reinicio
de la placa Arduino.
Despus de crear la funcin setup ( ), la funcin void
loop ( ) no hace exactamente lo que su nombre indica, y
se ejecuta bucles de forma consecutiva, lo que permite al
programa cambiar y responder mientras se ejecuta. La
void setup() {
seccin del cdigo
ensetup
el code
loophere,
( )tose
para controlar
// put your
run utiliza
once:
} placa Arduino.
activamente la
www.arduino.cc
void loop() {
// put your main code here, to run
repeatedly:
}
ESTRUCTURA
DEUN
UN PROGRAMA
ESTRUCTURA
DE
PROGRAMA
Los comentarios se pueden realizar de dos maneras:
Por bloque de lneas:
/*
Comentario del programa
*/
Por lneas:
// Comentario del
// Programa
Los comentarios no son ledos por el compilador, por lo
void setup() {
que puedes escribir
lo que
quieras
despus de ella. Al
// put your setup
code here,
to run once:
}
comentar su cdigo
como este puede ser particularmente
void loop()tanto
{
til para explicar,
a s mismo y a otros, cmo
// put your main code here, to run
funciona su programa
repeatedly: paso a paso.
www.arduino.cc
ESTRUCTURA DE UN PROGRAMA
Variables:
Una variable es un lugar donde se almacena un dato.
Posee un nombre, un tipo y un valor. Por ejemplo, la lnea
del sketch Blink declara una variable con el nombre led, de
tipo int, y con el valor inicial 13. Esta siendo utilizada para
indicar que pin de Arduino se conecta al LED. Cada vez que
el nombre led aparece en el cdigo, su valor ser utilizado.
En este caso, la persona que escribi el cdigo podra no
haberse molestado en definir la variable led y utilizar
simplemente 13 en todas las partes en que debiese
especificar el nmero del pin.
www.arduino.cc
ESTRUCTURA DE UN PROGRAMA
La ventaja de utilizar una variable es que se hace mucho
ms fcil mover el LED a un pin diferente: solo necesitas
editar la lnea en que se asigna el valor inicial a la variable.
Con frecuencia, el valor de una variable cambiar a
medida que se ejecuta el sketch.
int led = 13; // Pin 13 tiene un LED conectado en la
// mayora de las placas Arduino
// darle un nombre: El mensaje " Pin 13 tiene un LED
// conectado en la mayora de las placas Arduino " es un
// comentario.
www.arduino.cc
TIPOS DE DATOS.
Arduino trabaja con los siguientes tipos de variables:
Especificacin Significado
Tamao
Rango
int
entero
2 bytes
-32768 to 32767
unsigned int
Entero positivo
2 bytes
long
Entero de 32 bits
4 bytes
-2147483648 a
2147483647
unsigned long
Entero de 32 bits
positivo
4 bytes
0 a 4294967295
float
Coma flotante
4 bytes
3.4028235E+38 to
-3.4028235E+38
double
Coma flotante
4 bytes
boolean
Booleano
1 byte
char
Carcter
1 byte
-128 to 127
byte
Entero 8 bits
1 byte
0 to 255
string
void
www.arduino.cc
Sin valor
nulo
Ninguno
Prof. Luis Zurita
www.arduino.cc
www.arduino.cc
www.arduino.cc
PINES
COMUNICACIN
SERIAL
CONECTOR
USB
CONECTOR
ICSP
ATMEGA328P
CONECTOR
ALIMENTACIN
9-12VDC
www.arduino.cc
www.arduino.cc
www.arduino.cc
www.arduino.cc
PROGRAMA
PRINCIPAL
CONFIGURACIN ASIGNACIN
PUERTOS E/S
VARIABLES
www.arduino.cc
www.arduino.cc
www.arduino.cc
INPUT (entrada)
OUTPUT (salida)
digitalWrite(pin, value);
digitalWrite(pin, HIGH); //coloca en el pin un valor HIGH (alto 1)
digitalWrite(pin, LOW); //coloca en el pin un valor LOW (bajo 0)
delay() hace a Arduino esperar por el numero especificado de
milisegundos antes de continuar con la siguiente lnea. Hay
1000 milisegundos en un segundo, por lo que la linea:
delay(1000);
// esperar un segundo
www.arduino.cc
PRCTICA 2 : SEMFORO
Diagrama de flujo
(Planificacin)
R1
D1
ROJO
330R
R2
D1
AMARILLO
330R
R3
VERDE
D1
GND
330R
www.arduino.cc
PRCTICA 2 : SEMFORO
www.arduino.cc
CONFIGURACIN
PUERTOS E/S
ASIGNACIN
VARIABLES
PRCTICA 2 : SEMFORO
// Encedido y apagado de 3 LEDs Del semforo
int ROJO= 6; // Define las salidas de los LEDs
int AMARILLO = 7;
int VERDE= 8;
void setup() { // Configura las SALIDAS
pinMode(ROJO, OUTPUT); // declarar LEDs como SALIDAS
pinMode(AMARILLO, OUTPUT);
pinMode(VERDE, OUTPUT);
digitalWrite(ROJO, LOW); // Apaga los LEDs
digitalWrite(AMARILLO, LOW);
digitalWrite(VERDE, LOW);
}
www.arduino.cc
PROGRAMA
PRINCIPAL
PRCTICA 2 : SEMFORO
void loop(){ //Bucle de Funcionamiento
digitalWrite(ROJO, HIGH);
// Apaga y enciende los leds
//cada 200 ms
delay(3000);
digitalWrite(ROJO, LOW);
digitalWrite(AMARILLO, HIGH);
delay(1000);
digitalWrite(AMARILLO, LOW);
digitalWrite(VERDE, HIGH);
delay(3000);
digitalWrite(VERDE, LOW);
}
www.arduino.cc
a
f
DP
c
d
CATODO COMUN
www.arduino.cc
AC
AC
g
c
e
www.arduino.cc
DP
d
7= a
8= b
9= c
10= d
11= e
12= f
13= g Prof. Luis Zurita
7= a
8= b
9= c
10= d
11= e
12= f
13= g
www.arduino.cc
e d AC c DP
CONFIGURACIN ASIGNACIN
VARIABLES
PUERTOS E/S
FUNCIN
DE DISPLAY
www.arduino.cc
PROGRAMA
PRINCIPAL
www.arduino.cc
PROGRAMA
PRINCIPAL
www.arduino.cc
GND
R1
R2
1k
1k
SALIDA
SALIDA
PullUp
GND
www.arduino.cc
PullDown
VCC
www.arduino.cc
www.arduino.cc
www.arduino.cc
INPUT (entrada)
OUTPUT (salida)
digitalRead(pin);
valor=digitalRead(pin); //La lectura del pin es guardado en valor
www.arduino.cc
Rel electromecnico
Circuito Elctrico
VCC
RL1
D1
RLY-SPCO
1N4004
R3
Q1
2N3904
PIN10
1k
GND
www.arduino.cc
U1
PIN uC 330R
R5
1k
U2
BT136
MOC3021
1
2
HACIA LA CARGA 110VAC
GND
Optoacoplador
(Optotriac)
www.arduino.cc
TRIAC
Prof. Luis Zurita
Montaje en el Arduino
www.arduino.cc
MEMO es una
variable para
memorizar
el estado del
LED
www.arduino.cc
www.arduino.cc
PROGRAMA
PRINCIPAL
CONFIGURACIN ASIGNACIN
PUERTOS E/S
VARIABLES
CONTINUACIN DE
PROGRAMA PRINCIPAL
}
else {
VALOR = digitalRead(PULSADOR2); // lee el valor de la entrada digital pin 8
if (VALOR==1){
while (VALOR==1){
VALOR = digitalRead(PULSADOR2); // lee el valor de la entrada digital pin 8
delay(20);}
if (MEMO==0){
digitalWrite(LED, HIGH);
MEMO=1;
delay(20);}
else {
digitalWrite(LED, LOW);
MEMO=0;
delay(20);}
}
}
}
www.arduino.cc
Prof. Luis Zurita
Existen 6 canales de
entradas analgicas:
AN0 .. AN5.
Las entradas
analgicas deben
variar entre 0 y 5v.
La conversin se
realiza con una
precisin de 10 Bits
(0 a 1024)
www.arduino.cc
ATMEGA328P
www.arduino.cc
www.arduino.cc
CONFIGURACIN
PUERTOS E/S
ASIGNACIN
VARIABLES
www.arduino.cc
PROGRAMA
PRINCIPAL
void loop() {
// Lee el valor del Potenciometro:
valor = analogRead(POTEN);
delay(100);
A: Sigue aqu
if (valor <= 400)
else if (valor<=749){
{
digitalWrite(LEDR, LOW);
digitalWrite(LEDR, LOW);
digitalWrite(LEDA, HIGH);
digitalWrite(LEDA, LOW);
digitalWrite(LEDV, LOW);
digitalWrite(LEDV, HIGH);
}
}
else{
Sigue en A:
digitalWrite(LEDR, HIGH);
digitalWrite(LEDA, LOW);
digitalWrite(LEDV, LOW);
}
}
www.arduino.cc
Prof. Luis Zurita
www.arduino.cc
3.75 volts
0 volts
80% 20%
5 volts
2.5 volts
0 volts
50% 50%
5 volts
1.0 volts
0 volts
www.arduino.cc
20% 80%
www.arduino.cc
VALOR
4
(0 1023)
4
= (0 255)
int led = 9;
// define el pin 10 como led
int POTEN = 0;
// define el pin 0 como POTEN
int valor;
// define la variable valor
void setup( ) {
// no es necesario configurar entradas y salidas
}
void loop()
{
valor = analogRead(POTEN); // lee el potencimetro y
//lo guarda en valor
valor= valor/4; //divide valor entre 4 y lo reasigna a valor
analogWrite (led, valor); // escribe en el pin10 valor
}
www.arduino.cc
RX
C
TX
RX
RX
TX
GND
Dispositivo
Externo
Mdulo
USB
ARDUINO
www.arduino.cc
PROTOCOLO RS-232
Este protocolo es el utilizado por Arduino.
Cada dato se enva independientemente de los
dems.
Consta de 8 bits de datos
Consta de 1 bit de Inicio (START)
Consta de 1 bit de Parada (STOP)
BIT INICIO
BIT PARADA
LSB
www.arduino.cc
DATO
MSB
www.arduino.cc
www.arduino.cc
y/o
funciones
de
la
Print
Print
Print
Print
Print
Print
(valor) (valor,DEC) (valor,BYTE) (valor, HEX) (valor,OCT) (valor,BIN)
A
65
A
41
101
1000001
65
65
A
41
101
1000001
El formato de long es el mismo que el entero
65.00 Formato no es soportado para valores de punto flotante
65.00 El formato de double es el mismo que el float
Serial.println("chrValue: ");
Serial.println(chrValue);
Serial.println(chrValue,BYTE);
Serial.println(chrValue,DEC);
Serial.println("intValue: ");
Serial.println(intValue);
Serial.println(intValue,BYTE);
www.arduino.cc
Serial.println(intValue,DEC);
Serial.println(intValue,HEX);
Serial.println(intValue,OCT);
Serial.println(intValue,BIN);
Serial.println("floatValue: ");
Serial.println(floatValue);
Prof. Luis Zurita
www.arduino.cc
CONFIGURACIN ASIGNACIN
PUERTOS E/S
VARIABLES
PROGRAMA
PRINCIPAL
//lm35 sketch
//Muetra la temperatura en el monitor serial
int inPin = 0; // pin del sensor analgico
void setup()
{
Serial.begin(9600); // Establece la velocidad de comunicacin
}
void loop()
{
int value = analogRead(inPin);
Serial.print(value); Serial.print(" > ");
float millivolts = (value / 1024.0) * 5000;
float celsius = millivolts / 10; // salida del sensor es 10mV por
grado celsius
Serial.print(celsius);
Serial.print(" grados Celsius, ");
Serial.print( (celsius * 9)/ 5 + 32 ); // convierte a fahrenheit
Serial.println(" grados Fahrenheit");
delay(1000); // espera un segundo
}
www.arduino.cc
www.arduino.cc
www.arduino.cc
www.arduino.cc
www.arduino.cc
www.arduino.cc
www.arduino.cc
www.arduino.cc
www.arduino.cc