/*--------------- by JediRick -----------------
  boolean        (8 bit)   -  [true/false]
  byte           (8 bit)   -  [0-255] unsigned number
  char           (8 bit)   -  [-128 to 127] signed number
  unsigned char  (8 bit)   -  [-128 to 127] signed number
  word           (16 bit)  -  [0-65535] unsigned number
  unsigned int   (16 bit)  -  [0-65535] unsigned number
  int            (16 bit)  -  [-32768 to 32767] signed number
  unsigned long  (32 bit)  -  [0-4,294,967,295] unsigned number usually for millis
  long           (32 bit)  -  [-2,147,483,648 to 2,147,483,647] signed number
  float          (32 bit)  -  [-3.4028235E38 to 3.4028235E38] signed number
  uint8_t        (8 bit)   -  [0-255] unsigned number
  int8_t         (8 bit)   -  [-127 - 127] signed number
  uint16_t       (16 bit)  -  [0-65,535] unsigned number
  int16_t        (16 bit)  -  [-32,768 - 32,767] signed number
  uint32_t       (32 bit)  -  [0-4,294,967,295] unsigned number
  int32_t        (32 bit)  -  [-2,147,483,648 - 2,147,483,647] signed number
  uint64_t       (64 bit)  -  [0-18,446,744,073,709,551,615] unsigned number
  int64_t        (64 bit)  -  [−9,223,372,036,854,775,808 - 9,223,372,036,854,775,807] signed number
  --------------------------------------------*/
  
#define led1 13
#define led2 12
unsigned long currentMillis;
//------- first timer stuff --------
const unsigned long onTime1 = 1000;
const unsigned long offTime1 = 2000;
unsigned long previousMillis1 = 0;
unsigned long interval1 = onTime1;
boolean triggerState1 = true;
//------- end first timer stuff --------
//------- second timer stuff --------
const unsigned long onTime2 = 50;
const unsigned long offTime2 = 250;
unsigned long previousMillis2 = 0;
unsigned long interval2 = onTime2;
boolean triggerState2 = true;
//------- end second timer stuff --------
void setup() {
  delay(2000);
  Serial.begin(115200);
  randomSeed(analogRead(0));
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
}
void loop() {
  checkTimer1();
  checkTimer2();  
}
void checkTimer1() {  
  digitalWrite(led1, triggerState1);
  currentMillis = millis();
  if ((unsigned long)(currentMillis - previousMillis1) >= interval1) {
    if (triggerState1) {
      interval1 = random(100, 500);
      Serial.println("LED1 off");
      digitalWrite(led1, LOW);   // turn the LED on (HIGH is the voltage level)
    } else {
      interval1 = random(100, 500);
      Serial.println("LED1 on");
      digitalWrite(led1, HIGH);   // turn the LED on (HIGH is the voltage level)
    }
    triggerState1 = !(triggerState1);
    previousMillis1 = currentMillis;
  }  
}
void checkTimer2() {
  currentMillis = millis();
  if ((unsigned long)(currentMillis - previousMillis2) >= interval2) {
    if (triggerState2) {
      interval2 = random(50, 150);
      Serial.println("LED2 off");
      digitalWrite(led2, LOW);   // turn the LED on (HIGH is the voltage level)
    } else {
      interval2 = random(50, 150);
      Serial.println("LED2 on");
      digitalWrite(led2, HIGH);   // turn the LED on (HIGH is the voltage level)
    }
    triggerState2 = !(triggerState2);
    previousMillis2 = currentMillis;
  }
}