Stap 3: De Code!
Nu alles wat je hoeft te doen is schrijven van de code om al deze verschillende werken onderdelen samen.Eerst moet je beginnen met de code van de Servo Sweep uit de Arduino Speeltuin, waarmee de servo voortdurend vegen op de manier
vervolgens maakt u een subroutine waarmee wordt gezocht naar de tijd die nodig is voor een ultrasoon signaal worden verstuurd en terugkeren naar de input zijde van de sensor. Dan wordt deze waarde ingesteld op een variabele
Hier is de voorbeeldcode
van hoe het te doen
digitalWrite (Trig_pin, laag);
delayMicroseconds(2);
digitalWrite (Trig_pin, hoge);
delayMicroseconds(5);
digitalWrite (Trig_pin, laag);
duur = pulseIn(Echo_pin,HIGH);
Serial.println (duur, DEC);
delay(50);
Vervolgens binnen de lusjes van de sweep-code maken een tijdje lus. dat zegt wanneer vervolgens duur waarde lager ligt dan een bepaald aantal
de servo pauzes, LED inschakelt en u controleren de waarde van de sensor opnieuw.
Volledig becommentarieerde Code van mijn project is gekoppeld
/*
Sentry Gun
Een ultrasone Sensor is voortdurend scannen vind je de afstand tot het dichtstbijzijnde object
op basis van deze waarde de Servo motor stopt (pistool stopt vegen) en LED inschakelt,
vervolgens controleert sensor waarde weer
Route:
Servomotor is aangesloten op de digitale Pin 9 en Power Ground
LED is aangesloten op de digitale pin 13
Ingang van ultrasone sensor is verbonden met pin 12
Uitgang is aangesloten op de digitale pin 7;
Gemaakt van November 2013 door Krishna Peri
gemodificeerde December 2013 door KRishna Peri
*/
#include < Servo.h >
#include < SoftwareSerial.h >
Const int Trig_pin = 7; Pulsoe van de triggers voor ultrasone Sensor
Const int Echo_pin = 12; Recevies Echo voor ultrasone Sensor
int ledpin = 13; onder leiding van pin opdracht pin
lange duur; Tijd die nodig is voor pulse om terug te stuiteren rechts ultrasone sensor
unsigned int duur = 1; waarde voor afstand ultrasoon
Servomotor; Servomotor die besturingselementen
int pos = 0; variabele op te slaan van de servo positie
int Dcmotor = 10; nu doet niets
VOID Setup {}
Serial.begin(9600); Instellen van seriële bibliotheek 9600 bps
motor.attach(9); Servomotor is gekoppeld aan pin 9
Initialiseer de puls-pin als output:
pinMode (Trig_pin, uitvoer);
Initialiseer de echo_pin pin als input:
pinMode (Echo_pin, INPUT);
pinMode(ledpin,OUTPUT);
pinMode(Dcmotor,OUTPUT);
}
void loop
{
voor (pos = 0; pos < 180; pos += 2) / / servo in stappen van 5 loopt van 0 tot 180
{
motor.write(POS);
delay(15);
Sensor ();
terwijl (duur > 10 & & duur < 400) {/ / als de sensor detecteert iets om te sluiten
delayMicroseconds(30); pauzes servo
digitalWrite(ledpin,HIGH); Hiermee schakelt u led
Sensor(); controleert als voorwerp nog is om te sluiten
}
digitalWrite(ledpin,LOW); schakelt led
}
voor (pos = 180; pos > = 1; pos-= 2) / / hetzelfde als vorige lus behalve draait in tegengestelde richting
{
motor.write(POS);
delay(15);
Sensor ();
terwijl (duur > 10 & & duur < 400) {}
digitalWrite(ledpin,HIGH);
delayMicroseconds(30);
Sensor();
}
digitalWrite(ledpin,LOW);
}
}
VOID Sensor() {/ / controleert afstand van sensor tot dichtstbijzijnde object rechtdoor
digitalWrite (Trig_pin, laag);
delayMicroseconds(2); vertragingen
digitalWrite (Trig_pin, hoge); Start signaal
delayMicroseconds(5); vertraging
digitalWrite (Trig_pin, laag); stopt het signaal
duur = pulseIn(Echo_pin,HIGH); controleert wat de waarde is
Serial.println (duur, DEC); Print waarde
delay(50); vertragingen
}