Webcervices. Con la tecnología de Blogger.
RSS

Unete a nuestro grupo de facebook

Unete a nuestro grupo de facebook
Hola que tal lectores de esta pagina tan maravillosa que es arduino Tec ...Los invito a que amplíen mas sus conocimientos en Arduino y Raspberry Pi Uniéndose a mi grupo Arduino Tec

Multi proyectos 0133

Utilización mando infrarrojos III: Control servomotor

En esta ocasión, pasaremos a controlar un servomotor con nuestro mando y sensor de infrarrojos. Además, incorporaremos de forma auxiliar dos LEDs para conseguir un mayor atractivo al proyecto.


Ver Utilización mando infrarrojos I: Lectura código y ejemplo para una introducción y entender la lectura de los códigos del mando.



Primero, realizaremos el circuito, teniendo en cuenta los componentes a utilizar:

  • LED azul, junto con su resistencia de 220Ω
  • LED verde, junto con su resistencia de 220Ω
  • Servomotor
  • Sensor de infrarrojos junto con una resistencia de 220Ω
  • Breadboard
  • Cables


(un poco engorroso el dibujo, pero no hemos encontrado otra posibilidad. Si se trabaja paso por paso no es complicado)

En cuanto al sketch, es el siguiente:


#include
#include //Librería del protocolo NEC
#include // Librería del servo
#define IRPIN 8 // Pin del receptor IR
#define verde 13
#define azul 12

NECIRrcv ir(IRPIN);

/*INFORMACION LECTURAS
power = 3125149440;  //Código correspondiente al boton POWER del mando a distancia
uno = 4077715200; //Código correspondiente al botón 1 del mando a distancia
dos = 3877175040; //Código correspondiente al botón 2 del mando a distancia
tres = 2707357440; //Código correspondiente al botón 3 del mando a distancia
mas = 4127850240;
menos = 3927310080;
*/

Servo servo;

void setup()
{
  servo.attach (6);
  pinMode (verde, OUTPUT);
  pinMode (azul, OUTPUT);
  //Serial.begin(9600); //Iniciamos comunicación serie
  ir.begin(); //Iniciamos la recepción IR
  
}

void loop()
{
  unsigned long ircode; //Variable que contendrá el código decimal del botón pulsado
  while (ir.available()) 
  {
    ircode = ir.read(); //Leemos el código del botón pulsado
    
     switch (ircode){
       
       case 3125149440: //power
       digitalWrite (verde, LOW);
       digitalWrite (azul, LOW);
       servo.write (90);
       break;
       
       case 4077715200: // uno
       digitalWrite (verde, LOW);
       digitalWrite (azul, LOW);
       servo.write (60);
       delay (500);
       servo.write (120);
       delay (500);
       servo.write (60);
       delay (500);
       servo.write (120);
       break;
       
       case 3877175040: // dos
       digitalWrite (verde, HIGH);
       digitalWrite (azul, HIGH);
       servo.write (90);
       break;
       
       case 2707357440:  // tres
       digitalWrite (azul,LOW);
       digitalWrite (verde, LOW);
       delay(500);
       digitalWrite (verde, HIGH);
       delay(500);
       digitalWrite (verde, LOW);
       delay(500);
       digitalWrite (verde, HIGH);
       delay(500);
       digitalWrite (verde, LOW);
       delay(500);
       digitalWrite (verde, HIGH);
       delay(500);
       digitalWrite (verde, LOW);
       delay(500);
       digitalWrite (verde, HIGH);
       delay(500);
       digitalWrite (verde, LOW);
       break;
       
       case 4127850240: // más
       digitalWrite (verde, LOW);
       digitalWrite (azul, HIGH);
       servo.write (170);
       break;
       
       case 3927310080: // menos
       digitalWrite (verde, HIGH);
       digitalWrite (azul, LOW);
       servo.write (15);
       break; 
    
      default: //cualquier botón pulsado
      digitalWrite (azul, LOW);
      digitalWrite (verde, LOW);   
     }
  }
}


En cuanto a la declaración y uso de los LEDs, es recomendable echarle un vistazo a Diodo LED. Introducción y ejemplos, mientras que para el servomotorconsultar Servomotor. Introducción y ejemplos.

Observamos el bloque switchUn bloque switch es una forma más compacta de escribir un "if else". Está compuesto por secciones ("case") y, opcionalmente se utiliza una sección"default". Si al comprobar el valor que se encuentra dentro del paréntesis, éste coincide con uno de los case, se ejecutarán las instrucciones del interior del mismo, finalizando dichas instrucciones con un "break". El "default" se ejecutará cuando no coincida con ningún "case". Éste se colocará en última instancia y solo podrá haber uno.
Hay que tener en cuenta que el valor que se comprueba en el "case" debe ser  de valorentero (en el caso de la programación para Arduino, aunque en otros lenguajes de programación sí que es posible comparar otro tipo de datos).
Además, si se ejecuta un "case" (el primero que aparezca escrito en el sketch), no es posible que se ejecute otro "case", aunque cumpla la condición.


Finalmente, el resultado obtenido se muestra en el siguiente vídeo:




Y esto es todo. No dudéis en comentar y en preguntar cualquier duda.
Gracias por la atención.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentarios:

Publicar un comentario

Objetivo Y Reclamaciones

Este blog es un portal en el cual se publican contenidos de diferentes blogs.En los cuales se les anexa al pie de pagina un enlace a su pagina original aquí encontraran toda clase de proyectos de arduino y linux
Espero tengan una gran experiencia en este blog un Gran Saludo
de parte de la organización WebCervices..
objetivo
O del grupo ArduinoTec De arduino
Cualquier reclamación o petición comunicar al Administrador principal o hacer un comentario en la publicación que se sientan inconformes en los correos
electriarias@gmail.com
y para temas de suma importancia mi correo personal
pabioarias@hotmail.com

Siguenos en Twitter

Like

Unete a nuestro grupo de facebook

Hola que tal lectores de esta pagina tan maravillosa que es arduino Tec ...Los invito a que amplíen mas sus conocimientos en Arduino y Raspberry Pi Uniéndose a La mi grupo Arduino Tec

Unete Al Grupo De facebook

Unete Al Grupo De facebook
Amplia tus conocimientos debatiendo temas de Arduino y Raspberry pi