Paso 5: Software
De bijbehorende zijn bibliotheken gedownload en geïnstalleerd en de libraryfolder voor de código zodat de sonar en de servo motor makkelijk zijn te programmeren.
De onderstaande código es met de arduino gecompileerd geüpload de en de arduino. Se reunió de código kan de sonar zien dat als er iets en de la dat de buurt van de sonar interfaz laser aan gaat en de motor heen en weer draait, waardoor de heen en weer schijnt del laser. DIT es getest op mijn kat en het werkstuk voor de prueba geslaagd! J
Código:
#include / / standaard programma/bibliotheekje waarmee je makkelijk reunió de sonar kan omgaan.
#include / / standaard programma/bibliotheekje waarmee je makkelijk reunió 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; retrasar betekent dat de computadora incluso wacht.
int RELAY_A = 9; DIT es pinnetje 9. Relay = het relais/schakelaartje.
int RELAY_B = 10; DIT es pinnetje 10. DIT es het tweede schakelaartje (((__DIE WE NU NIET GEBRUIKEN__)))
#define TRIGGER_PIN 8 / / Arduino pin 8 = gatillo van de ultrasonische sonar.
#define ECHO_PIN 7 / / Arduino pin 7 = echo van ultrasonische sonar.
#define MAX_DISTANCE 75 / / De comprimido hacer nos die willen meten met de sonar (en centímetros). Distancia máxima del sensor está valorada en 400-500cm.
Sonar de NewPing (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); NewPing pasador de gatillo de standaard instellingen van (die een ping uit stuurt), de echo pin (die een ping binnen krijgt) en de hacer máximo.
Servo myservo; myservo es de naam mueren de motor gegeven hebben.
se puede crear un máximo de ocho objetos de servo
void setup() {/ / Pon tu código de instalación, para ejecutar una vez:
Serial.Begin(115200); Resultados Open monitor serie a 115200 baudios ver ping. Bibliotheekje waarmee je het resultaat van de hacer kan uitprinten, naar bijv. een scherm.
pinMode (RELAY_A, salida); se conecta el relé A en el pin 9
pinMode (RELAY_B, salida); se conecta el relé B en pin 10 (overbodig)
myservo.Attach(5); se fija el servo en el pin 5 al objeto servo
}
void loop() {}
Delay(50); Miliseconden 50 Wacht tussen elke ping sonar (pings ongeveer 20 por segundo). 29ms es de kleinst mogelijke waarde tussen een ping. Hij moet eventjes wachten om tijd te hebben om de ping te lezen través de echo.
unsigned int nos = sonar.ping(); Enviar ping, ping tiempo en microsegundos (uS). ER wordt een ping verstuurd en waarde de "nosotros" interfaz de tijd ba-a dat de ping ba-a es gekomen.
unsigned int cm = uS / US_ROUNDTRIP_CM; Zet de microseconden om en centímetros.
Si (cm > 0) {/ / alleen een impresión opdracht sturen encima de bus serie als de gemeten hacer binnen het afstandsbereik valt.
Serial.Print ("hacer es"); OM te testen en om op het scherm te tonen wat de hacer es.
Serial.Print(cm); imprimir resultado (0 = buiten de ingestelde afstandsbereik)
Serial.println ("cm");
para (pos = 0; pos < 180; pos += 2) {/ / van 0 de gaat naar 180 graden graden en stapjes van 2 graden
myservo.Write(POS); vértelas de servo om naar de positie te gaan en de variabele 'pos'
Delay(DelayA); Wacht x ms op de servo zodat hij de positie kan behalen
digitalWrite(RELAY_A,LOW); Láser aanzetten
}
}
Else {}
digitalWrite(RELAY_A,HIGH); Láser uitzetten
}
}}