#define FLAST_FAST 1
#define PULSE 2
#define DIMDOWNUP 3
const byte ledPin = 10;
byte state = 0;
byte flashCount = 0;
unsigned long OldTime, downTime, upTime, waitTime;
unsigned long shortPeriod = 450; //fast flash
unsigned long longPeriod = 5000; // pulse
void setup() {
// put your setup code here, to run once:
state = random(1, 100)%4;
pinMode(10,OUTPUT);
Serial.begin(115200);
}
void loop() {
switch(state){
case FLAST_FAST:
if (flashCount == 0){
OldTime = millis();
flashCount++;
}
else if (flashCount == 6){
state = random(1, 100)%4;
flashCount = 0;
digitalWrite(ledPin, LOW);
}
else if (OldTime - millis() >= shortPeriod) {
OldTime = millis();
digitalWrite(ledPin, !digitalRead(ledPin));
flashCount++;
}
break;
case PULSE:
if (flashCount == 0){
OldTime = millis();
flashCount++;
}
else if (flashCount == 6){
state = random(1, 100)%4;
flashCount = 0;
digitalWrite(ledPin, LOW);
}
else if (OldTime - millis() >= longPeriod) {
OldTime = millis();
digitalWrite(ledPin, HIGH);
delay(shortPeriod);
digitalWrite(ledPin, LOW);
flashCount++;
}
break;
case DIMDOWNUP:
if (flashCount == 0){
OldTime = millis();
flashCount++;
downTime = random(1000,5000);
upTime = random(1000,5000);
waitTime = 0;
}
else if (OldTime - millis() >= shortPeriod) {
OldTime = millis();
waitTime +=shortPeriod;
if(flashCount==1 && waitTime > upTime){
flashCount++;
waitTime = 0;
}
else if (waitTime > downTime){
state = random(1, 100)%4;
flashCount = 0;
waitTime = 0;
digitalWrite(ledPin, LOW);
break;
}
if(flashCount==1){
analogWrite(ledPin, waitTime%255);
}
else{
analogWrite(ledPin, waitTime%255);
}
}
break;
default:
state = random(1, 100)%4;
break;
}
//Serial.println(state);
delay(100);
}