Étape 3: Téléchargez le Code sur l’Arduino
Tout d’abord, téléchargez et installez le dernier IDE Arduino (1.0.5) Voici un lien vers la page de téléchargement http://arduino.cc/en/Main/Software.Nous avons maintenant ce qu’il faut installer la bibliothèque de NewPing, voici un lien sur les instructions pour télécharger et installer la bibliothèque de NewPing http://playground.arduino.cc/Code/NewPing.
Si vous prévoyez d’utiliser le ATtiny puis la partie du fichier NewPing.cpp doit être modifié. Il y a deux grande section du code consacrée aux minuteries, commenter tout ceci dehors. NewPing.h peut être laissé seul.
Il est important d’utiliser cette bibliothèque et de ne pas effectuer la distance mesurée manuellement. La raison est que lorsque le capteur de ping ne peut pas retourner une distance, il retardera une seconde pleine au lieu de plusieurs fois par seconde comme il se doit. C’est un problème lorsque vous tirez la voiture et il n’y a pas de réponse de l’appareil pendant une courte période. Pendant ce temps, une voiture peut déplacer plusieurs pieds et rendre le dispositif inutile. Cette bibliothèque fixe qui émettent donc restant avec réactivité.
La disposition des broches sera cependant vous avez choisi de brancher votre carte arduino, donc n’oubliez pas d’ajuster ce code fonctionne avec votre circuit. N’oubliez pas, si vous voulez utiliser pwm pour obtenir la luminosité de votre couleur juste comme il faut s’assurer d’utiliser des épingles avec une ~ symbole pour votre LED ou consulter le schéma de brochage ATtiny85 aux pins pwm. Je ne comprend pas toute utilisation de l’axe bleu, tout simplement parce que le ATtiny85 n’a pas suffisamment broches sans reprogrammation de la broche de remise à zéro pour être I/O. Je ne dérange pas de le faire.
Vous pouvez ajouter quelques nouvelles couleurs ou changer selon vos envies. Si vous avez besoin d’une indication plus précise, vous pouvez diminuer la valeur de la plage à 1 ou 2 (Gardez à l’esprit que son +/-, donc un 2 pour la variable de portée donnera un éventail de 4 pouces) ou élever plus haut si vous avez la place à revendre. Vous pouvez également modifier les distances au cours de laquelle chaque couleur de la LED va changer. J’ai trouvé 120 et 50 pouces à être juste comme il faut.
Mise à jour : LED a été déplacé aux broches 0 & 1. La méthode yellow() a été mis à jour afin d’inclure les PWM. Vous devrez peut-être trouver quelles valeurs fonctionnent le mieux avec votre LED.
Code
#include < NewPing.h > //include la bibliothèque NewPing Broches e/s valeurs à suivre NewPing sonar (0, 1, 500) ; constructeur pour sonar NewPing (triggerPin, echoPin, max_CM) void setup()
int rLED = 0;
int gLED = 1;
int buttonPin = 2;
écho int = 3;
déclencheur d’int = 4 ;
distance de l’int = 0 ;
ensemble int = 0 ;
haut int = 0 ;
plus faible int = 0 ;
gamme int = 3 ; gamme est est double de la valeur en pouces
int count = 0 ;
Boolean lastButton = faible ; garder une trace de bouton État
Boolean currentButton = faible ;
précédent int = 0 ; garder une trace des distances pour identifier quand la voiture est garée
cours int = 0 ;
{
pinMode (gLED, sortie) ;
pinMode (rLED, sortie) ;
pinMode (buttonPin, entrée) ;
}
void loop()
{
distance = sonar.ping_in() ; détecter la distance en pouces
if(distance == 0) distance = 500 ; Si aucune distance n’est lue, fixé à distance max
courant = distance ; pour vérifier combien de temps le véhicule est resté garé afin d’entrer d’économie d’énergie
Delay(100) ; Programme lent vers le bas - économisez la batterie ?
currentButton = debounce(lastButton) ; lit le statut du bouton et effectue debounce, corrige le comportement du bouton inattendu
Si (lastButton == LOW & & currentButton == haute) //when bouton Poussée, ensemble distance souhaitée pour le stationnement
{
valeur = distance ; nouvelle variable pour la distance mesurée
flashGreen() ; Clignotement vert LED 3 fois
flashGreen() ;
flashGreen() ;
}
lastButton = currentButton ; réinitialiser l’état de bouton
haut = set + gamme ; +/-gamme de tolérance pouces
bas = set - gamme ;
Si (distance < = upper & & distance > = plus bas) //within définir zone, stop !
{
distance fluctue certains résultant dans la détection de faux mouvement
Si (actuel == précédent || actuel == précédent + 1 || actuel == précédent - 1)
{
Count ++ ; augmenter le nombre si la voiture n’a pas bougé
}
d’autre
{
Count = 0 ; Resent comte s’il y a un changement de faits à distance
}
Si le changement de distance doest pour 250 cycles (30sec) désactiver les LED -> power saving mode
Si (comte > = 250)
{
OFF() ;
comte = 250 ; ne pas incrémenter forever
}
d’autre
{
Red() ; au sein de la gamme, arrêter. LED rouge allumée
}
}
if(distance > Upper)
{
Count = 0 ; Si la voiture se déplace lente assez, il ne peut jamais réinitialiser le compteur en code ci-dessus, nous réinitialisons encore une fois, juste au cas où
Si (distance > = set + 120) //sensor devient innacurate à des distances beaucoup plus loin que 120 pouces
{//no voiture dans garage éteindre LED
OFF() ;
}
Si (distance < set + 120 & & distance > set + 50) //car est détecté
{la distance //if est moins supérieurs et inférieurs ensemble + 120 pouces à set + 50 pouces
Green() ;
}
Si (distance < = set + 50 & & distance > haut) //wihtin 50 pouces de distance définie, ralentissez le rythme
{
Yellow() ;
}
}
if(distance < Lower) //car est trop proche, vous devez sauvegarder
{
Count = 0 ; même situation car si la voiture se déplace très lentement
flashRed() ;
}
précédent = distance ; mise à jour des distances
} //end of loop
Debounce méthode pour corriger les pointes de tension qui provoquent un comportement inattendu
debounce(boolean last) booléenne
{
courant booléen = digitalRead(buttonPin) ;
Si (dernier! = courant)
{
Delay(5) ;
courant = digitalRead(buttonPin) ;
}
retour actuel ;
}
méthodes de couleur ;
Sub green()
{
digitalWrite (rLED, HIGH) ; à cause du circuit de résistance de pull-up, le code est inversé
digitalWrite (gLED, faible) ;
}
Sub red()
{
digitalWrite (gLED, HIGH) ;
digitalWrite (rLED, faible) ;
}
Sub yellow()
{
digitalWrite (rLED, 0) ;
digitalWrite (gLED, 100) ;
}
Sub flashRed()
{
digitalWrite (gLED, HIGH) ; flash LED rouge
digitalWrite (rLED, faible) ;
Delay(100) ;
digitalWrite (rLED, HIGH) ;
Delay(100) ;
}
Sub flashGreen()
{
digitalWrite (rLED, HIGH) ;
digitalWrite (gLED, faible) ; Flicker LED verte quand le bouton enfoncé
Delay(50) ;
digitalWrite(gLED,HIGH) ;
Delay(50) ;
}
Sub off()
{
digitalWrite (gLED, HIGH) ; éteindre la LED
digitalWrite (rLED, HIGH) ;
}
Fin du Code
Copiez et collez le code dans l’IDE Arduino et appuyez sur Envoyer.
Encore une fois, n’oubliez pas de modifier les numéros de broches pour accueillir votre circuit et vous souhaitez modifiez.