This is the code I originaly had to the best of my abilities.
I hope its clearer to read this time around.
Thanks again
//Olympic Skeet Simulator
#include <Servo.h>
Servo myservoP; // create servo object to control a servo
Servo myservoM; // create servo object to control a servo
int pos = 0; // variable to store the servo position
int randNumber = 0;
int ledPinP = 12;
int ledPinM = 13;
int ledPinD = 10;
int ledPinS = 11;
int switchPin = 7;
int count = 0;
boolean lastButton = LOW;
boolean currentButton = LOW;
void setup()
{
pinMode(switchPin, INPUT);
pinMode(ledPinD, OUTPUT);
pinMode(ledPinP, OUTPUT);
pinMode(ledPinM, OUTPUT);
pinMode(ledPinS, OUTPUT);
myservoP.attach(9); // attaches the servo on pin 9 to the servo object
myservoM.attach(8); // attaches the servo on pin 8 to the servo object
}
boolean debounce(boolean last)
{
boolean current = digitalRead(switchPin);
if (last != current)
{
delay(5);
current = digitalRead(switchPin);
}
return current;
}
void Pull() // At a random time(between 0.2-3 sec. sweep from 0-110 degrees at a particular speed
{
myservoP.write(0);
beep();
randNumber = random(200, 3000);
delay(randNumber); //Random start (0.2-3 sec)
for(pos = 0; pos < 110; pos += 1)
{
digitalWrite(ledPinP, HIGH);
myservoP.write(posP);
delay(17);
digitalWrite(ledPinP, LOW);
}
}
void Mark() // At a random time(between 0.2-3 sec. sweep from 0-110 degrees at a particular speed
{
myservoM.write(0);
beep();
randNumber = random(200, 3000);
delay(randNumber); //Random start (0.2-3 sec)
for(pos = 0; pos < 110; pos += 1)
{
digitalWrite(ledPin, HIGH);
myservoM.write(pos);
delay(18); // Speed of clay at +- 1.7 sec 0-110 degrees
digitalWrite(ledPinM, LOW);
}
}
void Double() // At a random time(between 0.2-3 sec. sweep both servos from 0-110 degrees at a different speeds.
{
myservoP.write(0);
myservoM.write(0);
beep();
randNumber = random(200, 3000);
delay(randNumber); //Random start (0.2-3 sec)
for(pos = 0; pos < 110; pos += 1)
{
digitalWrite(ledPinP, HIGH);
myservoP.write(pos);
delay(8.5); // Speed of clay at +- 1.7 sec 0-110 degrees
digitalWrite(ledPinM, HIGH);
myservoM.write(pos);
delay(8.5); // Speed of clay at +- 1.7 sec 0-110 degrees
digitalWrite(ledPinP, LOW);
digitalWrite(ledPinM, LOW);
}
}
void skeet()
{
delay (55000);
Pull(); //station 2
delay (10000);
Double();
delay (25000);
Pull(); //station 3
delay (10000);
Double();
delay (25000);
Pull(); //station 4
delay (10000);
Mark();
delay (10000);
Double();
delay (10000);
Double();
delay (25000);
Mark(); //station 5
delay (10000);
Double();
delay (25000);
Mark(); //station 6
delay (10000);
Double();
digitalWrite(ledPinS, LOW);
count=1;
while (count=1)
{
}
}
void doubles()
{
delay (25000);
Double();
delay (10000);
Double();
delay (10000); //station 2(3 x double)
Double();
delay (10000);
Double(); //station 3(3 x double)
delay (10000);
Double();
delay (10000);
Double();
delay (10000);
Double(); //station 4(6 x double)
delay (10000);
Double();
delay (10000);
Double();
delay (10000);
Double();
delay (10000);
Double();
delay (10000);
Double();
delay (10000);
Double(); //station 5(3 x double)
delay (10000);
Double();
delay (10000);
Double();
delay (10000);
Double(); //station 6(3 x double)
delay (10000);
Double();
delay (10000);
Double();
digitalWrite(ledPinD, LOW);
count=1;
while (count=1)
{
}
}
void beep()
{
tone(6, 10,0);
delay(1000);
noTone(6);
delay(1000);
tone(6, 10,0);
delay(1000);
noTone(6);
delay(1000);
tone(6, 10,0);
delay(1000);
noTone(6);
}
void loop()
{
delay(500);
currentButton = debounce(lastButton);
if (lastButton == LOW && currentButton == HIGH)
{
digitalWrite(ledPinD, HIGH);
doubles();
}
else
{
digitalWrite(ledPinS, HIGH);
skeet();
}
lastButton = currentButton;
}