Den automatiska Catlaser (5 / 8 steg)
Steg 5: programvara
De bijbehorende bibliotheken zijn gedownload sv geïnstalleerd i de libraryfolder voor de koden zodat de sonar sv de servo motor makkelijk zijn te programmeren.
De onderstaande koden är mötte de arduino gecompileerd sv geüpload i de arduino. Träffade de kod kan de sonar Lacke dat als er iets i de buurt van de sonar komt dat de laser aan gaat sv de motoriska heen sv weer draait, waardoor de laser heen sv weer schijnt. Dit är getest op mijn kat en het werkstuk voor de test geslaagd! J
Kod:
#include / / standaard programma/bibliotheekje waarmee je makkelijk mötte de sonar kan omgaan.
#include / / standaard programma/bibliotheekje waarmee je makkelijk mötte de servo motor kan omgaan.
int pos = 0; variabele om de politiker van de servo positie op te slaan, börjar bij 0 graden.
int DelayA = 30. fördröja betekent dat de dator även wacht.
int RELAY_A = 9; dit är pinnetje 9. Relay = het relais/schakelaartje.
int RELAY_B = 10; dit är pinnetje 10. Dit är het tweede schakelaartje (((__DIE vi 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 dö vi willen meten mötte de sonar (i centimeter). Maximal sensorn avståndet är dimensionerade för 400-500cm.
NewPing sonar (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); NewPing standaard instellingen van de utlösande pin (die een ping uit stuurt), de echo pin (die een ping binnen krijgt) sv de max afstand.
Servo myservo; myservo är de naam dö vi de motoriska gegeven hebben.
maximalt åtta servo objekt kan skapas
void setup() {/ / lägga installationen koden här, om du vill köra en gång:
Serial.BEGIN(115200); Öppna seriell monitor på 115200 baud se ping resultat. Bibliotheekje waarmee je het resultaat van de afstand kan uitprinten, naar bijv. een scherm.
pinMode (RELAY_A, OUTPUT); fäster reläet A på pin 9
pinMode (RELAY_B, OUTPUT); fäster reläet B på stift 10 (overbodig)
myservo.attach(5); tillmäter objektet servo servo på stift 5
}
void loop() {
Delay(50); Wacht 50 miliseconden tussen elke sonar ping (ongeveer 20 ping/SEK). 29ms är de kleinst mogelijke politiker tussen een ping. HIJ moet eventjes wachten om tijd te hebben om de ping te lezen via de echo.
unsigned int oss = sonar.ping(); Skicka ping, ping tid i mikrosekunder (oss) att få. Er wordt een ping verstuurd en i de politiker "oss" komt de tijd terug dat de ping terug är gekomen.
unsigned int cm = oss / US_ROUNDTRIP_CM; Zet de microseconden om i centimeter.
om (cm > 0) {/ / alleen een Skriv opdracht sturen över de seriebuss als de gemeten afstand binnen het afstandsbereik valt.
Serial.Print ("Afstand är"); om te testen sv om op het scherm te tonen wat de afstand är.
Serial.Print(cm); skriva ut resultatet (0 = buiten de ingestelde afstandsbereik)
Serial.println ("cm");
för (pos = 0; pos < 180; pos += 2) {/ / gaat van 0 graden naar 180 graden i stapjes van 2 graden
myservo.write(POS); Vertel de servo om naar de positie te gaan i de variabele "pos"
Delay(DelayA); Wacht x ms op de servo zodat hij de positie kan behalen
digitalWrite(RELAY_A,LOW); Laser aanzetten
}
}
annat {
digitalWrite(RELAY_A,HIGH); Laser uitzetten
}
}}