Está en la página 1de 44

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.

También podría gustarte