Proyecto 26 - Parking Sensor

23 de agosto de 2015

En el siguiente tutorial veremos como hacer un sensor de aparcamiento para el  coche.

Utilizaremos un sensor de ultrasonidos para medir la distancia y con un zumbador piezoeléctrico y dos leds haremos señales sonoras y luminosas.

Este proyecto está basado en el original de tek.no

Podéis consultar el original aquí, en noruego :-)

Esquema

Sketch -  Parking Sensor

/*

Based on the origianl sketch from tek.no

http://www.tek.no/artikler/guide-slik-lager-du-din-egen-ryggesensor-med-arduino/185196?key=z4INTnz4

Modified by Angel M. Muñoz

https://sites.google.com/site/angmuz/home/proyecto-26

*/

#define echoPin 2

#define trigPin 3

#define piezo 9

#define led1 10

#define led2 12

float maximumRange = 20;

float minimumRange = 0;

long duration;

int cm;

float aux;

int pause_ms;

long unsigned int forrige_beep;

 

void setup() {

 Serial.begin (9600);

 pinMode(trigPin, OUTPUT);

 pinMode(echoPin, INPUT);

 pinMode(piezo, OUTPUT);

 pinMode(led1, OUTPUT);

 pinMode(led2, OUTPUT);

 

 //Leer distancia para valores iniciales 

 int avstand = lesAvstand(); 

 pause_ms = avstand * 2;

}

//Función que mide la distancia en cm 

 int lesAvstand() { 

 digitalWrite(trigPin, LOW);

 delayMicroseconds(2);

 digitalWrite(trigPin, HIGH);

 delayMicroseconds(10);

 digitalWrite(trigPin, LOW);

 duration = pulseIn(echoPin, HIGH);

 cm = duration/58.2;

 return cm; 

 }

 

void loop() {

  

 

  // Almacena el número de milisegundos desde el Arduino empezó

  forrige_beep = millis(); 

  

  // Actualiza la medición de distancia 

  while (millis() - forrige_beep < pause_ms) {

  int avstand = lesAvstand(); 

  pause_ms = (avstand*2)+10;

  

  } 

  

  //Asegura pitidos no mas largos de 500 ms

  int pip_ms = pause_ms; 

  if (pip_ms > 1000)

  {

   pip_ms = 1000;

  }

  

  Serial.println(cm);

  //Si la distancia es mayor de 5cm creamos un bip

  if (cm < 4)

  {

    analogWrite(piezo, 16);

    digitalWrite(led1, HIGH);

    digitalWrite(led2, HIGH); 

    

  }

  else

  {

    analogWrite(piezo, 16);

    digitalWrite(led1, HIGH);

    digitalWrite(led2, HIGH);

    delay(pip_ms); 

    digitalWrite(piezo, LOW);

    digitalWrite(led1, LOW);

    digitalWrite(led2, LOW);

  }

    

  

}


Links

Yvind Nydal Dahl: www.tek.no