viernes, 26 de agosto de 2016

Detector de distancia

En este proyecto voy a mostraros como usar un sensor de proximidad. Para  realizar la práctica utilizo un sensor HC-SR04, que funciona con un sistema de eco producido por ultrasonidos. La distancia se calcula midiendo el tiempo que tarda el sonido en volver desde que se emite.



Cuando estaba probando el circuito me fijé que el objeto tiene que estar perpendicular al sensor, porque sino el sonido rebota hacia otro lugar midiendo mal. Esto también ocurre con la luz al reflejarse en los espejos.

Para comprobar el funcionamiento acercaré un coche al sensor y se encenderán distintas luces según la distancia a la que se encuentre, cuando esté lejos estarán todos los LED apagados, y según se vaya acercando se encenderán los LED verde, amarillo y rojo.

Materiales

Para realizar este proyecto se necesita:
  • Placa Arduino Uno.
  • 3 LED de colores rojo, verde y amarillo.
  • 1 placa de prototipos sin soldadura.
  • 8 Cables macho a macho.
  • 1 sensor de proximidad HC-SR04

Realización

  1. Para la conexión de los LED ver el Proyecto 1: Simulador luces de semáforo.
  2. Las conexiones del sensor HC-SR04 son: 
    • El pin VCC del sensor al pin 5V del arduino
    • El pin TRIG del sensor al pin -9 del arduino
    • El pin ECHO del sensor al pin 8 del arduino
    • El pin GND del sensor al pin GND del arduino
Este es el código en lenguaje C necesario para el proyecto.

long distancia;
long tiempo;
int LEDrojo = 13, LEDamarillo = 12, LEDverde = 11, LEDapagados=-1;

void setup()
{
  Serial.begin(9600);
  
  //Inicializamos los pines del sensor de proximidad
  pinMode(9, OUTPUT); /*activación del pin 9 como salida: para el pulso ultrasónico*/
  pinMode(8, INPUT); /*activación del pin 8 como entrada: tiempo del rebote del ultrasonido*/
  
  //Inicializamos los pines de los LED
  pinMode(LEDrojo, OUTPUT);
  pinMode(LEDamarillo, OUTPUT);
  pinMode(LEDverde, OUTPUT);
  digitalWrite(LEDrojo, LOW);
  digitalWrite(LEDamarillo, LOW);
  digitalWrite(LEDverde, LOW);
}

void EnciendeLED(int LED)
{
  digitalWrite(LEDrojo, LOW);
  digitalWrite(LEDamarillo, LOW);
  digitalWrite(LEDverde, LOW);
  if(LED!=-1) digitalWrite(LED,HIGH);
}


void loop(){
  digitalWrite(9,LOW);   // Para estabilizar el sensor
  delayMicroseconds(5);
  digitalWrite(9, HIGH); // envio pulso ultrasonico
  delayMicroseconds(10);
  
  /* Función para medir la longitud del pulso entrante. Mide el tiempo que transcurrido entre el envío
  del pulso ultrasónico y cuando el sensor recibe el rebote */
  tiempo=pulseIn(8, HIGH);
  
  distancia= int(0.017*tiempo); // fórmula para calcular la distancia
  
  // Monitorización en centímetros por el monitor serial
  Serial.print("Distancia ");
  Serial.print(distancia);
  Serial.println(" cm");
  
  // comprobacion de la distancia en cm para encender los LED
  if(distancia<10) EnciendeLED(LEDrojo);
  else if(distancia<30) EnciendeLED(LEDamarillo);
  else if(distancia<50) EnciendeLED(LEDverde);
  else EnciendeLED(LEDapagados);  
  delay(100);
}

Si quereis cambiar la distancia en la que se encienden los LED hay que modificar los valores de la última parte del código, donde se hace la comprobación de la distancia.


Aquí podéis ver un vídeo de ejemplo, espero que os guste.





domingo, 14 de agosto de 2016

Proyecto 1: Simulador luces de semáforo

Hola, he realizado mi primer proyecto con Arduino, es un simulador de como funcionan las luces de un semáforo.
Lo que se ve en la simulación es un led rojo, a continuación se apaga y se enciende el led verde. Después de un tiempo parpadea un led amarillo, se apaga el verde y se enciende el rojo nuevamente. Se repite el ciclo permanentemente.

Materiales

Para realizar este proyecto se necesita:
  • Placa Arduino Uno.
  • 3 LED de colores rojo, verde y amarillo.
  • 1 placa de prototipos sin soldadura.
  • 4 Cables macho a macho.

Realización

  1. Se conecta un cable del pin GND (tierra) a la placa de prototipos en la fila 1.
  2. Se conectan cables de colores a los pin 11, 12 y 13 en las filas 4, 3 y 2. Para que el circuito quede más claro he utilizado cables de los mismos colores que los LED.
  3. Se coloca una patilla del LED rojo en la fila 1 y la otra en la fila 2.
  4. Se coloca una patilla del LED amarillo en la fila 1 y la otra en la fila 3.
  5. Se coloca una patilla del LED verde en la fila 1 y la otra en la fila 4.
  6. Desarrollo del programa en lenguaje C para controlar el Arduino. Lo hago con la página web codebender.cc, que permite escribir el programa y depurar los fallos. A continuación pongo el código fuente del programa.

int pR = 13, pA = 12, pV = 11;
int retarooParpadeo = 200;
int retardeEncendido = 2000;

void setup()
{
pinMode(pR, OUTPUT);
pinMode(pA, OUTPUT);
pinMode(pV, OUTPUT);
digitalWrite(pR, LOW);
digitalWrite(pA, LOW);
digitalWrite(pV, LOW);
}

void ParpadeaAmarillo()
{
for(int i = 0; i < 5; i++)
{
digitalWrite(pA, HIGH);
delay(retarooParpadeo);
digitalWrite(pA, LOW);
delay(retarooParpadeo);
}
}

void loop()
{
//Encendemos rojo
digitalWrite(pR, HIGH);
delay(retardeEncendido);
digitalWrite(pR, LOW);

//Encendemos verde
digitalWrite(pV, HIGH);
delay(retardeEncendido);

//Parpadea amarillo
ParpadeaAmarillo();

//Apagamos verde
digitalWrite(pV, LOW);
}


Aquí podéis ver un vídeo de como funciona el proyecto






    martes, 9 de agosto de 2016

    Presentación

    Hola, esta es mi primera entrada en el blog. Voy a mostraros los experimentos de Arduino que voy haciendo, explicando todos los pasos necesarios desde el cableado hasta la programación del software para manejarlo.



    Colgaré fotos y vídeos para explicar con detalle como se hacen. También pondré enlaces a páginas web con información sobre Arduino.

    Espero que os guste y podéis dejar vuestros comentarios.