// GPIO LED
#define RedLEDPin 4
#define GreenLEDPin 14

void setup() {
  Serial.begin(115200);

  pinMode(RedLEDPin, OUTPUT);
  pinMode(GreenLEDPin, OUTPUT);
}

// Each LED has its own time - no delay() is used, time is counted with millis()
unsigned long redMillis = millis();
uint8_t redLEDState = LOW;
unsigned long greenMillis = millis();
uint8_t greenLEDState = LOW;
  
void loop() {
  // checks time
  unsigned long now = millis();

  // Red LED time is 500ms
  if (now > redMillis + 500) {
    // resets time counter
    redMillis = now;
    // Changes Red LED state
    redLEDState = redLEDState ? LOW : HIGH;
    digitalWrite(RedLEDPin, redLEDState);
  }

  // Green LED time is 200ms
  if (now > greenMillis + 200) {
    // resets time counter
    greenMillis = now;
    // Changes Green LED state
    greenLEDState = greenLEDState ? LOW : HIGH;
    digitalWrite(GreenLEDPin, greenLEDState);
  }
}