Stap 3: De Code uploaden naar de Arduino
Eerst uit, Download en installeren de nieuwste Arduino IDE (1.0.5) hier is een link naar de download pagina http://arduino.cc/en/Main/Software.We nu wat te installeren van de bibliotheek van de NewPing, hier is een link op de instructies voor downloaden en installeren van de NewPing bibliotheek http://playground.arduino.cc/Code/NewPing.
Als u van plan over het gebruik van de ATtiny moet vervolgens deel van het bestand NewPing.cpp worden bewerkt. Er zijn twee grote sectie van de code gewijd aan timers, commentaar aller dit uit. NewPing.h kunnen worden verlaten alleen.
Het is belangrijk aan deze bibliotheek gebruiken en niet aan de afstandsmeting handmatig uitvoeren. De reden is omdat wanneer de ping-sensor niet terug een afstand, het voor een volle seconde in plaats van meerdere malen per seconde vertragen zal zoals het hoort. Dit is een probleem bij het trekken van de auto en er is geen antwoord van de eenheid voor een korte periode. In die tijd kan een auto verplaatsen van verscheidene voeten en leveren het apparaat nutteloos. Deze bibliotheek corrigeert die dus bewaren responsiviteit uitgeven.
De pin-regeling zal worden maar je ervoor kiest om je arduino board aansluiten, dus zorg ervoor dat deze code werkt met uw circuit aanpassen. Vergeet niet, als u gebruik wilt maken pwm om de helderheid van uw kleur precies goed zorg ervoor dat u pinnen met een ~ symbool voor uw LED of verwijzen naar de ATtiny85 pinout diagram voor pwm pinnen. Ik bevatte geen elk gebruik van de blauwe pin, simpelweg omdat de ATtiny85 niet genoeg pinnen hoeft zonder reprograming de resetpin om I/O. Ik heb niet de moeite om dit te doen.
U kunt sommige nieuwe kleuren toevoegen of veranderen aan uw humeur. Als u een nauwkeuriger indicatie nodig, u kunt verlaagt u de waarde van het bereik naar 1 of 2 (Houd er rekening mee dat de +/-, dus 2 voor de variabele bereik krijgt een 4 inch bereik) of brengen het hoger hebt u voldoende vrije ruimte. U kunt ook bewerken de afstanden waartegen elke kleur van de LED zal veranderen. Ik vond de 120 en 50 inch te zijn precies goed.
UPDATE: LED is verplaatst naar pinnen 0 & 1. De yellow()-methode heeft bijgewerkt met PWM. Het is wellicht om te vinden welke waarden werken het beste met uw LED.
Code
#include < NewPing.h > //include de NewPing-bibliotheek I/O pinnen waarden voor het bijhouden van NewPing sonar (0, 1, 500); constructor voor NewPing sonar (triggerPin, echoPin, max_CM) VOID Setup
int rLED = 0;
int gLED = 1;
int buttonPin = 2;
int echo = 3;
int trigger = 4;
int afstand = 0;
int set = 0;
int bovenste = 0;
int lagere = 0;
int bereik = 3; bereik is +/-zodat is het dubbele van de waarde in inches
int count = 0;
Boole lastButton = laag; bijhouden van de status van de knop
Boole currentButton = laag;
int vorige = 0; bijhouden van afstanden om te bepalen wanneer de auto geparkeerd is
int huidige = 0;
{
pinMode (gLED, OUTPUT);
pinMode (rLED, OUTPUT);
pinMode (buttonPin, INPUT);
}
void loop
{
afstand = sonar.ping_in(); afstand in inches detecteren
if(Distance == 0) afstand = 500; Als geen afstand wordt gelezen, vastgesteldop max afstand
huidige = afstand; om te controleren hoe lang auto heeft geparkeerd om energiebesparende
delay(100); Traag programma down - opslaan batterij?
currentButton = debounce(lastButton); leest de status van de knop en voert ontdendering, fixes van onverwachte knop gedrag
Als (lastButton == LOW & & currentButton == HIGH) //when knop geduwd, set gewenste afstand voor parkeren
{
instellen = afstand; nieuwe variabele voor afstand gemeten
flashGreen(); groene LED knippert 3 keer
flashGreen();
flashGreen();
}
lastButton = currentButton; Reset knop status
bovenste = set + bereik; +/-inch tolerantiebereik
lager = set - assortiment;
Als (afstand < = bovenste & & afstand > = zachter) //within ingesteld gebied, stop!
{
afstand fluctueert sommige resulterend in valse beweging detectie
Als (huidige == vorige || huidige == vorige + 1 || huidige == vorige - 1)
{
Graaf ++; graaf te verhogen als de auto is niet verplaatst
}
anders
{
Graaf = 0; Graaf kwalijk nemen, indien zich een verandering van de significat op afstand
}
als afstand doest verandering voor 250 cycli (30 sec) uitschakelen van LED -> macht besparingswijze
Als (graaf > = 250)
{
Off();
Graaf = 250; forever verhogen niet
}
anders
{
Red(); binnen bereik, stoppen. rode LED op
}
}
if(Distance > Upper)
{
Graaf = 0; Als de auto beweegt langzaam genoeg, het kan nooit de graaf in bovenstaande code gereset, we opnieuw weer, alleen in geval
Als (afstand > set + 120 =) //sensor wordt innacurate op afstanden veel verder dan 120 inch
{//no auto in de garage uit te schakelen LED
Off();
}
Als (afstand < set + 120 & & afstand > set + 50) //car wordt gedetecteerd
{//if afstand is minder dan ingestelde + 120 inch en groter is dan de set + 50 inch
Green();
}
Als (afstand < = set + 50 & & afstand > bovenste) //wihtin 50 inches van bepaalde afstand, vertragen
{
Yellow();
}
}
if(Distance < Lower) //car te dicht is, u moet back-up
{
Graaf = 0; dezelfde situatie voor als auto beweegt heel langzaam
flashRed();
}
vorige = afstand; Update afstanden
} //end of loop
debounce methode om te corrigeren voor spanningspieken die leiden onverwacht gedrag tot
Booleaanse debounce(boolean last)
{
Booleaanse huidige = digitalRead(buttonPin);
Als (laatste! = huidige)
{
delay(5);
huidige = digitalRead(buttonPin);
}
terugkeer huidige;
}
kleur methoden;
VOID green()
{
digitalWrite (rLED, hoge); vanwege de pull-up weerstand circuit, is code omgekeerd
digitalWrite (gLED, laag);
}
VOID red()
{
digitalWrite (gLED, hoge);
digitalWrite (rLED, laag);
}
VOID yellow()
{
digitalWrite (rLED, 0);
digitalWrite (gLED, 100);
}
VOID flashRed()
{
digitalWrite (gLED, hoge); rode LED Flash
digitalWrite (rLED, laag);
delay(100);
digitalWrite (rLED, hoge);
delay(100);
}
VOID flashGreen()
{
digitalWrite (rLED, hoge);
digitalWrite (gLED, laag); groene LED knippert wanneer knop ingedrukt
delay(50);
digitalWrite(gLED,HIGH);
delay(50);
}
VOID off()
{
digitalWrite (gLED, hoge); uitschakelen van de LED
digitalWrite (rLED, hoge);
}
Einde van Code
Kopieer en plak de code in de Arduino IDE en sloeg uploaden.
Nogmaals, zorg ervoor dat de pin-codes om uw circuit en breng andere wijzigingen die u wilt bewerken.