#include <Arduino.h>
#include <Arduino_FreeRTOS.h>

#define capteur 2
#define interrupteur 3
#define GREEN_LED 4
#define RED_LED 5
#define BUZZER 6

void interruptTask(void *pvParameters);
void capteurTask(void *pvParameters);

void setup() {
  pinMode(capteur, INPUT);
  pinMode(interrupteur, INPUT_PULLUP);
  pinMode(GREEN_LED, OUTPUT);
  pinMode(RED_LED, OUTPUT);
  pinMode(BUZZER, OUTPUT);

  // Create tasks
  xTaskCreate(interruptTask, "Interrupt Task", 100, NULL, 1, NULL);
  vTaskStartScheduler();
}

void loop() {
}

void interruptTask(void *pvParameters) {
  while (1) {
    if ((digitalRead(interrupteur) == HIGH) && (digitalRead(capteur) == HIGH)) {
      xTaskCreate(capteurTask, "CAPTEUR Task", 100, NULL, 2, NULL);
    } else {
      digitalWrite(GREEN_LED, HIGH);
    }
  }
}

void capteurTask(void *pvParameters) {
  while (1) {
    digitalWrite(GREEN_LED, LOW);
    digitalWrite(BUZZER, HIGH);
    digitalWrite(RED_LED, HIGH);

    if (digitalRead(interrupteur) == LOW) {
      digitalWrite(GREEN_LED, LOW);
      digitalWrite(BUZZER, LOW);
      digitalWrite(RED_LED, LOW);

      vTaskDelete(NULL);
    }
  }
}