Professional Documents
Culture Documents
Concepto de programacin
A medida que la complejidad de las tareas que realizaban las computadoras aumen-
taba, se hizo necesario disponer de un mtodo sencillo para programar. Entonces,
se crearon los lenguajes de alto nivel. Mientras que una tarea tan trivial como multi-
plicar dos nmeros puede necesitar un conjunto de instrucciones en lenguaje en-
samblador, en un lenguaje de alto nivel bastar con slo una.
Lenguaje de programacin
Un lenguaje de programacin es un idioma artificial
diseado para expresar operaciones que pueden ser
llevadas a cabo por mquinas como los computadores.
Pueden usarse para crear programas que controlen el
comportamiento fsico y lgico de una mquina, para
expresar algoritmos con precisin, o como modo de
comunicacin humana.
Lenguaje mquina
El Lenguaje de mquina es el sistema de cdigos
directamente interpretable por un circuito micro-
programable, como el microprocesador de un com-
putador o un microcontrolador. Este lenguaje est
compuesto por un conjunto de instrucciones que
determinan acciones a ser tomadas por la mqui-
na. Estas instrucciones son normalmente ejecuta-
das en secuencia, con eventuales cambios de flujo causados por el propio programa
o eventos externos.
El lenguaje mquina trabaja con dos niveles de voltaje. Dichos niveles, por abstrac-
cin, se simbolizan con el cero (0) y el uno (1), por eso el lenguaje de mquina slo
utiliza dichos signos. Esto permite el empleo de las teoras del lgebra booleana y
del sistema binario en el diseo de este tipo de circuitos y en su programacin.
Lenguaje emsamblador
El lenguaje ensamblador o assembler es un lenguaje de
programacin de bajo nivel para los computadores, mi-
crocontroladores, y otros circuitos integrados programa-
bles. Implementa una representacin simblica de los
cdigos de mquina. Esta representacin es usualmente
definida por el fabricante de hardware, y est basada en
cdigos mnemotcnicos que simbolizan los pasos de
procesamiento (las instrucciones).
Algoritmo
x Estructuras
x Variables
x Funciones
Estructuras
Son dos funciones principales que debe tener todo programa en Arduino:
setup(){
}
Cdigo de configuracin inicial, solo se ejecuta una vez.
loop(){
}
Esta funcin se ejecuta luego del setup(), se mantiene ejecutndose hasta que se
des- energice o desconecte el Arduino.
Variables
Es un dato o conjunto de datos que cambia su valor con la ejecucin del programa.
Estos son algunos tipos de variables y los ms utilizados en esta gua. Para ms tipos
visita:
arduino.cc/en/Reference/HomePage
Operadores booleanos
Usados generalmente dentro del condicional If
x && (y)
x || (o) If (a || b)
x ! (negacin)
Operadores de comparacin
Usados generalmente dentro del condicional If y sobre el For y While
x = (asignar) x - (resta)
x % (mdulo) x * (multiplicacin)
x + (suma) x / (divisin)
int valor = valor +5
Estructuras de control
Son instrucciones que nos permiten tomar decisiones y hacer diversas repeticiones
de acuerdo a unos parmetros, dentro de las ms importantes podemos destacar:
x If
x Switch/case
x For
x While
Condicionales
Ideales para tomar decisiones luego de evaluar las condiciones lgicas:
Ciclos
Ideales para repetir lo que se encuentre dentro de ellos
Funciones digitales
Orientas a revisar el estado y la configuracin de las entradas y salidas digitales
pinMode() digitalWrite()
pinMode(pin,modo) digitalWrite(pin,estado)
digitalRead()
digitalRead(pin)
Funciones anlogas
Ideales para la lectura y escritura de valores anlogos
Proyecto Arduino
El proyecto comenz en Ivrea, Italia (el sitio de la compaa de
computadoras Olivetti), en el ao 2005 con el fin de crear un
dispositivo para estudiantes para el control integrado de proyec-
tos de diseo e interaccin, con la finalidad de que fuera ms
barato que los sistemas de creacin de prototipos disponibles en
ese entonces. A partir de mayo de 2011, ms de 300.000 unida-
des de Arduino han sido distribuidas. Los fundadores Massimo
Banzi y David Cuartielles nombraron el proyecto como Arduino de Ivrea, un protago-
nista histrico de la ciudad. En primer lugar "Arduino" es un termino masculino ita-
liano, que significa "gran amigo".
cin Ivrea, bajo la supervisin de Massimo Banzi y Casey Reas. Por otra parte, Wiring
se basa en Processing y su entorno de desarrollo integrado creado por Casey Reas y
Ben Fry.
Wiring existira sin Processing. Y s que Processing sin duda no existira sin Design By
Numbers y John Maeda1
1 Entrevista con Ben Fry y Casey Reas por Shiffman Daniel (Sep 23, 2009)
Familia Arduino Expandir Arduino con los shields
Como toda familia que se respete, tenemos de los integrantes ms grandes a los ms Un Shield o escudo es una placa que permite expandir funcionalidades a tu Arduino,
pequeos, te invitamos a conocerlos: con lo cual puedes conectar motores, o a la red celular, a una red WiFi, a una red
Ethernet o tener un MP3 en el Arduino, entre muchos ms solo mira:
Arduino UNO Arduino Mega2560
salidas
todo en uno
El ms vendido,
Muchas entradas y
Arduino Pro Arduino Fio Arduino Mini
MAC y LINUX
Si tu computador tiene de sistema operativo alguna versin de Mac o una distribu-
cin de LINUX, lo nico que debes hacer es:
WINDOWS 7, Vista y XP
Si tu computador tiene de sistema operativo Windows en versin
7, Vista o XP, debes realizar la siguiente sucesin de sencillos
pasos:
3 Conectar la placa Arduino Uno al PC y ver este aviso. No nos debemos pre-
ocupar
6
Ingresar a la opcin Buscar software de controlador en el equipo
Guardar
Abrir
Cargar a la placa
Compilar
1 Puerto COM
2 Seleccionar la placa a trabajar
3
Consola serial
1
Cargando mi primer programa
Antes de continuar con el siguiente paso asegrate de configura de manera correc-
ta:
A Puerto COM, revisa el Paso 1 de la seccin 6F, recuerda que el valor del
puerto COM lo obtuvimos en el Paso 9 de la seccin 6E
B Board, revisa el Paso 2 de la seccin 6F, recuerda que para este caso la
placa es Arduino UNO
$UGXLQR812
/('9HUGH A partir del cdigo de programacin explicado anteriormente, queremos que
un LED prenda de manera intermitente de la siguiente manera:
Un Strober es un bombillo que prende y apaga muy rpido,
' muy usado en las fiestas, tu misin es realizar tu strober
, casero con un LED, con el mismo esquema montado en este
$ tutorial.
*
5
$
0
$
Encender un LED con un pulsador
0DWHULDOHV (-(5&,&,26
$UGXLQR812 5HVLVWHQFLD.
/('$PDULOOR 3URWRERDUG 8QDmultinacional francesaexperta en ma-quinaria industrial te hacontratado
para que auto-matices una mquina cortadora de papel. La condicin principal
3XOVDGRU &RQHFWRUHV00
es que el operario de la mquina cuando vaya a realizar el corte siempre
mantenga las dos manos ocupadas, esta es una regla de seguULGDG LQGXVWULDO
SDUD HYLWDU DFFLGHQWHV (O RSHUDULR GHEH RSULPLU ORV GRV SXOVDGRUHV XQR FRQ
//------------------------------------ FDGD PDQR \ OD FXFKLOOD FRUWDGRUD GHEH EDMDU \ KDFHU HO FRUWH (O VLJXLHQWH
//Declara puertos de entradas y salidas
//------------------------------------ PRQWDMHVLPXODHOFRQWUROGHODPiTXLQDORVGRVSXOVDGRUHV6\6\HO/('
int pulsador=2; //Pin donde se encuentra el pulsador, entrada URMRVLPXODODFXFKLOODFRUWDGRUD
int led=13; //Pin donde se encuentra el LED, salida
//------------------------------------
//Funcion principal
3 //------------------------------------
void setup() // Se ejecuta cada vez que el Arduino se inicia
5 {
2 pinMode(pulsador, INPUT); //Configurar el pulsador como una entrada
pinMode(led,OUTPUT); //Configurar el LED como una salida
* }
5 //------------------------------------
//Funcion ciclicla
$ //------------------------------------
void loop() // Esta funcion se mantiene ejecutando
0 { // cuando este energizado el Arduino
$ //Condicional para saber estado del pulsador 6 6
& if (digitalRead(pulsador)==HIGH)
{
, //Pulsador oprimido
digitalWrite(led,HIGH); //Enciende el LED
}
else
1 {
//Pulsador NO oprimido
digitalWrite(led,LOW); //Apaga el LED Tu padre quiere que realices un sistema de iluminacin LED para
}
} las escaleras de la casa. La condicin es que si ests arriba y
//Fin programa pulsas a S1 o si ests abajo y pulsas S2 el LED Rojo se enciende y
al dejar de pulsar se apaga. Como gua de montaje toma la ima-
gen anterior.
'
,
$
*
5
$
0
$
Lectura de una entrada digital
0DWHULDOHV (-(5&,&,26
$UGXLQR812 &RQHFWRUHV00
3XOVDGRU 3URWRERDUG Una empresa de gaseosas tiene un sistema con dos sensores, uno de ellos indica
si la botella se ha llena-do con el lquido y el otro sensor indica si la botella ya
5HVLVWHQFLD. tiene la tapa. Para este caso simularemos los dos sensores por medio de dos
pulsadores (S1 y S2).
La rutina se describe de esta manera: si la botella se llena de manera
//------------------------------------
//Declara puertos de entradas y salidas adecuada (se debe activar S1 yPRVWUDUSRUFRQVROD*DVHRVDOOHQDOXHJRGH
//------------------------------------ HOORVLWLHQHODWDSDFRORFDGDVHGHEHDFWLYDU6\PRVWUDUSRUFRQVROD*DVHRVD
int boton=2; //Pin donde se encuentra el pulsador, entrada
WDSDGD DO ILQDOL]DU HO SURFHVR VH GHEH HQFHQGHU XQ /(' TXH LQGLFD TXH HO
//------------------------------------
//Funcion principal SURFHVR WHUPLQy ELHQ \ DGHPiV VH GHEH PRVWUDU XQ PHQVDMH SRU OD FRQVROD
3 //------------------------------------
void setup() // Se ejecuta cada vez que el Arduino se inicia *DVHRVDELHQHPSDFDGD5HFXHUGDTXHSULPHURVHGHEHDFWLYDU6\OXHJR6
5 { SDUDTXHOHSURFHVRVHDYiOLGR
//Configuracin
2 pinMode(boton,INPUT); //Configurar el boton como una entrada
Serial.begin(9600); //Inicia comunicacin serial
* }
5 //------------------------------------
//Funcion ciclicla
$ //------------------------------------
void loop() // Esta funcion se mantiene ejecutando
0 { // cuando este energizado el Arduino
$UGXLQR812 3URWRERDUG
Este reto es sencillo, pero te va a dar una idea de cmo
3RWHQFLyPHWUR. hacer grandes cosas escribiendo unas pocas lneas de
cdigo. Como bien lo sabes, la lectura de una seal
&RQHFWRUHV00
anloga te da un valor de 0 a 1023
El desafo de este ejercicio consiste en mostrar por la
//------------------------------------ FRQVRODVHULDOXQQ~PHURHQWUH\HVWHQ~PHUR
//Funcion principal GHEHFDPELDUFXDQGRPXHYDVHOSRWHQFLyPHWUR
//------------------------------------ Suge-rencia Revisa la funcin map()
void setup() // Se ejecuta cada vez que el Arduino se inicia
3 {
Serial.begin(9600); //Inicia comunicacin serial Piensa en un nmero secreto de 0 a 1023 y gurdalo en una variable entera,
5 } haz un programa para que tu amigo deba mover el potencimetro, si el nmero
2 //------------------------------------ que el va generando (mostrar por consola serial el valor de la lectura del
* //Funcion ciclicla
//------------------------------------
potencimetro) al girar el potencimetro est 10 nmeros por arriba o 10
5 void loop() // Esta funcion se mantiene ejecutando nmeros por abajo al nmero que tu pensaste y confirma con
$ { // cuando este energizado el Arduino
0 //Guardar en una variable entera el valor del potencimetro 0 a 1024
el pulsador S1 que ese
$ int valor= analogRead(A0); es el nmero, el progra-
& ma debe mostrar por
//Imprime en la consola serial el valor de la variable
, Serial.println(valor);
consola Adivinaste el
nmero de lo contrario
//Retardo para la visualizacin de datos en la consola Intenta de nuevo.
1 delay(100); 6
}
//Fin programa
'
,
$
*
5
$
0
$
Escritura serial
0DWHULDOHV (-(5&,&,26
$UGXLQR812 Avisos luminosos S.A. te ha contratado para que realices un programa que tiene la
/('9HUGH caracterstica de recibir datos, porque la idea es que el aviso de luces se ubique en el piso
1 del Edificio y tu lo puedas controlar desde el piso 1, as que por cada letra que le
escribas por teclado a la Consola serial el programa debe hacer determinada rutina con tres
LEDs, si le escribes:
$UGXLQR812 &RQHFWRUHV00
6H quiere tener unas luces de intensidad variables en la sala de uQ casa, VHquiere poca luz
/('$PDULOOR 3URWRERDUG para los momentos en que la familia comparte para mantener la armona peroVH requiere
bastante luz cuando realizDQ RWUDVDFWLYLGDGHV,VH quiere tener el control de la intensidad
5HVLVWHQFLD
de luz mediante un potencimetro. Tu tarea es realizar el SURJUDPDTXHDOOHHUXQDHQWUDGD
DQiORJD GH XQ SRWHQFLyPHWUR VH DMXVWH HO YDORU GH 3:0 GH XQ /('
UHFXHUGDHVFDODUHOYDORUPDS
//--------------------------------------------------
//Declara puertos de entradas y salidas y variables
//--------------------------------------------------
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
3 //------------------------------------
//Funcion principal
5 //------------------------------------
void setup () // Se ejecuta cada vez que el Arduino se inicia
2 {
pinMode(led, OUTPUT); //Configurar el LED como una salida
* }
5 //------------------------------------
$ //Funcion ciclicla
//------------------------------------
0 void loop () // Esta funcion se mantiene ejecutando
{ // cuando este energizado el Arduin
$ // Escritura analoga (PWM) en el LED escribo el valor de brillo
& analogWrite(led, brillo);
'
,
$
*
5
$
0
$
Control ON/OFF con potencimet ro
0DWHULDOHV (-(5&,&,26
$UGXLQR812 5HVLVWHQFLD
Un carro de tunnig tiene luces de nen en la parte de abajo, ste es la sensacin de la
/('9HUGH &RQHFWRUHV00 feria. El piloto controla las luces (tres LEDs) por medio de un potencimetro al lado de la
palanca de cambios, l tiene tres opciones de luces de acuerdo al valor de lectura del
3RWHQFLyPHWUR. 3URWRERDUG
potencimetro que va de 0 a 1023:
0 - 350 Intermitencia de los 3 LED a 100ms
'
,
$
*
5
$
0
$
Control de un LED con una fotocelda
0DWHULDOHV (-(5&,&,26
$UGXLQR812 5HVLVWHQFLD. 3URWRERDUG Te proponemos que crees un sensor para medir la luz que irradia un cuerpo luminoso.
/('9HUGH &RQHFWRUHV00 Vamos a tener dos equipos el A y el B. En el equipo A va estar un LED que varia su brillo
de acuerdo a la posicin de un potencimetro y en el equipo B va estar comandado por
)RWRFHOGD 5HVLVWHQFLD. una fotocelda. La idea es que dobles el LED y la fotocelda a 90, los coloques lo ms
junto posible y los enfrentes, como si los dos se fueran a mirar de frente. Por consola serial
debes ir mostran-do la lectura de luz de la fotocelda, esta lectura debe ser en porcentaje
de 0% a 100%. Un ejemplo de la salida por consola: &RQFHQWUDFLyQGHOX]
//------------------------------------
//Funcion principal
//------------------------------------
void setup() // Se ejecuta cada vez que el Arduino se
inicia {
Serial.begin(9600); //Inicia comunicacin serial
pinMode(9,OUTPUT);
//Configurar el pin 9 como una salida de PWM
}
//------------------------------------
//Funcion ciclicla
3 //------------------------------------
void loop() // Esta funcion se mantiene ejecutando
5 { // cuando este energizado el Arduin
2 //Guardar en una variable el valor de la lectura anloga de la
// fotocelda La biloga 0DUtD3DXODes la encargada de cuidar el gran Herbariode Santa
* int foto = analogRead(A0);
Mnica CA donde se preservan diversas plantas. Bilumetium, es un tipo de
5 //Verifica el valor mximo y realizar una conversin
int conversion = 780 - foto; rosa que requiere a temprana edad iluminacin del tipo encen-dido/
$
//Condicional para establecer un valor absoluto apagado, cuando su sensor de luz es mayor a 600 la luz se debe encender
0 if ( conversion < 0)
conversion = conversion * -1; //Multiplicar por -1 porque es negativo (LED1), cuando la planta es adulta se requiere de una iluminacin
$ proporcional, en la medida que va oscureciendo la luz se va
//Imprimir datos del valor de la lectura anloga de la fotocelda
& Serial.print("Foto : "); encendiendo gradualmente (LED2). Mediante el pulsador S1 se activa el
Serial.print(foto);
, Serial.println(""); programa de planta joven y mediante el pulsador S2 se activa el programa
//Imprimir datos del valor de la conversin correspondiente a la planta adulta.
Serial.print("Conv : ");
1 Serial.print(conversion);
Serial.println(""); /('
//Escritura anloga de PWM en el LED de acuerdo a la conversin
analogWrite(9, conversion); /('
$UGXLQR812 5HVLVWHQFLD.
Para la prxima fiesta el DJ Lui Lote te ha contratado para que incorpores un show de luces
/('$PDULOOR &RQHFWRUHV00 realmente fantstico, para ello l tiene a disposicin un botn 1 (B1) que puede oprimir
muchas veces, el nmero de veces que l pulse es el nmero de veces que van a prender y
3XOVDGRU 3URWRERDUG apagar las luces a intervalo de 1s. Se utiliza un botn 2 (B2) para confirmar la rutina. Una
vez acabe de hacer la rutina el sistema debe quedar listo para darle muchos ms pulsos y
ver otra rutina distinta.
//--------------------------------------------------
//Declara puertos de entradas y salidas y variables
//--------------------------------------------------
int conta = 0; //Variable para guardar el conteo de los pulsos
//------------------------------------
//Funcion principal
//------------------------------------
void setup() // Se ejecuta cada vez que el Arduino se inicia
{
Serial.begin(9600); //Inicia comunicacin serial
pinMode(2,INPUT); //Configura el pin 2 como una entrada, pulsador
pinMode(13,OUTPUT); //Configura el pin 13 como una salida, LED
}
3 //------------------------------------
5 //Funcion ciclicla
//------------------------------------ % %
2 void loop() // Esta funcion se mantiene ejecutando
{ // cuando este energizado el Arduino
* // Si el pulsador esta oprimido
if ( digitalRead(2) == HIGH )
5 {
// Si el pulsador no esta oprimido, flanco de bajada
$ if ( digitalRead(2) == LOW )
{
0 conta++; //Incrementa el contador
Serial.println(conta); //Imprime el valor por consola
$ delay (100); // Retardo
} El DJ Lui Lote del ejercicio 1 regreso recargado con nuevas ideas para su Show. Ahora
& } cuenta con tres distintas zonas de iluminacin para su pista de baile, en su consola de DJ
, // Si el valor del contador es 5 tiene un botn para dar un cier-to nmero de pulsos y luego por la Consola Serial el dice a
if (conta==5)
{ que zona de iluminacin se le asignan esos pulsos a intervalos de 1s. Las palabras que
digitalWrite(13,HIGH); //Enciende el LED recibe la Consola Serial son: ]RQD]RQD]RQD
1 }
// Si el valor del contador es 8
if (conta==8)
{
digitalWrite(13,LOW); // Apaga el LED
} ]RQD ]RQD]RQD
}
//Fin programa
'
,
$
*
%RWyQ
5
$
0
$
LED RGB apoyado de tabla de colores
0DWHULDOHV (-(5&,&,26
$UGXLQR812 &RQHFWRUHV00
La iluminacin de la recepcin del Hotel V+(5$721 es algo especial porque de acuerdo al estado de animo
/('5*% 3URWRERDUG del dueo el Sr. Martin, se debe configurar la luz en una escala RGB. El operario de las luces es muy
LQWHOLJHQWH ya que se encarga de recibir los colores deseados por el Sr. Martin, as que el operario se
5HVLVWHQFLD encarga de escribir por Consola Serial un valor RGB separado por comas (,). As que debes desarrollar un
programa que tome esta informacin y la aplique a un LED RGB, toma como
255,0,0 -> LED RGB muestra el tono Rojo
//-------------------------------------------------- 153,255,0 -> LED RGB muestra un Verde limn
& //Declara puertos de entradas y salidas y variables
//-------------------------------------------------- 0,102,255 -> LED RGB muestra un Azul cielo
int ledRojo = 9; //Declara Pin LED Rojo
int ledVerde=10; //Declara Pin LED Verde El operario del punto anterior se va de vacaciones por lo cual el Sr. Martin esta muy molesto porque no
' int
ledAzul=11; //Declara Pin LED Azul
entiende muy bien como escribir el color separado por comas. Por ello al operario se le ha ocurrido una
, //------------------------------------ gran idea, colocar dos pulsadores:
//Funcion principal
* //------------------------------------ Pulsador 1 (S1) permite escoger un color dentro de un men (Rojo, Verde o Azul), cada vez que se pulse
void setup() // Se ejecuta cada vez que el Arduino se inicia S1 el texto por Consola Serial que dice el color debe cambiar, debe tener antirebote para que por cada
{ pulso dado solo cambie un color. Un ejemplo del pulso dado y el valor mostrado por consola:
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 Pulso 1 -> Rojo
} Pulso 2 -> Verde
' Pulso 3 -> Azul
//------------------------------------ Pulso 4 -> Rojo
( //Funcion ciclicla
//------------------------------------
void loop() // Esta funcion se mantiene ejecutando Pulsador 2 (S2) permite variar el color de 0 a 255 del ltimo nombre del color que quedo asignado median-
{ // cuando este energizado el Arduino te el Pulsador 1 (S1). Mientras se mantenga pulsado S2 a intervalos de 100ms (milisegundos) la variable de
ese color se debe ir incrementando de uno en uno. Se debe imprimir el nombre del Color (ltimo estado
// Llamado a la funcin Color que recibe
3 // 1er posicion: Intensidad Rojo debido a S1) y a continuacin el valor numrico del color, finalmente el resultado se debe ir viendo refle-
// 2da posicin: Intensidad Verde jado en el LED RGB. Por ejemplo de acuerdo al ltimo estado del Pulso 4 y luego se pulsa S2:
5 // 3ra posicin: Intensidad Azul
color(255,0,0); //Rojo Pulso 4 -> Rojo
2 delay(1000); Rojo 0
* 100ms
color(0,255,0); //Verde Rojo 1
5 delay(1000); 100ms
Rojo 2
$ color(0,0,255); //Azul
delay(1000);
Ayudas para resolverlo: Por cada color debes crear dos variables, una para guardar el nombre del color y
0 color(255,255,255); //Blanco la otra para guardar el valor numrico que llevas de ese color.
$ delay(1000);
& color(255,0,255); //Magenta
delay(1000);
, color(255,128,0); //Naranja /('5*%
delay(1000);
1 }
//------------------------------------
//Funcion color
//------------------------------------
6 6
void color(int rojo, int verde, int azul){
//Escritura de PWM del color Rojo
analogWrite(ledRojo, 255-rojo);
//Escritura de PWM del color Verde
analogWrite(ledVerde, 255-verde);
//Escritura de PWM del color Azul
analogWrite(ledAzul, 255-azul);
}
//Fin programa
Control ON/OFF de un motor
0DWHULDOHV (-(5&,&,26
//--------------------------------------------------
//Declara puertos de entradas y salidas y variables
//--------------------------------------------------
Al mercado ha salido un nuevo detergente para lavadoras, con una gran novedad, si cuando
int pulsador =7; //Declara Pin del pusaldor uses el deterge en tu lavadora esta bate hacia la derecha ' a determinado tiempo es
int motor=3; //Declara Pin del motor
posibleremover las manchas en la ropa mientras que si la lavadora bate a la izquierda ,a
3 //------------------------------------
//Funcion principal determinado tiempo al final del ciclo de lavado la ropa tendr una textura muy sedosa
5 //------------------------------------ como si se le hubiera aplicado suavizante. La empresa %UHVFRV 6$ GH & 9 gran
void setup() // Se ejecuta cada vez que el Arduino se inicia
2 { fabricante de lavadores quiere implementar este sistema, para ello te ha contratado para
pinMode(pulsador,INPUT); //El pulsador como una entrada que desarrolles el programa que de DFXHUGRDORTXHVHUHFLEDSRUFRQVRODVHGHEHRSHUDU
* pinMode(motor,OUTPUT); //El motor como una salida
} ODODYDGRUDSRUHMHPSOR
5 //------------------------------------
//Funcion ciclicla 'Lavadora bate a la derecha por 3 segundos
$ //------------------------------------
void loop() // Esta funcion se mantiene ejecutando ,Lavadora bate a la izquierda por 2 segundos
0 { // cuando este energizado el Arduino
// Si el pulsador se encuentra oprimido $ Lavadora apagada
$
if(digitalRead(pulsador) == HIGH){
&
digitalWrite(motor,HIGH); //Enciende el motor
, }else{ //si el pulsador no esta oprimido
digitalWrite(motor,LOW); //Apaga el motor
1 }
}
// Fin programa
'
,
$
*
5
$
0
$
&RQWURO3:0GHXQPRWRU
0DWHULDOHV (-(5&,&,26
$UGXLQR812 5HVLVWHQFLD. 7LHQHVXn gran ventilador (motor) de alta potencia, el control de la velocidad del YHQWLODGRU
HV HQ EDVH D XQ SRWHQFLRPHWUR HQ OD PHGLGD TXH VH JLUH HO SRWHQFLyPHWUR OD YHORFLGDG
7UDQVLVWRU131 &RQHFWRUHV00 GHEH LU FDPELDQGR 7X PLVLyQ HV GHVDUUROODU XQ SURJUDPD TXH FXPSOD FRQ HVWDV
FDUDFWHUtVWLFDV
0RWRU'& 3URWRERDUG
//--------------------------------------------------
//Declara puertos de entradas y salidas y variables
//--------------------------------------------------
int motor=3; //Declara Pin del motor
//------------------------------------
//Funcion principal
//------------------------------------
void setup() // Se ejecuta cada vez que el Arduino se inicia
{
Serial.begin(9600); //Inicia la comunicacion serial Arduino-PC
}
3
//------------------------------------
5 //Funcion ciclicla
//------------------------------------
2 void loop() // Esta funcion se mantiene ejecutando
{ // cuando este energizado el Arduino
* La ltima novedad de la Feria de Electrodomsticos ha dejado con gran renombre una
// Si hay algun valor en la Consola Serial
5 licuadora que incorpora dos pulsadores mediante los cuales es posible variar las 10
if (Serial.available()){
diferentes velocidades (0 a 9) al momento de licuar. Todo esto se apoya desde la Consola
$ //Variable donde se guarda el caracter enviado desde teclado serial donde es posible ver la Velocidad escogida, los pulsadores se ajustan de la siguiente
char a = Serial.read();
0 manera:
// Si el caracter ingresado esta entre 0 y 5
$ if (a>='0' && a<='5'){ Pulsador 1 (S1) permite escoger una velocidad dentro de un men (Velocidad 0 Velocidad 9), cada vez
que se pulse S1 el texto por Consola Serial que dice la velocidad debe cambiar, debe tener antirebote
& //Variable para escalar el valor ingresado a rango de PWM
int velocidad = map(a,'0','5',0,255); para que por cada pulso dado solo cambie una velocidad. Un ejemplo del pulso dado y el valor mostrado
, //Escritura de PWM al motor por consola:
analogWrite(motor,velocidad);
//Mensaje para el usuario Pulso 1 -> Velocidad 0
Serial.print("El motor esta girando a la velocidad "); Pulso 2 -> Velocidad 1
1 Serial.println(a); Pulso 3 -> Velocidad 2
}else{ // Si el caracter ingresado NO esta entre 0 y 5 Pulsador 2 (S2) al pulsar S2 por primera vez el motor debe comenzar a girar a la velocidad escogida me-
diante S1, si se pulsa por segunda vez S2 el motor debe parar. Por Consola serial se debe mostrar
//Mensaje para el usuario Licuadora girando a la velocidad x o Licuadora detenida segn corresponda.
Serial.print("Velocidad invalida");
Serial.println(a);
}
}
}
//Fin programa
6 6
'
,
$
*
5
$
0
$
*HQHUDGRUGHWRQRVFRQEX]]HU
0DWHULDOHV (-(5&,&,26
$UGXLQR812 &RQHFWRUHV00
%X]]HU 3URWRERDUG Te proponemos hacer un sintetizador musical de dos
3RWHQFLyPHWUR. tonos, usando dos pulsadores. La idea es que al pulsar S1
se produzca un tono a una frecuencia de 400Hz con una
//--------------------------------------------------
duracin de 100ms, mientras si presionas S2 se produce
//Declara puertos de entradas y salidas y variables
//--------------------------------------------------
un tono a frecuencia de 2600Hz con una duracin de
int
buzzer = 9; //Declara Pin del buzzer
int tono = 0; //Declara Pin del potencimetro 200ms. Combina estos dos tonos hasta que desarrolles una
//------------------------------------ meloda.
//Funcion principal
3 //------------------------------------
void setup() // Se ejecuta cada vez que el Arduino se inicia
5 {
// No se configuran parmetros inciales, pero se debe
2 // colocar el encabezado de la funcin setup()
}
*
5 //------------------------------------
//Funcion ciclicla
$ //------------------------------------
void loop() // Esta funcion se mantiene ejecutando
0 { // cuando este energizado el Arduino
$ //Variable entera donde se almacena el valor del potencimetro
int sensor = analogRead(tono);
& 6 6
//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;
1
//Funcion tone(), que recibe:
// 1ra posicin: Pin del elemento sonoro
// 2da posicin: Frecuencia deseada en Hz
// 3ra posicin: Duracin del tono
tone(buzzer, frecuencia, duracion);
//Retardo
delay(100);
}
//Fin programa
'
,
$
*
5
$
0
$
Referencia rpida para programar
V +Constantes +Utilidades
A - byte - sizeof()
- HIGH | LOW
- int
R - INPUT | OUTPUT +Conversin
- word
- true | false - char()
I - long
- Constantes enteras - byte()
A - Constantes flotante
- unsigned long
- float - int()
B +Tipos de datos - word()
- double
L - void - string - arreglo char - long()
E - boolean - String - objeto - float()
- char - array
S
F
+Digital I/O
- pinMode() U
- digitalWrite() N
- digitalRead() C
+Nmeros aleatorios
- randomSeed() I
+Analogo I/O - random()
- analogReference() O
- analogRead() N
- analogWrite() - PWM E
+Bits y Bytes
- lowByte() S
+Avanzadas I/O - highByte()
- tone()
- bitRead()
- noTone()
- bitWrite()
- shiftOut()
- bitSet()
- shiftIn()
- bitClear()
-pulseIn()
- bit()
L
- EEPROM - leer y escribir I
- Ethernet - conectarse a Internet B
- Cristal lquido - control de LCD
- SD - lectura y escritura de tarjetas SD
R
- Servo - control de servomotores E
- SPI - comunicacin por el bus SPI R
- Paso a paso - control de motores
- Wire - enviar y recibir datos TWI/I2C
A
y muchas ms visita S
arduino.cc