#include <Servo.h>
int brightness = 0; // how bright the LED is
int fadeAmount = 5; // how many points to fade the LED by
int strobe2 = 9;
int strobe1 = 7;
int red1 = 6;
int red2 = 3;
int green1 = 8;
int green2 = 5;
Servo servo1;
Servo servo2;
int joyX = 0;
int joyY = 1;
int servoVal;
void setup()
{
pinMode(strobe1, OUTPUT);
pinMode(strobe2, OUTPUT);
pinMode(green1, OUTPUT);
pinMode(green2, OUTPUT);
pinMode(red1, OUTPUT);
pinMode(red2, OUTPUT);
servo1.attach(2);
servo2.attach(10);
}
void loop()
{
servoVal = analogRead(joyX);
servoVal = map(servoVal, 0, 1023, 0, 180);
servo1.write(servoVal);
servoVal = analogRead(joyY);
servoVal = map(servoVal, 0, 1023, 45, 135);
servo2.write(servoVal);
delay(1);
STROBE();
fade();
//--------------------------------------
digitalWrite(green1, HIGH);
digitalWrite(green2, HIGH);
}
void STROBE() {
static word startTimer, waitTimer; // waitTimer > 0 causes the timer to run, good up to 65 second intervals
static byte procState;
if ( waitTimer > 0 )
{
if ( word( millis() ) - startTimer < waitTimer ) return; // time is not up yet
else waitTimer = 0; // and on to the switch-case
}
switch ( procState )
{
case 0 :
digitalWrite(strobe1, HIGH);
digitalWrite(strobe2, HIGH);
procState = 1; // run case 1 next time
waitTimer = 50;
startTimer = millis();
break;
case 1 :
digitalWrite(strobe1, LOW);
digitalWrite(strobe2, LOW);
procState = 2; // run case 2 next time
waitTimer = 50;
startTimer = millis();
break;
case 2 :
digitalWrite(strobe1, HIGH);
digitalWrite(strobe2, HIGH);
procState = 3; // run case 3 next time
waitTimer = 50;
startTimer = millis();
break;
case 3 :
digitalWrite(strobe1, LOW);
digitalWrite(strobe2, LOW);
procState = 0;
waitTimer = 1500;
startTimer = millis();
break;
}
}
void fade() {
const unsigned long adjustInterval = 30;
static unsigned long lastAdjust = 0;
if ( millis() - lastAdjust > adjustInterval) {
lastAdjust += adjustInterval;
analogWrite(red1, brightness);
analogWrite(red2, brightness);
brightness = brightness + fadeAmount;
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount;
}
}
}