#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <unistd.h>
// Define LDR thresholds for different light frequencies
#define HIGH_THRESHOLD 700
#define MEDIUM_THRESHOLD 500
#define LOW_THRESHOLD 300
// Base class for sensor
typedef struct {
int value; // simulated LDR sensor value
} Sensor;
// Derived class for RGB LED
typedef struct {
Sensor sensor; // inherits from Sensor
bool green;
bool orange;
bool red;
} RGB_LED;
// Derived class for Buzzer
typedef struct {
Sensor sensor; // inherits from Sensor
bool active;
} Buzzer;
// Function to initialize RGB LED
void RGB_LED_init(RGB_LED *led) {
led->green = false;
led->orange = false;
led->red = false;
}
// Function to initialize Buzzer
void Buzzer_init(Buzzer *buzzer) {
buzzer->active = false;
}
// Function to read LDR sensor value
int read_ldr_sensor() {
// Simulated LDR sensor reading
return rand() % 1024; // Random value between 0 and 1023
}
// Function to update RGB LED based on sensor value
void update_rgb_led(RGB_LED *led, int value) {
if (value >= HIGH_THRESHOLD) {
led->green = true;
led->orange = false;
led->red = false;
} else if (value >= MEDIUM_THRESHOLD) {
led->green = false;
led->orange = true;
led->red = false;
} else {
led->green = false;
led->orange = false;
led->red = true;
}
}
// Function to update Buzzer based on sensor value
void update_buzzer(Buzzer *buzzer, int value) {
if (value >= HIGH_THRESHOLD) {
buzzer->active = true;
} else {
buzzer->active = false;
}
}
// Function to simulate device operation
void operate_device(RGB_LED *led, Buzzer *buzzer) {
int sensor_value;
while (true) {
// Read sensor value
sensor_value = read_ldr_sensor();
// Update RGB LED
update_rgb_led(led, sensor_value);
// Update Buzzer
update_buzzer(buzzer, sensor_value);
// Print sensor value and LED/Buzzer status
printf("Sensor Value: %d\n", sensor_value);
printf("Green LED: %s, Orange LED: %s, Red LED: %s\n",
led->green ? "ON" : "OFF",
led->orange ? "ON" : "OFF",
led->red ? "ON" : "OFF");
printf("Buzzer: %s\n", buzzer->active ? "ON" : "OFF");
printf("--------------------------\n");
// Wait for some time before reading sensor again
delay(1000);
}
}
int main() {
// Initialize RGB LED and Buzzer
RGB_LED led;
Buzzer buzzer;
RGB_LED_init(&led);
Buzzer_init(&buzzer);
// Operate the device
operate_device(&led, &buzzer);
return 0;
}