CURSO BSICO DE
ARDUINO
Filosofa Arduino
La filosofa Arduino se fundamenta en la idea de crear prototipos en lugar de solo
hablar de ideas!
Prototipo
Mezclar
Reusar
Crear lo antes
posible un demo
de la idea a
desarrollar
Podra utilizar
este proyecto
para este otro
Esta aparato ya
no sirve, pero el
ventilador lo
podra usar en
Explorar
Modificar
Colaborar
Que pasa si se
hago esto?
Como se vera si
estos dos objetos
se unen?
El juguete solo
dice una palabra,
podra agregar
mas ?
Juan puede
prender leds, tal
vez el pueda
ayudarme a
INTRODUCCIN
Un sistema embebido es un
sistema electrnico que cumple
solo determinadas funciones. Su
Hardware no es modificable, su
software s.
PARTES DE UN SISTEMA EMBEBIDO:
ENTRADAS
Son los datos que traemos de
nuestro entorno, de la vida real
para poder realizar un actividad
nuestro Arduino.
Anlogo: miles de nmeros.
Digital: 1 o 0
PARTES DE UN SISTEMA EMBEBIDO:
UNIDAD CENTRAL DE PROCESAMIENTO
Recibe las seales de las
entradas y las procesa para
generar algn tipo de respuesta.
Es el lugar donde se almacena
nuestra programacin.
PARTES DE UN SISTEMA EMBEBIDO:
SALIDAS
Son las formas auditivas, visuales,
etc. que generan las respuestas de
la
unidad
central
de
procesamiento
ELEMENTOS ELECTRNICOS A USAR:
IDE DE ARDUINO
El programa que no permite dar el
funcionamiento
a
nuestro
sistema, cdigo abierto.
PROGRAMACIN CON ARDUINO
PUERTOS COMO SALIDA
Al definir como salida, es decir que
enviamos voltajes a los pines de Arduino,
en este caso 0v o 5v.
void setup() {
pinMode(8,OUTPUT); // declarado como
salida
}
void loop() {
digitalWrite(8,HIGH);
delay(500);
// enviar 5v
// tiempo de led
//encendido
digitalWrite(8,LOW); //enviar 0v
delay(500);
//tiempo de led
//apagado
}
MANEJO DE VARIABLES DE NMEROS
Las variables son espacios de
memoria
del
micro
para
almacenar datos temporales y
permanentes.
PROGRAMACIN CON ARDUINO
PUERTOS COMO SALIDA
Realizar el mismo programa pero
usando variables en los pines.
int led=8;
// inicializacion de variable
void setup() {
pinMode(led,OUTPUT); // Pin declarado
como salida
}
void loop() {
digitalWrite(led,HIGH); //enciende led
delay(500);
//tiempo de espera
digitalWrite(led,LOW); //apaga led
delay(500);
//tiempo de espera
}
PROGRAMACIN CON ARDUINO
PUERTOS COMO SALIDA
Realizar un programa que encienda dos leds de
manera simultnea, alternada
int led_rojo=9;
int led_verde=8;
void setup() {
pinMode(led_rojo,OUTPUT);
pinMode(led_verde,OUTPUT);
// variable para led 1
// variable para led 2
// pin declarado como salida
//pin declarado como sala
}
void loop() {
digitalWrite(led_rojo,HIGH);
digitalWrite(led_verde,HIGH);
//encender led 1
//encender led 2
delay(1000); //delay
digitalWrite(led_rojo,LOW);
// apagar led 1
digitalWrite(led_verde,LOW);
// apagar led 2
delay(1000);
//delay
PARTE PRACTICA
Realizar un sistema
alternadamente.
que
se
enciendan
leds
Realizar un sistema con leds que tengan 3 diferentes
juegos.
PROGRAMACIN CON ARDUINO
PUERTOS COMO ENTRADA
Se consideran entradas digital en
el momento que nosotros
recibimos 0 lgico o 1 lgico del
exterior, sea desde un sensor, un
switch, un botn, etc.
0 lgico : 0 voltios y 1,8 voltios
1 lgico: 2,1 voltios y 5 voltios
PARTE PRACTICA
Simular las configuraciones pull up y pull down.
ESTRUCTURA DE CONTROL IF ELSE
IF (Condicin){
(Bloque de sentencias 1)
}
ELSE {
(Bloque de sentencias 2)
}
if(digitalRead(pin a usar)==HIGH){
(Bloque de sentencias 1)
}
else
{
(Bloque de sentencias 2)
}
PROGRAMACIN CON ARDUINO
PUERTOS COMO ENTRADA
Realizar un programa donde mediante un pin declarado como
entrada encienda un led declarado como salida.
void setup()
{
pinMode( 8 , INPUT);
pinMode( 9 , OUTPUT);
}
void loop()
{
if (digitalRead(8))
{
digitalWrite( 9 , HIGH );
}
else
{
digitalWrite( 9 , LOW );
}
}
PROGRAMACIN CON ARDUINO
PUERTOS COMO ENTRADA
Realizar un programa donde al
presionar un botn se enciendan
un led, al volver a presionar se
apague
PROGRAMACIN CON ARDUINO
PUERTOS COMO ENTRADA
int dato = 0 ;
void setup()
{
pinMode( 8 , INPUT);
// pin como entrada
pinMode( 9 , OUTPUT); // pin como salida
}
void loop()
{
if (digitalRead(8))
// condicin de pin de entrada
{
}
else
{
delay( 300 );
// delay anti rebotes
dato =1-dato ;
// variable de dos estados
}
if (dato == 1 )
// condicin de encendido
{
digitalWrite( 9 , HIGH ); // led en alto
}
else
{
digitalWrite( 9 , LOW ); // led en bajo
}
}
Cambio de estado de variable entre
1 y 0.
Segn la condicin de la
variable, el led se enciende o se
apaga
PROGRAMACIN CON ARDUINO
COMUNICACIN SERIAL
Es una parte de hardware que
permite comunicarse hacia otro
dispositivos sea con medio fsicos
o con medios inalmbricos.
PARTE PRACTICA
Realizar un sistema al accionar un Switch y se tenga 3
juegos de leds diferentes.
PROGRAMACIN CON ARDUINO
COMUNICACIN SERIAL
void setup()
{
Serial.begin(9600);
// configuracin de
comunicacin
}
void loop()
{
Serial.print("hola");
delay(5000);
Serial.print('A');
delay(5000);
};
// envio de frase
//retardo
// envio de letra
//retardo
PROGRAMACIN CON ARDUINO
COMUNICACIN SERIAL
En la recepcin de datos por
comunicacin
serial
es
fundamental verificar que el
puerto est disponible y tenga un
dato en la entrada
if (Serial.available()>0)
PROGRAMACIN CON ARDUINO
COMUNICACIN SERIAL
void setup() {
Serial.begin(9600);
// configuracion de cx
pinMode(8,OUTPUT); // pin como salida
}
void loop() {
if (Serial.available()>0){ //puerto recibe dato
if(Serial.read()=='A'){ // si recibimos letra A
digitalWrite(8,HIGH); // encender led
}
else
{
digitalWrite(8,LOW); //caso contrario apagar led
}
}
}
Encender un led mediante comunicacin serial, al
recibir le letra A se apague, caso contrario se apague.
ESTRUCTURA DE CONTROL SWITCH CASE
Esta sentencia permite ejecutar una
de entre varias acciones en funcin
del valor de una expresin. Se evala
la expresin, dando como resultado
un nmero.
"Case" dentro de la estructura
buscando que el nmero coincida
con uno de los valores.
Es necesario que coincidan todos
sus valores.
Cuando se encuentra la primera
coincidencia, se ejecuta el bloque
de sentencias correspondiente y se
sale de la estructura..
Si no se encuentra ninguna
coincidencia con ningn valor, se
ejecuta el bloque de sentencias de
la seccin Default.
PROGRAMACIN CON ARDUINO
COMUNICACIN SERIAL
Realizar un programa donde al
digitar diferentes letras se
enciendan diferentes leds.
PROGRAMACIN CON ARDUINO
COMUNICACIN SERIAL
char dato;
int led_rojo=8;
int led_verde=9;
int led_amarillo=10;
case 'B':
void setup() {
Serial.begin(9600);// configuracion de cx
pinMode(led_rojo,OUTPUT);
// pin como salida
pinMode(led_verde,OUTPUT);
// pin como salida
pinMode(led_amarillo,OUTPUT);
void loop() {
dato=Serial.read();
// variable llena
switch(dato){
// control
//encender led
digitalWrite(led_verde,LOW);
//apagar led
digitalWrite(led_amarillo,LOW);
//encender led
digitalWrite(led_amarillo,LOW);
//apagar led
digitalWrite(led_rojo,LOW);
//apagar led
digitalWrite(led_verde,LOW);
//apagar led
digitalWrite(led_amarillo,HIGH);
//encender led
break;
default:
case 'A':
digitalWrite(led_rojo,HIGH);
digitalWrite(led_verde,HIGH);
case 'C':
}
//puerto recibe dato
//apagar led
break;
// pin como salida
if (Serial.available()>0){
digitalWrite(led_rojo,LOW);
digitalWrite(led_rojo,LOW);
//apagar led
digitalWrite(led_verde,LOW);
//apagar led
digitalWrite(led_amarillo,LOW);
//apagar led
//apagar led
break;
break;
}
}
}
PROGRAMACIN CON ARDUINO
COMUNICACIN SERIAL
Arduino permite trabajar la
comunicacin serial desde el
mismo programa para la revisin
de la recepcin y envo de
mensajes.
PARTE PRACTICA
Realizar un sistema al ingresar diferentes letras por la
computadora haya juegos diferentes con leds.
PROGRAMACIN CON ARDUINO
CONVERSIN ANLOGA DIGITAL
Son pines destinados de Arduino
para recibir referencias de
voltaje de 0 a 1023 en relacin a
sonido, ruido, humedad, luz, etc.
Generalmente los sensores ms
usados son de este tipo de
datos.
PROGRAMACIN CON ARDUINO
CONVERSIN ANLOGA DIGITAL
Realizar un programa que reciba datos anlogos
desde un potencimetro y se visualice dicho int valor_analogo;
dato en la comunicacin serial.
void setup() {
Serial.begin(9600);
}
// inicizalicion de variable
// configuracion de cx serial
void loop() {
valor_analogo=analogRead(0);
//lectura de
// conversor en un canal
Serial.println(valor_analogo);
//recibe el valor
//analogico
delay(1000);
//tiempo de espera
}
PROGRAMACIN CON ARDUINO
CONVERSIN ANLOGA DIGITAL
Mediante leds se darn nuevas referencias,
quiere decir que un led se encender cuando el
conversor tenga un valor de 1 a 255, dos leds de
256 a 512, tres leds de 516 a 750 y 4 leds de 7
leds a 1023.
PROGRAMACIN CON ARDUINO
CONVERSIN ANLOGA DIGITAL
Dentro del nuevo programa
observamos que podemos dentro
una estructura de control como lo
es if else podemos aadir ms de
una condicin con operadores
lgicos.
Nombre
Operador
Uso
Y (AND)
&&
SI A Y B cumplen una condicin
O (OR)
II
Si A O B cumple la condicin
Mayor
>
Si A>B
Menor
<
A<B
Igual
==
A=B
No es igual
!=
A!=B
Mayor o igual
>=
A>=B
Menor o igual
<=
A<=B
PROGRAMACIN CON ARDUINO
CONVERSIN ANLOGA DIGITAL
int valor_analogo;
int led_rojo=8;
// inicizalicion de variable
// inicizalicion de variable
void loop() {
valor_analogo=analogRead(0);//lectura de conversor
int led_verde=9;
int led_amarillo=10;
int led_azul=11;
// inicizalicion de variable
// inicizalicion de variable
// inicizalicion de variable
if(valor_analogo<5){
digitalWrite(led_rojo,LOW);
digitalWrite(led_verde,LOW);
void setup() {
digitalWrite(led_amarillo,LOW);
digitalWrite(led_azul,LOW);
Serial.begin(9600);
// configuracion de cx serial
pinMode(led_rojo,OUTPUT);
}
if(valor_analogo>5&&valor_analogo<255){
pinMode(led_verde,OUTPUT);
pinMode(led_amarillo,OUTPUT);
digitalWrite(led_rojo,HIGH);
pinMode(led_azul,OUTPUT);
digitalWrite(led_amarillo,LOW);
digitalWrite(led_azul,LOW);
digitalWrite(led_verde,LOW);
}
}
PARTE PRACTICA
Cambiar la velocidad de un motor DC mediante un
potencimetro.
Mover los 180 grados del servo con un potencimetro.
PARTE PRACTICA
Realizar un sistema que indique las referencias entre 3
leds del conversor anlogo digital. Programa, Simulacin
y Programa.
De 0 a 350 un led
De 356 a 750 dos leds
Mayor a 750 3 leds.
PROGRAMACIN CON ARDUINO
La conversin anloga digital
permite traer valores anlogos al
Arduino con una referencia de 0 a
255, el control de ancho de pulso
permite enviar esa referencia por
un pin determinado, lo que
hacemos es modificar un pulso
elctrico el tiempo que se
mantenga en 1 lgico.
PWM
PROGRAMACIN CON ARDUINO
El programa a continuacin controlaremos la velocidad
de un motor observando el valor anlogo en la
comunicacin serial mediante un potencimetro por
ende debemos al valor anlogo dividirlo para 4 para
tener una referencia hasta 255
PWM
int valor_analogo;//inicializacin de variable
void setup() {
pinMode(10,OUTPUT); // pin declarado como salida
Serial.begin(9600); // configuracin de cx serial
}
void loop() {
valor_analogo=analogRead(0);
// lectura de
canal anlogo
analogWrite(10,valor_analogo/4); //enviar a pin digital /4
Serial.println(valor_analogo/4);
}
// imprimir mensaje
PROGRAMACIN CON ARDUINO
El programa cambiar la velocidad
del motor dependiendo cuantas
veces se presiona la letra A, y
bajara su velocidad cuando se
presione la letra B, con un mximo
de 5 veces cada una.
PWM
PROGRAMACIN CON ARDUINO
char val;
PWM
if(val=='A'){ // condicin de dato de entrada
int valor_pwm=0;
if(valor_pwm<250)
int motor=7;
void setup() {
valor_pwm=valor_pwm+50;
vez en 10%
// incrementar velocidad cada
analogWrite(motor,valor_pwm);
//enviar al pin dicho valor
pinMode(22,OUTPUT);
pinMode(motor,OUTPUT);
Serial1.begin(9600);
if(val=='B'){
void loop() {
if (Serial1.available()>0){
val=Serial1.read();
//condicin de velocidad
//puerto recibe dato
// lee el dato de la cx serial
if(valor_pwm>=50){
//condicin de dato de entrada
// condicin de velocidad
valor_pwm=valor_pwm-50;
// decremento de velocidad en
10%
analogWrite(motor,valor_pwm);
// enviar dicho valor al pin
}
}
}
PROGRAMACIN CON ARDUINO
SERVO MOTOR
El servo motor su funcionalidad es que no gira
360 grados libremente como un motor normal,
es un motor con engranes para que tengan
mayor fuerza y se pueda girar dependiendo de
las necesidades del usuario, generalmente se
usa el HS-311 ya que es el ms comn
comercialmente.
PROGRAMACIN CON ARDUINO
SERVO MOTOR
Realizar un programa que al
presionar un switch el servo
motor gire los 180 grados, caso
contrario vuelva a su posicin
inicial
PROGRAMACIN CON ARDUINO
SERVO MOTOR
#include <Servo.h> // libreria del servo motor pueda
girar
Servo miservo;
// variable de servo motor
int dato=0;
void loop() {
if(digitalRead(8)==HIGH){
miservo.write(180);
void setup() {
delay(15);
// GIRO DE
180
//TIEMPO
DE ESPERA
}
else{
miservo.write(1);
//PRIMER
SERVO VUELVA A POSICIN
INICIAL
delay(15);
// TIEMPO
}
miservo.attach(9); //selecion de pin
para el servo
pinMode(8,INPUT);
}
PARTE PRACTICA
Mover los 180 grados del servo con un potencimetro.