// #include <TaskScheduler.h>
// #include <Arduino_FreeRTOS.h>

// const int RED_TIME = 3000;
// const int YELLOW_TIME = 3000;
// const int GREEN_TIME = 3000;
// const int GREEN_BLINK = 5000;
// const int GREEN_BLINK_INTERVAL = 500;

// bool redOE();
// void redOD();
// bool redPOE();
// void redPOD();

// bool yellowOE();
// void yellowOD();

// bool greenOE();
// void greenOD();
// bool greenPOE();
// void greenPOD();

// bool greenBlinkOE();
// void greenBlinkCB();
// void greenBlinkOD();

// Scheduler ts;

// Task red(RED_TIME, TASK_ONCE, NULL, &ts, false, &redOE, &redOD);
// Task redP(RED_TIME, TASK_ONCE, NULL, &ts, false, &redPOE, &redPOD);
// Task yellow(YELLOW_TIME, TASK_ONCE, NULL, &ts, false, &yellowOE, &yellowOD);
// Task green(GREEN_TIME, TASK_ONCE, NULL, &ts, false, &greenOE, &greenOD);
// Task greenP(GREEN_TIME, TASK_ONCE, NULL, &ts, false, &greenPOE, &greenPOD);
// Task greenBlink(GREEN_BLINK_INTERVAL, GREEN_BLINK / GREEN_BLINK_INTERVAL, &greenBlinkCB, &ts, false, &greenBlinkOE, &greenBlinkOD);

// bool alreadyRed = true;
// bool redToGreen = true;
// int people = 1;
// int inputPin = 3;

// void setup() {
//   pinMode(8, OUTPUT);
//   pinMode(11, OUTPUT);
//   pinMode(9, OUTPUT);
//   pinMode(7, OUTPUT);
//   pinMode(5, OUTPUT);
//   pinMode(inputPin, INPUT_PULLUP);

//   redToGreen = true;
//   red.restartDelayed();
//   redP.restartDelayed();
// }

// void loop() {
//   ts.execute();
// }

// //Vehicle traffic Light
// bool redOE() {
//   digitalWrite(8, HIGH);
//   redToGreen = true;
//   alreadyRed = true;
//   return true;
// }

// void redOD() {
//   digitalWrite(8, LOW);
//   alreadyRed = false;
//   green.restartDelayed();
// }

// bool yellowOE() {
//   digitalWrite(11, HIGH);
//   return true;
// }

// void yellowOD() {
//   digitalWrite(11, LOW);
//   if (redToGreen) {
//     green.restartDelayed();
//   }
//   else {
//     red.restartDelayed();
//   }
// }

// bool greenOE() {
//   digitalWrite(9, HIGH);
//   return true;
// }

// void greenOD() {
//   digitalWrite(9, LOW);
//   greenBlink.restartDelayed();
// }

// bool greenState;
// bool greenBlinkOE() {
//   digitalWrite(9, HIGH);
//   greenState = true;
//   return true;
// }

// void greenBlinkCB()  {
//   greenState = !greenState;
//   digitalWrite(9, greenState ? HIGH : LOW);
// }

// void greenBlinkOD() {
//   digitalWrite(9, LOW);
//   yellow.restartDelayed();
//   redToGreen = false;
// }

// //Walking traffic Light
// bool redPOE() {
//   digitalWrite(7, HIGH);
//   return true;
// }

// void redPOD() {
//   digitalWrite(7, HIGH);
//   if (alreadyRed == true){
//     greenP.restartDelayed(); 
//     red.restartDelayed(); 
//   }
// }

// bool greenPOE() {
//   digitalWrite(5, HIGH);
//   return true;
// }

// void greenPOD() {
//   digitalWrite(5, LOW);
//   redP.restartDelayed();
// }