//Created by Barbu Vulc!
//FreeRTOS library for Arduino:
#include "freertos/FreeRTOS.h"
//Define variables for HC-SR04:
#define echoPin 4 //Attach pin D2 Arduino to pin Echo of HC-SR04.
#define trigPin 2 //Attach pin D3 Arduino to pin Trig of HC-SR04.
long duration; //Variable for the duration of sound wave travel.
int distance; //Variable for the distance measurement.
//Define variables for photoresistor:
const int sensorMin = 0; //Sensor minimum...
const int sensorMax = 500; //Sensor maximum...
//Variables for LEDs:
const int LED1 = 11, LED2 = 12;
//'LED1' is for HC-SR04 & 'LED2' is for photoresistor.
void setup() {
//Serial communication:
Serial.begin(9600);
//LEDs' initialization:
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
//The created tasks!
xTaskCreate(Task1, "HC-SR04 sensor", 100, NULL, 1, NULL);
xTaskCreate(Task2, "Photoresistor", 100, NULL, 0, NULL);
xTaskCreate(Task3, "Communication", 100, NULL, 2, NULL);
}
//Task for HC-SR04 sensor!
static void Task1(void* pvParameters) {
while (1) {
//Clears the trigPin condition
digitalWrite(trigPin, LOW); delay(100);
//Sets the trigPin HIGH (ACTIVE) for 10 microseconds
digitalWrite(trigPin, HIGH); delay(100);
digitalWrite(trigPin, LOW);
//Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
//Calculating the distance
distance = duration * 0.034 / 2; //Speed of sound wave divided by 2 (go and back)
Serial.println("Distance: ");
Serial.print(distance);
Serial.println(" cm");
digitalWrite(LED1, 1); digitalWrite(LED2, 0);
vTaskDelay(500 / portTICK_PERIOD_MS);
}
}
//Task for photoresistor!
static void Task2(void* pvParameters) {
while (1) {
// read the sensor:
int sensorReading = analogRead(A0);
// map the sensor range to a range of four options:
int range = map(sensorReading, sensorMin, sensorMax, 0, 3);
Serial.println("Range: ");
Serial.print(range);
Serial.println(" lux \n");
digitalWrite(LED1, 0); digitalWrite(LED2, 1);
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
//Task purely for serial communication!
static void Task3(void* pvParameters) {
while (1) {
Serial.println(F("HC-SR04 sensor - Task1"));
Serial.println(F("Photoresistor - Task2"));
vTaskDelay(4000 / portTICK_PERIOD_MS);
}
}
void loop() {}
esp:VIN
esp:GND.2
esp:D13
esp:D12
esp:D14
esp:D27
esp:D26
esp:D25
esp:D33
esp:D32
esp:D35
esp:D34
esp:VN
esp:VP
esp:EN
esp:3V3
esp:GND.1
esp:D15
esp:D2
esp:D4
esp:RX2
esp:TX2
esp:D5
esp:D18
esp:D19
esp:D21
esp:RX0
esp:TX0
esp:D22
esp:D23
ultrasonic1:VCC
ultrasonic1:TRIG
ultrasonic1:ECHO
ultrasonic1:GND
ldr1:VCC
ldr1:GND
ldr1:DO
ldr1:AO
led1:A
led1:C
led2:A
led2:C
r1:1
r1:2
r2:1
r2:2
r3:1
r3:2