Professional Documents
Culture Documents
http://informatica.uv.cl
Descripcin
del kit entregado
informatica.uv.cl
Inventario
Diodo
LED
Rojo
(x6)
Cables
de
conexin
(x10)
Resistencia
330[]
(x6)
Resistencia
10[K]
(x1)
Fotoresistencia
(x1)
Potencimetro
(x1)
Botn
(x1)
Inventario
Placa
Sparkfun
(x1)
Protoboard
(x1)
Terminologa
informatica.uv.cl
Terminologa especfica
Digital
CanWdades
discretas
Ejemplo:
valor
de
un
bit.
conjunto
de
nmeros
enteros
entre
0
y
1023.
conjunto
de
nmeros
enteros
entre
0
y
255.
Rango
de
temperatura
entre
10o
y
20o,
medido
en
medios
grados.
(10o,
10.5o,
)
Ejemplo:
temperatura
ambiente
medida
con
mercurio.
conjunto
de
nmero
reales
ente
0
y
1023.
conjunto
de
nmeros
reales
entre
0
y
255.
Anlogo
CanWdades
Reales
()
Terminologa especfica
Cuan3zar
Sensor de
temperatura
Sistema
computacional
No
se
puede
realizar
directamente
Terminologa especfica
Cuan3zar
Sensor de
temperatura
A/D
Sistema
computacional
Resolucin
de
la
conversin
Terminologa especfica
Cuan3zar
Ejemplo:
la
resolucin
es
de
10
bits.
Esto
signica
que
el
bloque
de
conversin
puede
asignar
1024
(210)
valores
disWntos
a
la
variable
anloga.
Valor
Anlogo
0
0,005
0,010
0,015
.
.
.
4,990
4,995
5
Valor
entero
0
1
2
3
.
.
.
1021
1022
1023
Sensor de
temperatura
Voltaje
[ 0,5[V] ]
A/D
Sistema
computacional
entero
{0,1,2,, 1023}
Microcontrolador (C)
Arduino
11
informatica.uv.cl
Arquitectura de Arduino
Descripcin General
Es
hardware
open
source
Especicaciones
y
diagramas
son
de
acceso
pblico
El
socware
con
que
se
programa
es
open
source.
Entradas
Anlogas
HIGH
:
5[V]
LOW
:
0[V]
valor = digitalRead(pin);
digitalWrite(pin,valor);
Ej.: digitalWrite(9, HIGH);
analogWrite(pin,valor);
Los
pines
~X
Wenen
una
resolucin
de
8
bits
valor={0,1,2, , 255).
El
valor
entero
255
corresponde
a
5[V].
Software necesario
Integrated
Development
Environment
(IDE)
para
Arduino
hmp://arduino.cc/en/Main/Socware
Disponible para:
Modalidad de trabajo
Compila el cdigo y
lo transfiere a la
placa
Verifica
el cdigo
Monitor
serial
rea de
Edicin de
Cdigo
rea de
Mensajes
Forma de programar
Declaraciones
Globales
setup()
loop()
Forma de programar
Encendido de la placa
Reset
Carga de un programa
Declaraciones
Globales
//Seccin Global
setup()
void setup(){
instruccion 1;
instruccion 2;
...
...
instruccin k;
void loop(){
instruccion 1;
instruccion 2;
...
...
instruccin j;
}
loop()
instruccion 1;
instruccion 2;
...
...
instruccin j;
}
IDEA
Diseo a
nivel de
Sistema
Diseo
Hardware
(electrnica)
SI
Implementacin
Diseo
Sofware
(lgica de la
solucin)
Es lo que se
esperaba?
Fin de la etapa
de prototipado
NO
Comunicacin
Arduino-Computador
28
informatica.uv.cl
Monitor serial
Scketch
Monitor Serial
Funciones de comunicacin
Serial.begin(velocidad)
Establece
velocidad
de
conexin
en
baudios.
Por
omisin
velocidad=9600[baudios]1.
Serial.available()
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {//Si hay datos disponibles
//Codigo relacionado con la lectura de datos
//del puerto serie.
}
}
1
Las
velocidades
permiWdas
(en
baudios)
son:
300,
1200,
2400,
4800,
9600,
14400,
19200,
28800,
38400,
57600,
115200.
Funciones de comunicacin
Serial.print(valor[,formato])
Serial.println(valor[,formato])
Enva
datos
al
puerto
serie
como
texto
ASCII.
Serial.read()
int incomingByte = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {//Si hay datos
// leer el byte que llega
incomingByte = Serial.read();
Primer prototipo
32
informatica.uv.cl
Idea inicial
Se
quiere
realizar
un
sistema,
basado
con
Arduino,
que
prenda
y
apague
un
LED
cada
1
segundo
1)
Diseo
del
Sistema
Software
(lgica de la
solucin)
OUT
Arduino
LED
pin 10
Diseo
2)
Diseo
del
Hardware
PIN 10
330[]
hmp://www.instructables.com
Taller bsico de programacin de dispositivos Arduino
Diseo
2)
Diseo
del
Hardware
Diseo
3)
Diseo
del
Socware
PIN 10
void setup() {
pinMode(10, OUTPUT);
}
330[]
Diseo
3)
Diseo
del
Socware
Inicio
Poner en nivel
ALTO el pin 10
Esperar
1[seg]
Poner en nivel
BAJO el pin 10
Esperar
1[seg]
Diseo
3)
Diseo
del
Socware
Inicio
Poner en nivel
ALTO el pin 10
Esperar
1[seg]
Poner en nivel
BAJO el pin 10
void loop() {
digitalWrite(10, HIGH);// prenda el LED
delay(1000);
// espere 1[seg]
// (1000 milisegundos
digitalWrite(10, LOW); // apague el LED
delay(1000);
// espere 1[seg]
}
Esperar
1[seg]
Diseo
4)
Solucin
nal
int pinLed = 10; //Pin asociado al LED
//que se va a prender/apagar
int duracion = 1000; //duracion del parpadeo
void setup() {
pinMode(pinLed, OUTPUT); //Se inicializa el
//pin como salida
}
void loop() {
digitalWrite(pinLed, HIGH);// prenda el LED
delay(duracion);
// espere 1[seg]
digitalWrite(pinLed, LOW); // apague el LED
delay(duracion)
// espere 1[seg]
}
Taller bsico de programacin de dispositivos Arduino
Ejemplo 2
40
informatica.uv.cl
OUT
Arduino
LED
Parpadea cuando
el botn
est presionado
Antecedentes elctricos
2)
Diseo
del
Hardware
IN
OUT
5[V]
PIN 1
10[K]
PIN 13
Diagrama
Smbolo
Elctrico
Si
(Vpin13
=
0[V])
Botn
presionado
else
Botn
normal
Ingeniera Civil Informtica
42
informatica.uv.cl
Diseo
2)
Diseo
del
Hardware
IN
OUT
5[V]
PIN 10
10[K]
330[]
PIN 13
Diseo
2)
Diseo
del
Hardware
IN
OUT
5[V]
PIN 10
10[K]
330[]
PIN 13
Diseo
3)
Diseo
del
Socware
Inicio
Poner en nivel
ALTO el pin 10
Configurar pines
Esperar
500[mseg]
NO
Si
(Vpin13
=
0[V])
Botn
presionado
else
Botn
normal
SI
Poner en nivel
BAJO el pin 10
botn presionado?
Esperar
500m[seg]
Si
(Estadopin13
=
LOW)
Botn
presionado
else
Botn
normal
Ingeniera Civil Informtica
45
informatica.uv.cl
Diseo
3)
Diseo
del
Socware
int pinLed = 8; //Pin asociado al LED
//que se va a prender/apagar
int duracion = 500; //duracion del parpadeo
int pinBoton = 7;
int estadoBoton;
void setup() {
//...
}
void loop() {
estadoBoton = digitalRead(pinBoton);
!
!
//...
Diseo
3)
Diseo
del
Socware
int pinLed = 10; //Pin asociado al LED
//que se va a prender/apagar
int duracion = 500; //duracion del parpadeo
int pinBoton = 13;
int estadoBoton;
void setup() {
pinMode(pinLed, OUTPUT);//pin como salida
pinMode(pinBoton, INPUT);
}
void loop() {
estadoBoton = digitalRead(pinBoton);
if(estadoBoton == LOW){
digitalWrite(pinLed, HIGH);// prenda
delay(duracion);
// espere
digitalWrite(pinLed, LOW); // apague
delay(duracion)
// espere
}
}
Taller bsico de programacin de dispositivos Arduino
el LED
1[seg]
el LED
1[seg]
Ejemplo 3
48
informatica.uv.cl
Manejo de puertos
Arduino
Wene
tres
puertos:
Manejo de puertos
DDRB
Ejemplo
PORTB
Pin Digital 13
HIGH
Pin Digital 8
HIGH
Pin Digital 10
HIGH
Pone
valores
ALTO
o
BAJO
en
pines
Digitales
8
al
13
Idea
Se
quiere
realizar
un
sistema,
basado
con
Arduino,
que
implemente
un
secuenciador
de
6
LEDs.
Cada
LED
debe
durar
prendido
1
segundo.
Idea
Se
quiere
realizar
un
sistema,
basado
con
Arduino,
que
implemente
un
secuenciador
de
6
LEDs.
Cada
LED
debe
durar
prendido
1
segundo.
Idea
Se
quiere
realizar
un
sistema,
basado
con
Arduino,
que
implemente
un
secuenciador
de
6
LEDs.
Cada
LED
debe
durar
prendido
1
segundo.
#define DELAY 1000
void setup() {
DDRB = B00111111;
}
void loop() {
PORTB = 0; //Todos los led apagados
Idea
Se
quiere
realizar
un
sistema,
basado
con
Arduino,
que
implemente
un
secuenciador
de
6
LEDs.
Cada
LED
debe
durar
prendido
1
segundo.
#define DELAY 1000
void setup() {
DDRB = B00111111;
}
void loop() {
PORTB = 0; //Todos los led apagados
Ejemplo 4
55
informatica.uv.cl
Idea
Se
quiere
realizar
un
sistema,
basado
con
Arduino,
que
prenda
y
apague
un
LED,
cuya
frecuencia
de
parpadeo
sea
controlable
a
travs
de
un
potencimetro
1)
Diseo
del
Sistema
Potencimetro
IN
OUT
Nivel de rotacin
de la perilla ()
LED
Parpadea segn
el nivel de rotacin:
izq-> lento
der-> rpido
10[K]
Arduino
Diseo
2)
Diseo
del
Hardware
IN
5[V]
A
10[K]
5[V]
Vout=(1-)5[V]
A
Vout=(1-)5[V]
10[]
PIN A3
PIN A3
B
Diagrama de
conexiones
Smbolo
elctrico
Diseo
2)
Diseo
del
Hardware
IN
OUT
5[V]
Vout=(1-)5[V]
10[]
PIN 10
330[]
PIN A3
Smbolo
elctrico
Diseo
2)
Diseo
del
Hardware
Diseo
3)
Diseo
del
Socware
Problema:
variar
el
Wempo
de
parpadeo
segn
el
ngulo
de
giro
del
potencimetro.
Analizar
los
posibles
valores
de
entrada
Si
0o180o
5[V]Vout0[V]
cul
es
el
rango
del
valor
de
entrada
de
A3?
Si
0o180o
1023A30
Diseo
3)
Diseo
del
Socware
Inicio
Configurar pines
Poner en nivel
ALTO el pin 10
Esperar
duracion[seg]
Poner en nivel
BAJO el pin 10
Esperar
duracion[seg]
void setup() {
pinMode(sensorPin, INPUT); //pin como entrada
pinMode(pinLed, OUTPUT);
//pin como salida
}
void loop() {
duracion = analogRead(sensorPin);
//...
Diseo
3)
Diseo
del
Socware
Inicio
Configurar pines
!
duracion <- Leer A3
Poner en nivel
ALTO el pin 10
Esperar
duracion[seg]
Poner en nivel
BAJO el pin 10
Esperar
duracion[seg]
void setup() {
pinMode(sensorPin, INPUT); //pin como entrada
pinMode(pinLed, OUTPUT);
//pin como salida
}
void loop() {
duracion = analogRead(sensorPin);
//Por tratarse de una entrada analogica
//duracion esta entre 0 y 1023
digitalWrite(pinLed, HIGH);// prenda el LED
delay(duracion);
// espere
digitalWrite(pinLed, LOW); // apague el LED
delay(duracion)
// espere
}
Ejemplo 5
63
informatica.uv.cl
Idea
La
idea
de
este
sistema
es
que
un
LED
se
encienda
en
ausencia
de
luz
ambiental.
Si
hay
luz
ambiente,
el
LED
debe
permanecer
apagado.
1)
Diseo
del
Sistema
IN
OUT
Sensor
de luz
Arduino
Sensor de luz
Rsensor[]
Fotoresistencia
LED
Antecedentes elctricos
2)
Diseo
del
Hardware
(Ausencia total
de Luz)
Rsensor
Rsensor[]
Conguracin
propuesta:
5[V]
(Luz directa)
Rsensor
Input
A
10[K]
Vout
C
Rsensor[]
IN
PIN A0
Antecedentes elctricos
2)
Diseo
del
Hardware
(Ausencia total
de Luz)
Rsensor
Rsensor[]
(Luz directa)
Rsensor
5[V]
Conguracin
propuesta:
A
10[K]
Rsensor[]
IN
Vout
PIN A0
Vout=1,5
es
equivalente
a
un
nmero
entero
de
307
aprox.
Taller bsico de programacin de dispositivos Arduino
Antecedentes elctricos
2)
Diseo
del
Hardware
Conguracin
propuesta:
PIN 10
330[]
Output
Solucin
5[V]
PIN 10
330[]
10[K]
Rsensor[]
Vout
C
IN
PIN A0
Diseo
3)
Cdigo
nal
int sensorPin = A0; //Fotoresistencia conectada
// al pin analogo A0
int pinLed = 10;
// El LED esta conectado al
// pin digital 10
int intensidad;
Inicio
Configurar pines
void setup() {
pinMode(sensorPin, INPUT); //pin como entrada
pinMode(pinLed, OUTPUT);
//pin como salida
}
SI
hay luz ambiental ?
NO
Prenda el
LED
Apague el
LED
void loop() {
intensidad = analogRead(sensorPin);
//Si hay luz==>haga algo, ( intensidad > 307)
//Si no, haga otra cosa
//...
}
Diseo
3)
Cdigo
nal
int sensorPin = A0; //Fotoresistencia conectada
// al pin analogo A0
int pinLed = 10;
// El LED esta conectado al
// pin digital 10
int intensidad;
Inicio
Configurar pines
void setup() {
pinMode(sensorPin, INPUT); //pin como entrada
pinMode(pinLed, OUTPUT);
//pin como salida
}
SI
Apague el
LED
void loop() {
intensidad = analogRead(sensorPin);
//Por tratarse de una entrada analogica
//intensidad esta entre 0 y 1023
if(intensidad > 307) //hay luz ambiente
digitalWrite(pinLed, LOW);//apague el LED
else
digitalWrite(pinLed, HIGH); //prenda el LED
}
Preguntas
claves como desarrollador
71
informatica.uv.cl
Deben preguntarse
Qu
sensor
me
permite
cumplir
con
los
objeWvos
de
mi
solucin.
Dicho
sensor,
cmo
lo
conecto
a
la
placa
Arduino.
Qu
rango
de
valores
entrega
y
cules
de
ellos
me
sirve.
Con
qu
disposiWvo
logro
que
la
salida
de
la
placa
interacte
con
el
medio.