Here is the code… I have dropped in the changes I am tring to make on lines 2 and 4
const int redled=3;
const int whiteled=5;
const int twinred=6; //would like to copy this output to flash opposite from the other
const int revolving=9; //would like to copy this output and control its timing
unsigned long previousred=0;
unsigned long previouswhite=0;
unsigned long revolvingtime=0;
int redoff=1000;
int redon=30;
int whiteoff=1100;
int whiteon=100;
int twinLongOff=1000;
int twinOn=40;
int twinOff=100;
int revolvingperiode=2000;
int value;
int FadeOff=2;
int FadeOn=2000;
unsigned long twinStartMillis=0;
unsigned long fadeStartMillis=0;
enum ledState {
firstOnPeriod, shortInterval, secondOnPeriod, longInterval};
static ledState twinState=longInterval;
enum revolvingState {
Fade, Off };
static revolvingState revolveState=Off;
void setup(){
pinMode(redled, OUTPUT);
pinMode(whiteled, OUTPUT);
pinMode(twinred, OUTPUT);
}
void loop(){
unsigned long currentred=millis();
unsigned long currentwhite=millis();
if(currentred-previousred>=redon){
digitalWrite(redled, LOW);
}
if(currentred-previousred>=redoff){
previousred=currentred;
digitalWrite(redled, HIGH);
}
if(currentwhite-previouswhite>=whiteon){
digitalWrite(whiteled, LOW);
}
if(currentwhite-previouswhite>=whiteoff){
previouswhite=currentwhite;
digitalWrite(whiteled, HIGH);
}
unsigned long now=millis();
switch (twinState){
case firstOnPeriod:
if(now-twinStartMillis>=twinOn){
digitalWrite(twinred,LOW);
twinState=shortInterval;
}
break;
case shortInterval:
if(now-twinStartMillis>=twinOn+twinOff){
digitalWrite(twinred,HIGH);
twinState=secondOnPeriod;
}
break;
case secondOnPeriod:
if(now-twinStartMillis>=twinOn+twinOff+twinOn){
digitalWrite(twinred,LOW);
twinState=longInterval;
}
break;
case longInterval:
if (now-twinStartMillis>=twinOn+twinOff+twinOn+twinLongOff){
digitalWrite(twinred,HIGH);
twinState=firstOnPeriod;
twinStartMillis=now;
}
break;
}
switch (revolveState){
case Fade:
if (now-fadeStartMillis >= FadeOn)
{
revolveState=Off;
digitalWrite(revolving, LOW);
}
else
{
revolvingtime = now - fadeStartMillis;
value = 128 - 128cos((2PI*(float)revolvingtime)/revolvingperiode);
analogWrite(revolving, value);
}
break;
case Off:
if (now-fadeStartMillis > FadeOn + FadeOff)
{
revolveState=Fade;
fadeStartMillis=now;
}
break;
}
}