Curso de ArduinoWord
Curso de ArduinoWord
Curso de ArduinoWord
Arduino
Descripcion
Este curso pretende dar a conocer los mecanismos de programacion de la placa Arduino, sus
principales caracteristicas y usos y aplicaciones.
Ya que el objetivo principal de Arduino es interactuar con el mundo fisico, se incluyen en
este curso los conocimientos y recursos necesarios para actuar en el mundo real. Ademas, se
impartiran unas minimas nociones de electronica que son necesarias para trabajar con
seguridad con los componentes electronicos y realizar correctamente todas las practicas.
Objetivos
Tras finalizar el curso, los alumnos -aun sin tener conocimientos previos ni de electronica ni
de programacion- contaran con las habilidades, recursos y conocimientos necesarios para
poder planificar, disenar, prototipar y construir por su propia cuenta circuitos con Arduino
de una complejidad moderada.
1. ^Que es Arduino?
2. Caracteristicas de Arduino.
3. Diferentes tipos de Arduino.
4. Conceptos basicos de electronica, ley de Ohm y la analogia del agua.
5. Presentation del Arduino Mega, descripcion de componentes del kit basico
6. Fritzing.
7. Software de Arduino.
8. Lenguaje Arduino.
9. Practical: Hola mundo
10. Practica 2: Encendido y apagado con un Boton pulsador
11. Practica 3: Entrada Analogica y Salida PWM
12. Practica 4: Salidas PWM
13. Practica 5: Monitoreando una Senal Digital
14. Practica 6: Buzzer( zumbador )
15. Practica 7: Uso de una foto-resistencia como sensor de luz
16. Practica 8: Leer de temperatura
17. Practica 9: Encender Led desde Pagina Web
18. Practica10: Almacenar Temperatura en MYSQL
19. Practica 11: Sensor Ultrasonidos HC-SR04 para Medir Distancia
20. Practica 12: Sensor Ultrasonidos HC-SR04 para estacionar un vehiculo
Material: canon, mesas de trabajo, laptop
a_zazuetag@hotmail.com
1. ^Que es Arduino?
Arduino es una marca de microcontroladores mundialmente conocida por los amantes de la
electronica, la programacion y la robotica. Es un proyecto Open Source que pone a
disposition de sus usuarios una amplia gama de dispositivos basados en el microcontrolador
AtMega. Es posible comprar una placa Arduino armada o bien conseguir las piezas para uno
mismo desarrollar sus propios dispositivos.
Arduino Mega, cuyas caracteristicas presentare a continuation.
Arduino Mega puede ser alimentado mediante el puerto USB o con una fuente externa de
poder. La alimentacion es seleccionada de manera automatica.
Cuando se trabaja con una fuente externa de poder se debe utilizar un convertidor AC/DC y
regular dicho voltaje en el rango operativo de la placa. De igual manera se puede alimentar
el micro mediante el uso de baterias. Preferiblemente el voltaje debe estar en el rango de los
7V hasta los 12 V.
Arduino Mega posee algunos pines para la alimentacion del circuito aparte del adaptador
para la alimentacion:
VIN: A traves de este pin es posible proporcionar alimentacion a la placa.
5V: Podemos obtener un voltaje de 5V y una corriente de 40mA desde este pin.
3.3V: Podemos obtener un voltaje de 3.3 V y una corriente de 50mA desde este pin.
GND: El ground (0V) de la placa.
Arduino puede ser programado de una manera muy facil utilizando el lenguaje propio de
Arduino junto con la interfaz Arduino IDE.
Nano
cable USB estandar y contiene todo lo necesario para programar la placa. Se puede ampliar
con gran variedad de shields. Tiene un ATmega328, tambien consta de 14 pines de
entrada/salida de los cuales 6 se pueden usar como salidas PWM, 6 entradas analOgicas, un
velocidad de reloj de 16 MHz y un conector 1CPS.
Una placa compacta disenada para usar directamente en placas de desarrollo, el Nano se
conecta al ordenador con un cable Mini-B USB. Basado en el ATmega328 (Arduino Nano
3.0) o ATmega168 (Arduino Nano 2.x) que se usa conectandola a una protoboard. Tiene mas
o menos la misma funcionalidad que el ArduinoDuemilanove, pero con una presentaciOn
diferente. No posee conector para alimentaciOn externa, y funciona con un cable USB MiniB en vez del cable estandar.
Mega
Mas grande y potente placa Arduino, compatible con los shields de Duemilanove, Diecimila
y Uno. Basada en ATmeg1280. Tiene 54 entradas/salidas digitales (de las cuales 14
proporcionan salida PWM), 16 entradas digitales, 4 UARTS (puertos serie por hardware),
un reloj de 16MHz, conexion USB, entrada de corriente, conector ICSP y boton de reset.
Contiene todo lo necesario para hacer funcionar el microcontrolador; simplemente conectalo
al ordenador con el cable USB o alimentalo con un trasformador o bateria para empezar.
LilyPad
LilyPad - Disenado para aplicaciones sobre prendas, esta placa puede ser cosida a la ropa y
es de color purpura y con un diseno con estilo. Esta basado en el ATmega 168 V (de menor
consumo que la version ATmega168) o el ATmega328V.
Fio
Disenada para aplicaciones inalambricas. Incluye un zocalo para XBee, un conector para
baterias LiPo y electrOnica para cargar baterias. Basada en el ATmega328P. Tiene 14 pines
de E/S digitales (de los cuales 6 pueden usarse como salidas PWM), 8 entradas analOgicas,
un resonador en placa, un botOn de reinicio (reset), y agujeros para montar conectores de
pines. Tiene conexiones para una bateria de polimero de Litio e incluye un circuito de carga
a traves de USB. En el reverso de la placa tiene disponible un zocalo para mOdulos XBee.
Esta disenado para aplicaciones inalambricas.
Mini
Pro Mini
Como la Pro, la Pro Mini esta disenada para usuarios avanzados que requieren de bajo coste,
menor tamano y dispuestos a un poco de trabajo extra.
Es una placa con un microcontrolador ATmega168. Tiene 14 E/S digitales (6 de las cuales se
puedes utilizar como salidas PWM), 6 entradas analogicas, un resonador interno, boton de
RESET y agujeros para el montaje de tiras de pines. Se le puede montar una tira de 6 pines
para la conexion a un cable FTD1 o a una placa adaptadora de la casa Sparkfun para dotarla
de comunicacion USB y alimentaciOn.
La Arduino Mini Pro esta destinada a instalaciones semi-permanentes en objetos o
demostraciones. La placa viene sin conectores montados, permitiendo el uso de varios tipos
de conectores o soldado directo de cables segun las necesidades de cada proyecto en
particular. La distribucion de los pines es compatible con la Arduino Mini.
5. Fritzing
Fritzing es una iniciativa de software libre para apoyar a disenadores, artistas,
investigadores y aficionados para trabajar de manera creativa con la electronica
interactiva.
6. Software de Arduino.
El programa se implementara haciendo uso del entorno de programacion propia de
Arduino y se transferira empleando un cable USB. No es preciso utilizar una fuente de
alimentacion externa, ya que el propio cable USB la proporciona, para la realization de
algunos de los experimentos practicos si que sera necesario disponer de una fuente de
alimentacion externa ya que la alimentacion proporcionada por el USB puede no ser
suficiente. El voltaje de la fuente puede estar entre 6 y 25 voltios.
Para programar la placa es necesario descargar de la pagina web de Arduino el entorno
de desarrollo (IDE). Se dispone de versiones para Windows y para MAC, asi como las
fuentes para compilarlas en LINUX.
Instalacion:
Tener la version mas reciente de JAVA: https://www.java.com/es/download/
Descargar el IDE de ARDUINO: http://arduino.cc/en/Main/Software
Conectar la Placa ARDUINO a la PC y Windows se encargara de Instalar los
Drivers, En Vista, Windows 7,8 y 8.1 los Drivers deben descargarse e instalarse
automaticamente.
En la siguiente figura se muestra el aspecto del entorno de programacion:
Lo primero que tenemos que hacer para comenzar a trabajar con el entorno de
desarrollo de arduino es configurar las comunicaciones entre la placa Arduino y la PC.
Para ello deberemos abrir en el menu Herramientas la opcion Puerto Serial. En esta
opcion deberemos seleccionar el puerto serie al que esta conectada nuestra placa
Arduino. En Windows, si desconocemos el puerto al que esta conectado nuestra placa
podemos descubrirlo a traves del administrador de dispositivos (Puertos COM
&LPT/USB Serial Port). Igualmente deberemos seleccionar el tipo de placa que
tenemos, a siguiente figura ilustra como hacerlo.
El primer paso para comprobar que todo lo que hemos hecho hasta ahora esta bien y
familiarizarnos con la interfaz de desarrollo, es abrir uno de los ejemplos. Se
recomienda abrir el ejemplo Blink. Para ello debemos acceder a traves del menu
Archivo -> Ejemplos -> 02.Digital ->BlinkWithOutDelay.
El ejemplo lo unico que hace es parpadear un LED que esta colocado en el pin numero
13 de la placa. Vamos a ver que hay que hacer para subir el programa a la placa
Arduino. Primero probaremos que el codigo fuente es el correcto. Para ello pulsamos el
boton de verification de codigo que tiene un circulo con una palomita, es el primer
icono en la barra de herramientas, ver siguiente figura:
Durante la carga del programa, en la placa USB, se encenderan los LED que indican que
se estan enviando y recibiendo information por el puerto serie TX/RX. Si todo se ha
realizado correctamente debe aparecer el mensaje Carga Terminada. Ahora tan solo
queda esperar unos segundos para comprobar que todo ha salido bien. Si el LED
colocado en el pin 13 de la placa se enciende y se apaga cada segundo entoces ha salido
bien.
Curso de
Arduino
7. Lenguaje Arduino.
El lenguaje de programacion que maneja ARDUINO esta basado en C/C++, los programas
que realicemos se componen de tres partes principales:
1. Estructuras.
2. Valores (Variables y Constantes).
3. Funciones.
La estructura basica esta compuesta en dos partes:
Setup() Constituye la preparation del programa, en ella declaramos las variables y es
la primer sentencia que ejecuta el programa. Esta funcion solo es ejecutada una sola
vez y la empleamos para configurar los pinMode() e iniciar la comunicacion.
Loop() Es la ejecucion, la cual es ejecutado continuamente (leyendo las entradas de
la placa, salidas, etc.).
Cada instruction termina con un ; y los comentarios son con // o un bloque de
comentarios con /*...*/.
FUNCIONES: Son bloques de codigo identificado por un nombre y es ejecutado cuando la
funcion es llamada.
VARIABLES: Una variable debe ser declarada y opcionalmente asignada a un determinado
valor. La variable puede ser de diferente tipo de dato (int, float, long).
Esta variable puede ser especificada antes de Setup() o dentro de un Bucle como un for().
El sitio en el que se declara la variable determina el ambito de la misma.
TIPO DE DATOS
boolean (booleano)
char (caracter)
byte
int (entero)
unsignedint (entero sin signo)
long (entero 32b)
unsignedlong (entero 32b sin signo)
float (en coma flotante)
double (en coma flotante de 32b)
string (cadena de caracteres)
array (cadena)
void (vacio)
ESTRUCTURAS DE CONTROL
if (comparador si-entonces)
if...else (comparador si...sino)
for (bucle con contador)
switch case (comparador multiple)
while (bucle por comparacion booleana)
a_zazuetag@hotmail.com
CONSTANTES
HIGH | LOW
INPUT|OUTPUT
true | false
Constantes Numericas
OPERADORES ARITMETICOS
= (asignacion)
+ (suma)
- (resta)
* (multiplicacion)
/ (division)
% (resto)
OPERADORES COMPARATIVOS
== (igual a)
!= (distinto de)
< (menor que)
> (mayor que)
<= (menor o igual que)
>= (mayor o igual que)
OPERADORES BOOLEANOS
&& (y)
II (o)
! (negacion)
OPERADORES DE COMPOSICION
++ (incrementa)
-- (decrementa)
+= (composicion suma)
-= (composicion resta)
*= (composicion multiplicacion)
/= (composicion division)
CONVERSION
char()
byte()
int()
long()
float()
A continuation se muestran las diferentes funciones que podemos utilizar dentro del
lenguaje de programacion ARDUINO.
E/S Digitales
pinMode()
digitalW rite()
digitalRead()
E/S Analogicas
analogRead()
analogWrite() - PWM (modulation por ancho de pulso)
E/S Avanzadas
tone()
noTone()
shiftOut()
pulseln()
Tiempo
millis()
micros()
delay()
delayMicroseconds()
Matematicas
min() (minimo)
max() (maximo)
abs() (valor absoluto)
constrain() (limita)
map() (cambia valor de rango)
pow() (eleva a un numero)
sq() (eleva al cuadrado)
sqrt() (raiz cuadrada)
Trigonometria
sin() (seno)
cos()(coseno)
tan() (tangente)
Numeros Aleatorios
randomSeed()
random()
Comunicacion
Serial
Ahora que ya conocemos todos los elementos asi como sus conceptos basicos de la
programacion ARDUINO pasemos a poner en practica lo aprendido con los siguientes
ejemplos basicos para empezar a programar sobre nuestra placa.
Curso de
Arduino
Practical: Hola mundo
Este primer proyecto Arduino consiste en aprender a activar una salida digital de nuestra
placa Arduino a la que conectaremos mediante una resistencia, un diodo LED que
parpadeara en intervalos de un segundo.
Materiales:
Diagrama:
a_zazuetag@hotmail.com
// Pone la salida 12 a OH //
Espena un segundo // Pone la
salida 12 a OFF // Espena un
segundo
El siguiente paso es verificar que nuestro programa no contenga errores para ello
presionamos el boton si nuestro proyecto esta correcto nos aparecera el sig. Mensaje:
Compilacion terminada
Tamano binario del Sketch: 1.076 bytes (de un maximo de 32.256 bytes)
22
ARDUINO para
Ahora si podremos observar como nuestro LED enciende y apaga con retraso de 1
Segundo.
Verde 25 segundos
Amarillo 5 Segundos
Rojo 10 Segundos
Materiales:
1 protoboard.
1 diodo LED.
2 resistencias 220Q.
1 pulsador.
Diagrama:
} } Variables estaticas
mt- pinEoton = Z ;
int pinLed = 1 Z ;
// Variables dinanicas
int estadoBoton =0;
void setup () {
// Inicializa el pin del LED coao salida: pinMode (pinLed,
OUTPUT);
H Inicializa el pin del boton como entrada:
pinMode(pinBoton, INPUT);
}
void loop() {
// Lee el valor del pin del boton y lo almacena // en la variable
estadoBoton
estadoBoton = digitalRead(pinBoton);
(estadoBoton == HIGH) {
// Si es asi, enciende el LED:
digitalWrite(pinLed, HIGH);
}
else {
i i Si no, lo mantiene apagado:
digitalWrite(pinLed, LOW);
}
Materiales:
Un diodo led.
Una resistencia 220 KQ.
Un Potenciometro 10KQ.
Una Protoboard.
En este proyecto vamos a realizar dos ejemplos con un mismo circuito, la diferencia entre
ellos la observaremos es el apartado de programacion, en cuanto a hardware tenemos la
novedad de este proyecto en el uso de un potenciometro combinado con una entrada
analogica, asi que primero aclararemos unos conceptos.
^Que es un POTENCIOMETRO?
Un potenciometro es una resistencia variable, podemos elegir el valor que puede tomar. De
esta forma, controlamos la intensidad de corriente que fluye por un circuito si este esta
conectado en paralelo, asf como la diferencia de potencial si esta conectado en serie.
El potenciometro dispone de tres patillas: entre las dos de sus extremos existe siempre un
valor fijo de resistencia, y entre cualquiera de los dos extremos y la patilla central tenemos una
parte de ese valor. Es decir, la resistencia maxima que ofrece el potenciometro entre sus dos
extremos no es mas que la suma de las resistencias entre un extremo y la patilla central.
simbolo electrico
Debemos colocar uno de los extremos a masa (-), otro a +Vcc y nuestra patilla central sera
nuestra tension de salida regulable, esta salida sera la que conectemos a ARDUINO y que
variara de 0v a 5v dependiendo de la position de nuestro potenciometro.
Entradas Analdgicas
^QUE ES EL PWM?
A menudo necesitaremos algo mas que una senal de 0 o 1 en nuestros proyectos, para variar
la velocidad de giro de un motor, para variar la intensidad con la que luce un diodo, para
transmitir los grados de giro de un servo, etc.
Para todo esto, y mucho mas, nos servira el PWM, que emula una senal analogica a partir de
una senal digital.
Las siglas PWM vienen de Pulse Width Modulation, o Modulacion de Ancho de Pulso.
Lo que hace este tipo de senal es emitir, en lugar de una senal continua en nuestra salida,
emite una serie de pulsos que podremos variar su duracion pero con una frecuencia
constante de aproximadamente 490Hz, de manera que la tension promedio resultante, es
directamente proporcional a la duracion de estos dentro del rango de nuestro periodo, es
decir, cuanto mas juntos esten esos pulsos de +5v, mayor sera la tension promedio de
nuestra salida, y cuanto mas distantes sean estos, menor sera dicha tension:
Diagrama:
Para monitorear las lecturas del potenciometro podemos utilizar el puerto serie, a
continuation se muestra el codigo:
Problema a solucionar: Utilizando los conocimientos de esta practica hacer que se vayan
encendiendo 5LEDs, de uno en uno a medida que variamos la resistencia interna del
potenciometro.
Los componentes que vamos a utilizar en este caso seran:
1 potenciometro 50kQ
Materiales:
Una protoboard
Una resistencia 200Q
Un Boton
Diagrama:
Materiales:
Un Buzzer
Una Protoboard
Buzzer:
Diagrama:
Una vez creado el diagrama proseguimos a insertar el codigo a nuestro Arduino el cual es el
Siguiente:
int buzzer = 8;
void setup ()
{
void loop()
{
d i gi t a l C Tii t e ( b u z z e r,1 2 3 ) ; / / e m i t e s o n l d o d e l a y ( S O O ) ;
/ / e 3 p e r a m e d i o s e c u n d o d i gi t a l U r i t e ( b u z z e r, L O W ) ; / / d e j a d e
e m i t i r d e l a y ( 5 0 0 ) ; / / e s p e r a m e d i o s e gu t i d o
}
Materiales:
Un Buzzer
Una Protoboard
5 Resistencias de 220Q
5 LEDS
Diagrama:
fritting
/ D E C L AR A C I O N D E P I N
E O C I N A int pinBuzzer = 8;
/ / D E C L A R A M O S L O S P I N E S D E N T R O D E U N AP R E G L O PAR A L O S L E D S
int ledPin[]={2,3,4,5,6};\
1
}
void loop() {
if (Serial.available() >0) {
inByte = Serial.read();
if(inByte==1 a1){
digitalWrite(ledPin[0], HIGH);
tone(pinBuzzen,50C);
delay(200);
n o Ton e ( p i n B u z z e r ) ;
or(int
tone(pinBussen,10D0);
d e l a y ( 2 0 0 ) ; n o Ton e ( p i n B u z z e t ) ;
digitalUrite(ledPinfl], LOU);
}
else if(inByte==1c1){
digitalWtite(ledPin[2], HIGH);
t o n e ( p i n B u z z e E , 1 5 0 0 ) ; delay(200);
n o Ton e ( p i n B u z z e t ) ;
digitalWtite(ledPin[2], LOW); }
else if(inByte== 1 d 1 ){
d i gi t a l W t i t e ( l e d P i n [ 3 ] , H I G H ) ;
tone(pinBuzzet,2000); delay(200);
n o Ton e ( p i n B u z z e t ) ;
d i gi t a l W t i t e ( l e d P i n [ 3 ] , L O W ) ; } e l s e
if(inEyte==1e1){
digitalUrite(ledPin[4], HIGH);
tone(pinBuzzet,2500); delay(200);
noTone(pinBuzser) ;
d i gi t a l W t i t e ( l e d P i n [ 4 ] , L O W ) ;
}
0
Al finalizar de crear nuestro codigo lo siguiente sera introducir las letras que hemos
programado, las cuales cada letra tendra un determinado TONO el cual se encuentre dentro
del RANGO permitido.
Y asi es como podemos crear tonos dentro de nuestra Arduino usando un Buzzer.
Materiales:
Diagrama:
Antes de empezar debemos conocer el componente nuevo que vamos a integrar a nuestra
Practica que es Sensor LDR.
i Que es ?
Un LDR (Light Dependent Resistor) es una resistencia que varia su valor en funcion de la luz
recibida, cuanta mas luz recibe, menor es su resistencia.
Para la conexion de un LDR a nuestro Arduino debemos hacer el divisor de tension, de donde
sacaremos la senal para conectar a nuestra entrada analogica.
Una vez creado el diagrama proseguimos a insertar el codigo a nuestro Arduino el cual es el
Siguiente:
Pi
n
Funcion
Description
Vcc
Alimentacion (5V)
OUT
GND
Conectado a tierra.
2
3
Como vemos, el sensor consta solo de 3 patillas, dos de alimentaciOn y otra que nos entrega
la lectura tomada. Lo hace de forma lineal, cada grado que sube la temperatura son 10mV
mas en esta salida. Importante de frente al sensor el voltaje va de lado izquierdo.
Materiales:
Diagrama:
Importante teniendo el sensor de temperatura de frente (el frente del sensor es la parte chata,
con los pines para abajo), el pin izquierdo es el polo positivo.
Arduino usa los pines digitales 10, 11, 12, y 13 (SPI) para comunicarse con la ethernet
shield. Estos pines no pueden ser usados para entradas/salidas genericos.
Materiales:
1 protoboard.
1 diodo LED.
1 resistencia 220Q.
1 Arduino 1
Shield Ethernet
Lo que vamos a crear con el Ethernet Shield, es un servidor Web, el cual nos proporcionara el
codigo HTML para poder verlo en nuestro navegador y poder, asi, interactuar con el.
En este caso no vamos a utilizar la red Internet sino que lo haremos a nivel local en lo que se
denomina una red LAN (Red de Area Local). Para acceder a la pagina Web que creemos,
deberemos acceder con una direccion IP perteneciente a nuestra red.
La red asignara una ip a nuestro shield al momento de conectarlo mediante el cable Ethernet,
para verificarlo podemos hacerlo desde el Comando del sistema con la instruction IPCONFIG
o desde las configuraciones del router.
Cargaremos el siguiente sketch para esto necesitaremos la IP que le fue asignada al Shiled y
su direccion MAC, en este Caso la IP sera 192.168.1.6 y la MAC que utilizaremos sera una
Universal 0xDE,0xAD,0xBE,0xEF,0xFE,0xED pero tambien se podra utilizar la MAC que ya
viene asignada al shield.
#include <SPI.h>
^include <Ethernet.h> // Incluye la libreria Ethernet
// Esta libreria Reaiiza la conexion de nuestro shield cocao cliente o servidor
//Declaracion de la direcciones MAC e IP. Tambien del puerto SO
byte mac[]={0xDE,0xAD,0xEE,0xEF,0xFE,0xED}; //MAC Universal IPAddress
ip(192,168,1,6); //IP asignada por la red al ARduino EthernetServer
servidor(80); //puerto del servidor, por default es el 80 int PIE _LED=8;
//Variable Lea String readString=3tring(30) ;
String state=String(3); //variable de estado
void
setup() {
void loop() {
E the rne tC1ient c1iente = s e rvido
r.avai1ab1e(); if(cliente) { //Cliente conectado
b o o 1 e an 1ine aenb1anc o=true;
while(cliente.connected()) { //Leemos peticion HTTP caracter a caracter
if(cliente.available()) { char c=cliente.read(); if(readstring.length()<30) {
readstring.concat(c);//Almacenar los caracteres en la variable readString
}
if(c=='\n'
1 ine aenb 1 anc o) { //Si la peticion HTTP ha finalizado
int LED = r e adS tr ing. index 0 f (" LED= r r );
if (readString. substring(LED,LED+5)
== r r LED=T r r ) {
digitalUrite(PIN_LED,HIGH); state="0N r r ;
}
}
}
state="OFF";
}
void loop(){
EthernetClient client = server.available(); if (client) {
booleancurrentLineIsBlank = true; while (client.connected()) { if (client.available())j char
c=client.read(); if (readString.length()<30){ readString.concat(c);
}
if (c=='\n' &¤tLineIsBlank){
int LED = readString.indexOf("LED=");
if (readString.substring(LED,LED+5)=="LED=T"){
digitalWrite(PIN_LED,HIGH);
state="ON";
i
else if (readString.substring(LED,LED+5)=="LED=F"){
digitalWrite(PIN_LED,LOW);
state="OFF";
}
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("<html>");
client.println("<head>");
client.println("<title>LED ON/OFF </title>");
client.println("</head>");
client.println("<body width=100% height=100%>"); client.printin("<center>M);
client.println("<h1>Led ON/OFF</h1>");
client.println("<br><br>");
client.println("Estado del LED:");
client.println(" br br br><br>");
client.println("<input
type=submit
value=ON
sty l e=wi dth:200px;height;75px
onClick=location.href='./?LED=T\'>");
client.println("< input
type=submit
value=OFF
style=width:200px;height:75px
onClick=location.href='./?LED=F\'>");
M
M
client.printin( </center> );
client.println("</body>");
client.printin(M</htmi>M); client.stop();
readString="";
i
}
i
}
Materiales:
Diagrama:
Al ignal que en el ejercicio anterior utilizaremos el Ethernet shield y deberemos detectar las
direcciones IP, asignadas tanto al shield como al servidor web, para hacer referenda a estas
desde la programacion de Arduino.
El cOdigo de Arduino se muestra a continuaciOn:
|pinclude <SFI.h>
include <Ethernet.h>
b y t e m a c [ ] = { O x D E , O x AD , O x B E , O x E F, O x F E , O x E D } ; b yt e i p [ ] =
{ 1 9 2 , 1 6 8 , 1 , 6 6 } ; 11 I P As i gn a d a a l Ar d u i n o b y t e s e r v e r [ ] = { 1 9 2 , 1 6 8 , 1 , 6 4 } ;
/ / I P del servidor web
EthernetClient client;
i n t . a n a l o g_ p i n = 0 ; 11 P i n p a r a e l s e n s o r d e Tem p e r a t u r a AO i n t . t e m p ;
void setup(){
S e r i a l . b e gi n ( 9 6 0 0 ) ;
E t h e r n e t . b e gi n ( m a c , i p ) ; / / I n i c i a l i z a l a d i r e c c i o n d e l s h i e l d
}
void loop(){
t e m p = a n a l o gR e a d ( a n a l o
g_pin);
temp=5.0*temp*100/1024;
Serial.print(temp);
Serial.printin(" oC rr);
Serial.println("Conectando..."); if(client.connect(server, 8 0 ) ) {
client.print("GET /arduino/prueba.php?temp="); c1ient.p
rint(temp); client.println(" HTTP/1.0"); client.println();
Serial.p rintin("C one c tado);
}else{
Serial.println("Error de Conexion");
}
if(client.connected()){} else {
Serial.p rintln["D e s c one c tado");
}
Para ejecutarlo, solo hay que cargar el programa en el arduino y enseguida empezara a
insertar en la base de datos las temperaturas.
Este sensor en concreto tiene un rango de distancias sensible entre 3cm y 3m con una
precision de 3mm.
^Que recibimos en el sensor? El tiempo que transcurre entre el envm y la recepcion del
ultrasonido.
Aplicaciones y ventajas
Debido a sus caracteristicas, podemos encontrar sensores de ultrasonidos en aplicaciones
como:
Medicion de nivel - en tanques que contienen diferentes productos en forma liquida-.
Control de colisiones en sistemas de aparcamiento.
Control de position en campos como robotica, industria del plastico, etc.
Control de llenado de tanques.
Las principales ventajas de estos sensores son:
No necesitan contacto fisico para poder detectar objetos.
Buena relation calidad-precio
En comparacion con otras tecnologias, los dispositivos basados en ultrasonidos son
compactos y livianos.
Materiales:
1 Sensor ultrasonidos HC-SR04
1 Arduino Mega
Diagrama:
fritting
El sensor consta de 4 pines: "VCC". Conecte el pin VCC a la salida de 5V de la placa, el pin
"Trig" conectarlo al pin ~9 digital de la placa encargado de enviar el pulso ultrasonico, el pin
"Echo" al pin 8 digital que recibira el eco de dicho pulso y por ultimo el pin "GND" a tierra.
Codigo de Arduino
Long distancia;
long tiempo;
void setup(){
Serial.begin (9600);
pinMode(9, OUTPUT); /*activacion del pin 9 como salida: para el pulso
ultrasonico*/
pinMode(8, INPUT); /*activacion del pin 8 como entrada:
tiempo del
rebote del ultrasonido*/
}
void loop (){
digitalWrite(9,LOW); /* Por cuestion de estabilizacion del sensor*/
delayMicroseconds(5);
digitalWrite(9, HIGH); /* envio del pulso ultrasonico*/
delayMicroseconds(10);
tiempo=pulseIn(8, HIGH); /* Funcion para medir la longitud del pulso
entrante. Mide el tiempo que transcurrido entre el envio
del pulso ultrasonico y cuando el sensor recibe el rebote, es decir:
desde que el pin 12 empieza a recibir el rebote, HIGH, hasta que deja de
hacerlo, LOW, la longitud del pulso entrante*/ distancia=
int(0.017*tiempo); /*formula para calcular la distancia obteniendo un
valor entero*/
/*Monitorizacion en centimetros por el monitor serial*/
Serial .printlni'"Distancia ");
Serial.println(distancia);
Serial.println(" cm");
delay(1000);
}
Materiales:
1
2
Diagrama:
Cuando un objeto se acerque a una distancia que consideremos peligrosa haremos sonar el
buzzer y encenderemos un LED rojo, cuando no haya obstaculos cerca encenderemos un
LED verde. El sistema por lo tanto tiene tanto indicadores visuales como acusticos.
Como antes, definimos primero que pines de Arduino utilizamos y como los conectamos
con los diferentes dispositivos. Respecto a la primera parte se anaden los Leds rojo y verde,
que conectaremos en los pines de Arduino 6 y 5 respectivamente, y un buzzer que
conectaremos con el pin 4.
Pin_echo = 13;
Pin_trig = 12;
Pinrojo=6;
Pinverde=5;
buzzer=4;
voidsetupW {
Serial.begin (9600);
pinMode(Pinverde,OUTPUT); //Definimos los pines
pinMode(Pinrojo, OUTPUT);
pinMode(buzzer,OUTPUT); pinMode(Pin_trig,
OUTPUT); pinMode(Pin_echo, INPUT);
}
voidloop'i {
intduracion, cm;
digitalWrite(Pin_trig, LOW); delayMicroseconds
(2); digitalWrite(Pin_trig, HIGH);
delayMicroseconds (10); digitalWrite(Pin_trig,
LOW); duracion = pulseIn(Pin_echo, HIGH); cm =
duracion / 29 / 2;
Serial .printWDistancia:");
Serial.printiom);
Serial.printlni" cm");
if(cm>20)
//20 cm es la distancia de
emergencia
{
digitalWritefPinverde, HIGH);
//En caso que un objeto este lejos,
pintamos el LED verde
digitalWrite(Pinrojo, LOW);
digitalWrite(buzzer, LOW);
}
else if(cm<20)
{
digitalWriteiPinverde, LOW); //Si el objeto esta muy cerca, hacemos
sonar la alarma buzzer y el LED rojo
digitalWrite(Pinrojo, HIGH);
digitalWrite(buzzer, HIGH);
}
delay(500);
}