#include <Arduino_FreeRTOS.h>
#include <LiquidCrystal.h>
const int LED0 = 7;
const int LED1 = 8;
const int LED2 = 9;
const int LED3 = 10;
const int buzzer= 13;
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup(){
lcd.begin(16, 2);
Serial.begin(9600);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED0, OUTPUT);
pinMode(buzzer,OUTPUT);
xTaskCreate(Task_1, "Job 1!", 100, NULL, 1, NULL);
xTaskCreate(Task_2, "Job 2!", 100, NULL, 1, NULL);
xTaskCreate(Task_3, "Job 3!", 100, NULL, 1, NULL);
xTaskCreate(Idle_Task, ".......", 100, NULL, 0, NULL);
}
void loop(){}
static void Task_1(void* pvParameters){
while(1){
digitalWrite(LED0, HIGH);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
tone(buzzer,300,1100/portTICK_PERIOD_MS);
Serial.println(F("Job 1!"));
lcd.setCursor(0, 1);
lcd.print("Job 1!");
vTaskDelay(1000/portTICK_PERIOD_MS);
}
}
static void Task_2(void* pvParameters){
while(1){
digitalWrite(LED0, LOW);
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
tone(buzzer,400,1200/portTICK_PERIOD_MS);
Serial.println(F("Job 2!"));
lcd.setCursor(0, 1);
lcd.print("Job 2!");
vTaskDelay(2000/portTICK_PERIOD_MS);
}
}
static void Task_3(void* pvParameters){
while(1){
digitalWrite(LED0, LOW);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, LOW);
tone(buzzer,500,1300/portTICK_PERIOD_MS);
Serial.println(F("Job 3!"));
lcd.setCursor(0, 1);
lcd.print("Job 3!");
vTaskDelay(3000/portTICK_PERIOD_MS);
}
}
static void Idle_Task(void* pvParameters){
while(1){
digitalWrite(LED0, LOW);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, HIGH);
Serial.println(F(".......!"));
tone(buzzer,600,1400/portTICK_PERIOD_MS);
lcd.setCursor(0, 1);
lcd.print("......");
delay(500);
lcd.clear();
}
}