Paso 3: Añadir el código para el Arduino
Primero, descargar e instalar el IDE de Arduino más reciente (1.0.5) aquí hay un enlace a la página de descarga http://arduino.cc/en/Main/Software.Nosotros ahora lo que instalar la biblioteca de NewPing, aquí hay un enlace en las instrucciones para descargar e instalar la biblioteca de NewPing http://playground.arduino.cc/Code/NewPing.
Si usted planea usar el ATtiny parte del archivo NewPing.cpp debe ser editado. Hay dos grandes sección del código dedicada a temporizadores, comentar todo esto hacia fuera. NewPing.h se puede dejar solo.
Es importante utilizar esta biblioteca y no para realizar la medición de la distancia manualmente. La razón es porque cuando el sensor ping no puede regresar a distancia, retrasará por un segundo en lugar de varias veces por segundo como debe. Este es un problema cuando se tira el coche y no hay ninguna respuesta de la unidad durante un período breve. En aquel momento un coche puede mover varios pies y hacer que el dispositivo inútil. Esta biblioteca fija que así mantiene respuesta.
El arreglo de la perno será sin embargo optó por conectar la placa de arduino, así que asegúrese de ajustar este código para trabajar con el circuito. Recuerde, si usted quiere usar pwm para obtener el brillo de color justo Asegúrese de utilizar pernos con un ~ símbolo para tu LED o consulte el diagrama del pinout ATtiny85 para pwm pins. No incluí el uso de la clavija azul, simplemente porque el ATtiny85 no tiene suficientes pernos sin reprogramación el pin de reset para I/O. No molesta hacerlo.
Usted puede agregar algunos nuevos colores o cambie para adaptarse a tu estado de ánimo. Si usted necesita una indicación más precisa, puede bajar el valor a 1 o 2 (tenga en cuenta que su +-, por lo tanto un 2 para la variable de rango dará una gama de 4 pulgadas) o subir más alto si tienes espacio de sobra. También puede editar las distancias en la que cada color del LED cambiará. He encontrado 120 y 50 pulgadas que apenas a la derecha.
Actualización: LED se ha movido a los pines 0 y 1. El método yellow() ha sido actualizado para incluir PWM. Usted puede tiene que encontrar valores que funcionan mejor con su LED.
Código
#include < NewPing.h > //include la biblioteca NewPing Pines de I/O valores de Sonar de NewPing (0, 1, 500); constructor de NewPing sonar (echoPin, triggerPin, max_CM) void setup()
int rLED = 0;
gLED int = 1;
int buttonPin = 2;
eco int = 3;
int disparo = 4;
int distancia = 0;
set de int = 0;
int alto = 0;
int menor = 0;
int rango = 3; rango es de +-por lo que es el doble del valor en pulgadas
int cuenta = 0;
Boolean lastButton = bajo; seguimiento de estado de botón
Boolean currentButton = bajo;
int anterior = 0; mantener un registro de distancias para identificar cuando el coche está aparcado
int actual = 0;
{
pinMode (gLED, salida);
pinMode (rLED, salida);
pinMode (buttonPin, entrada);
}
void loop()
{
distancia = sonar.ping_in(); detectar distancia en pulgadas
if(Distance == 0) distancia = 500; Si no se lee distancia, situado a distancia máxima
actual = distancia; para comprobar cuánto coche ha estado aparcado para entrar en el ahorro de energía
Delay(100); ¿Programa lento-ahorrar batería?
currentButton = debounce(lastButton); Lee estado de botón y realiza debounce, corrige el comportamiento de botón inesperado
Si (lastButton == baja & & currentButton == HIGH) //when el botón empujado, establecer distancia deseada para el estacionamiento
{
Set = distancia; nueva variable para la distancia medida
flashGreen(); parpadeo de LED verde 3 veces
flashGreen();
flashGreen();
}
lastButton = currentButton; restablecer estado de botón
superior = set + gama; + /-pulgadas rango de tolerancia
menor = conjunto - gama;
Si (distancia < = superior & & distancia > = inferior) //within establecer el área, deje de!
{
distancia oscila de algunos resultando en detección de movimiento falso
Si (actual == anterior || actual == anterior + 1 || actual == previo - 1)
{
cuenta ++; aumentar la cuenta si no se ha movido el coche
}
otra cosa
{
cuenta = 0; cuenta se resienten si hay un cambio significativo en la distancia
}
Si haces cambio de distancia para 250 ciclos (30 seg) Apague el LED -> modo de ahorro
Si (cuenta > = 250)
{
OFF();
cuenta = 250; no incrementar para siempre
}
otra cosa
{
red(); dentro de gama, detener. LED rojo de
}
}
if(Distance > Upper)
{
cuenta = 0; Si el coche se mueve bastante lento, nunca puede restablecer el recuento en sobre el código, reiniciar otra vez, en caso
Si (distancia > = set + 120) //sensor se convierte innacurate a distancias mucho más allá de 120 pulgadas
{//no coche en garaje apagar LED
OFF();
}
Si (distancia < set + 120 & & distancia > set + 50) //car se detecta
{//if distancia es de menos pulgadas sets + 120 y mayores de set + 50 pulgadas
Green();
}
Si (distancia < = set + 50 & & distancia > superior) //wihtin 50 pulgadas de distancia fija, despacio
{
Yellow();
}
}
if(Distance < Lower) //car está demasiado cerca, debe copia de seguridad
{
cuenta = 0; misma situación pues si coche se mueve muy lentamente
flashRed();
}
anterior = distancia; actualizar distancias
} //end of loop
Debounce método para corregir de picos de voltaje que causan un comportamiento inesperado
debounce(boolean last) Boolean
{
booleano actual = digitalRead(buttonPin);
Si (último! = corriente)
{
Delay(5);
actual = digitalRead(buttonPin);
}
vuelta actual;
}
métodos de color;
void green()
{
digitalWrite (rLED, HIGH); por circuito de pull-up resistor, se invierte el código
digitalWrite (gLED, LOW);
}
void red()
{
digitalWrite (gLED, HIGH);
digitalWrite (rLED, LOW);
}
void yellow()
{
digitalWrite (rLED, 0);
digitalWrite (gLED, 100);
}
void flashRed()
{
digitalWrite (gLED, HIGH); Flash LED rojo
digitalWrite (rLED, LOW);
Delay(100);
digitalWrite (rLED, HIGH);
Delay(100);
}
void flashGreen()
{
digitalWrite (rLED, HIGH);
digitalWrite (gLED, LOW); parpadeo de LED verde al presiona el botón
Delay(50);
digitalWrite(gLED,HIGH);
Delay(50);
}
off() vacío
{
digitalWrite (gLED, HIGH); Apagar el LED
digitalWrite (rLED, HIGH);
}
Final del código de
Copie y pegue el código en el IDE de Arduino y subir de golpe.
Nuevamente, asegúrese de editar los números de pin para acomodar tu circuito y cambiar lo que desea.