Stap 5: Software
De bijbehorende bibliotheken zijn gedownload en geïnstalleerd in de libraryfolder voor de code zodat de sonar nl de servo motor makkelijk zijn te programmeren.
De onderstaande code is voldaan de arduino gecompileerd nl geüpload in de arduino. Ontmoet de code kan de sonar zien dat als er iets in de buurt van de sonar komt dat de laser aan gaat nl de motor heen en weer draait, waardoor de laser heen nl weer schijnt. Dit is testwinnaars op mijn kat nl het werkstuk voor de test geslaagd! J
Code:
#include / / standaard programma/bibliotheekje waarmee je makkelijk met de sonar kan omgaan.
#include / / standaard programma/bibliotheekje waarmee je makkelijk met de servo motor kan omgaan.
int pos = 0; variabele om de waarde van de servo positie op te slaan, begint bij 0 graden.
int DelayA = 30; uitstel betekent dat de computer zelfs wacht.
int RELAY_A = 9; Dit is pinnetje 9. Relay = het relais/schakelaartje.
int RELAY_B = 10; Dit is 10 pinnetje. Dit is het tweede schakelaartje (((__DIE WE NU NIET GEBRUIKEN__)))
#define TRIGGER_PIN 8 / / Arduino pin 8 = trigger van de ultrasonische sonar.
#define ECHO_PIN 7 / / Arduino pin 7 = echo van ultrasonische sonar.
#define MAX_DISTANCE 75 / / De maximale afstand die wij willen meten met de sonar (in centimeters). Maximale sensor afstand wordt begroot op 400-500cm.
NewPing sonar (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); NewPing standaard instellingen van de trigger pin (sterven een ping uit stuurt), de echo pin (sterven een ping binnen krijgt) nl de max afstand.
Servo myservo; myservo is de naam die we de motor gegeven hebben.
maximaal acht servo-objecten kan worden gemaakt
void setup {/ / zetten uw setup-code hier, om het eenmalig uit te voeren:
Serial.begin(115200); Open seriële monitor op 115200 baud Zie ping resultaten. Bibliotheekje waarmee je het resultaat van de afstand kan uitprinten, naar bijv. een scherm.
pinMode (RELAY_A, uitvoer); hecht de estafette A op pin 9
pinMode (RELAY_B, uitvoer); hecht de estafette B op pin 10 (Coveliers)
myservo.attach(5); hecht de servo op pin 5 aan de servo-object
}
void loop {}
delay(50); Wacht 50 miliseconden tussen elke sonar ping (ongeveer 20 pings/sec). 29ms is de kleinst mogelijke waarde tussen een ping. Hij moet eventjes wachten om tijd te hebben om de ping te lezen via de echo.
unsigned int ons = sonar.ping(); Ping te sturen, ping tijd in microseconden (VS). Er wordt een ping verstuurd nl in de waarde "ons" komt de tijd terug dat de ping terug is gekomen.
unsigned int cm = uS / US_ROUNDTRIP_CM; Zet de microseconden om in centimeters.
Als (cm > 0) {/ / alleen een print opdracht sturen over de seriële bus als de gemeten afstand binnen het afstandsbereik valt.
Serial.Print ("Afstand is"); om te testen en om op het scherm te tonen wat de afstand is.
Serial.Print(cm); afdrukken van resultaat (0 = buiten de ingestelde afstandsbereik)
Serial.println ("cm");
voor (pos = 0; pos < 180; pos += 2) {/ / gaat van 0 graden naar 180 graden in stapjes van 2 graden
myservo.write(POS); Eemeroord de servo om naar de positie te gaan in de variabele 'pos'
delay(DelayA); wacht x ms op de servo zodat hij de positie kan behalen
digitalWrite(RELAY_A,LOW); Laser aanzetten
}
}
else {}
digitalWrite(RELAY_A,HIGH); Laser uitzetten
}
}}