#include <Arduino_FreeRTOS.h>
#define echoPin 2
#define trigPin 3
long duration;
int distance;
//varijabli za fotorezistorot
const int sensorMin = 0;
const int sensorMax = 500;
//Varijabi za led diodite
const int LED1 = 11, LED2 = 12;
void setup() {
Serial.begin(9600);
//LED inicijalizacija
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
xTaskCreate(Task1, "HC-SR04 sensor", 100, NULL, 1, NULL);
xTaskCreate(Task2, "Photoresistor", 100, NULL, 0, NULL);
xTaskCreate(Task3, "Communication", 100, NULL, 2, NULL);
}
//Task za senzorot za rastojanie
static void Task1(void* pvParameters) {
while (1) {
digitalWrite(trigPin, LOW); delay(100);
digitalWrite(trigPin, HIGH); delay(100);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
Serial.println("Distance: ");
Serial.print(distance);
Serial.println(" cm");
digitalWrite(LED1, 1); digitalWrite(LED2, 0);
vTaskDelay(500 / portTICK_PERIOD_MS);
}
}
//Task za fotorezistorot
static void Task2(void* pvParameters) {
while (1) {
int sensorReading = analogRead(A0);
// mapira senzorot za max i min vo opseg 0-3
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 za seriska komunikacija
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() {}