You are on page 1of 2

#include <Arduino_FreeRTOS.

h>
#include <semphr.h>

SemaphoreHandle_t xSerialSemaphore;

void TaskLDR( void *pvParameters );


void TaskSR( void *pvParameters );

void setup() {
Serial.begin(9600);
if ( xSerialSemaphore == NULL )
{
xSerialSemaphore = xSemaphoreCreateMutex();
if ( ( xSerialSemaphore ) != NULL )
xSemaphoreGive( ( xSerialSemaphore ) );
}

xTaskCreate(
TaskLDR
, (const portCHAR *)"LDRRead"
, 128
, NULL
, 2
, NULL );

xTaskCreate(
TaskSR
, (const portCHAR *) "SRRead"
, 128
, NULL
, 1
, NULL );
}

void loop()
{
}
void TaskLDR( void *pvParameters __attribute__((unused)) )
{
int LIGHT = 7;
int RELAY = 12;

pinMode(LIGHT, INPUT);
pinMode(RELAY, OUTPUT);

for (;;)
{
// read the input pin:
int L = digitalRead(LIGHT);
if(L == 1){
Serial.println(" light is ON");
digitalWrite(RELAY,LOW);
}else{

Serial.println(" === light is OFF");


digitalWrite(RELAY,HIGH);
}

vTaskDelay(1);
}
}

void TaskSR( void *pvParameters __attribute__((unused)) )


{
int PIR = 2;
int RELAY = 13;
bool pinStatus = LOW;
bool pirState = LOW;
pinMode(PIR, INPUT);
pinMode(RELAY, OUTPUT);

for (;;)

{
pinStatus = digitalRead(PIR);
if (pinStatus == HIGH) {
if (pirState == LOW) {
digitalWrite(RELAY, LOW);
pirState= HIGH;
}
}
else
{
if (pirState == HIGH) {
digitalWrite(RELAY, HIGH);
pirState = LOW;
}
}
}
}

You might also like