#include <Arduino_FreeRTOS.h>
//Variables first 3 LEDs!
int led_rojo = 8; //Red LED
int led_verde = 9; //Yellow LED
int emergencia = 10; //White LED
#define sensor_i A0
#define sensor_s A1
#define reset A2
int cantidad_de_lugares = 4
void setup() {
Serial.begin(9600);
//LEDs' initialization!
pinMode(led_rojo, OUTPUT);
pinMode(led_verde, OUTPUT);
pinMode(emergencia, OUTPUT);
pinMode(sensor_i, INPUT_PULLUP);
pinMode(sensor_s, INPUT_PULLUP);
pinMode(reset, INPUT_PULLUP);
//'Neutral_Task' - the task-free function!
xTaskCreate(Task_Ent, "Task no. 1!", 100, NULL, 1, NULL);
xTaskCreate(Task_Sal, "Task no. 2!", 100, NULL, 2, NULL);
xTaskCreate(Task_Res, "Task no. 3!", 100, NULL, 3, NULL);
}
//The following function is Task1. We display the task label on Serial monitor.
static void Task_Ent(void* pvParameters) {
while (1) {
if (digitalRead(reset) = LOW) {
digitalWrite(emerercia, HIGH);
cantidad_de_lugares = 4
digitalWrite(led_verde, HIGH);
digitalWrite(led_rojo, LOW);
digitalWrite(emergencia, LOW);
Serial.println(("reset on, lugares reiniciados"));
delay(500);
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
//Task 2
static void Task_2(void* pvParameters) {
while (1) {
if (digitalRead(sensor_i) == LOW && cantidad_de_lugares > 0) {
catidad_de_lugares
digitalWrite(led_verde, LOW);
digitalWrite(led_rojo, HIGH);
digitalWrite(emergencia, LOW);
Serial.println(F("Task no. 2!"));
vTaskDelay(1100 / portTICK_PERIOD_MS);
}
}
//Task 3
static void Task_3(void* pvParameters) {
while (1) {
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, HIGH);
digitalWrite(extender, LOW);
tone(buzzer, 400, 1200 / portTICK_PERIOD_MS);
Serial.println(F("Task no. 3!"));
vTaskDelay(1200 / portTICK_PERIOD_MS);
}
}
//Task 4 (the last one)!
//This is an extension which can be task-free!
static void Neutral_Task(void* pvParameters) {
while (1) {
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(extender, HIGH);
tone(buzzer, 500, 1300);
Serial.println(F("Neutral_Task"));
delay(1300);
}
}
//We don't need to use "loop" function here!
void loop() {}