Hur man gör en robotic dart skytte sentry (4 / 5 steg)
Steg 4: program
programmera arduino med följande kod
///////////////////////////////////////////////////////////////////
SENTRY av mdwilson 5/1/2013
#include < Servo.h >
Servo vaktpost; skapa objekt för att styra en servo servo
Servo avtryckaren. skapa objekt för att styra en servo servo
CONST int buttonPin = 2; numrera av tryckknapp PIN-koden
CONST int ledPin = 13. antal LED stift
int buttonState = 0; variabel för att läsa tryckknapp status
int tooClose = 350; hur nära är för nära för IR-sensor?
int servoSpeed = 100; hur långsamt vill du turent att flytta?
int pos = 0; variabel att lagra servo position
booleska inkräktaren = false; är finns det eller finns det aint en inkräktare?
void setup()
{
pinMode (ledPin, produktionen); initiera LED stift som en utgång:
pinMode (buttonPin, ingång); initiera tryckknapp PIN-koden som indata:
digitalWrite(buttonPin,HIGH);
Serial.BEGIN(9600); möjliggöra seriell kommunikation
Sentry.attach(9); tillmäter objektet servo servo på pin 9
trigger.attach(10); tillmäter objektet servo servo på pin 9
trigger.write(0); / / ställa upp inledande avtryckaren position
}
void loop()
{
Läs statligt av tryckknapp värdet:
buttonState = digitalRead(buttonPin);
om (buttonState == låg) {
inkräktaren = false;
Serial.println("reset");
}
Serial.println ("i =" + inkräktaren);
så länge det finns inga inkräktare, fortsätta att söka
IF(!Intruder) {
för (pos = 0; pos < 180; pos + = 1) / / går från 0 grader till 180 grader
{
om (intruder) {
bryta;
}
i steg om 1 grad
Sentry.write(POS); berätta servo gå för att placera i variabel "pos"
Delay(servoSpeed); väntar på servo att nå ställning
intruderCheck();
}
för (pos = 180, pos > = 1; pos-= 1) / / går från 180 grader till 0 grader
{
om (intruder) {
bryta;
}
Sentry.write(POS); berätta servo gå för att placera i variabel "pos"
Delay(servoSpeed); väntar på servo att nå ställning
intruderCheck();
}
} annat {
ställa in larmet
Alarm();
}
}
göra den alam lysdioden blinkar
void alarm() {
digitalWrite (ledPin, hög);
Delay(200);
digitalWrite (ledPin, låg);
Delay(200);
}
Kontrollera om IR-sensorn ser ett objekt
void intruderCheck()
{
int sensorValue = analogRead(A0);
skriva ut värdet du läsa:
Serial.println(sensorValue);
om (sensorValue > tooClose & &! inkräktare)
{
Delay(100);
Shoot();
inkräktaren = sant;
}
}
void shoot()
{
Serial.println("triggered!");
Serial.println ("inkräktare =" + inkräktaren);
trigger.write(45);
Delay(1000);
trigger.write(0);
}