#include #include #include #include const int LED1 = 2; const int LED2 = 3; const int LED3 = 4; const int buzzer = 9; const int motorPin = 10; const int fanPin = 11; const int trig = 12; const int echo = 13; const int potentialPin = A0; #define DHTPIN 5 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); LiquidCrystal_I2C lcd(0x27, 16, 2); // Address 0x27, 16 columns x 2 rows float mapFloat(float x, float in_min, float in_max, float out_min, float out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; } void setup() { pinMode(trig , OUTPUT); pinMode(echo , INPUT); pinMode(LED1 , OUTPUT); pinMode(LED2 , OUTPUT); pinMode(LED3 , OUTPUT); pinMode(buzzer, OUTPUT); pinMode(motorPin, OUTPUT); pinMode(fanPin, OUTPUT); Serial.begin(9600); dht.begin(); lcd.backlight(); lcd.begin(16, 2); // Initialize the LCD (16 columns, 2 rows) lcd.clear(); lcd.setCursor(0, 0); lcd.print("irene vtm"); delay(500); } void loop() { // controlul motorului int potential = analogRead(potentialPin); int speed = map(potential, 0, 1023, 0, 255); analogWrite(motorPin, speed); //Serial.println(speed); //controlul senzorului de parcare digitalWrite(trig , HIGH); delayMicroseconds(1000); digitalWrite(trig , LOW); int duration = pulseIn(echo , HIGH); int distance = (duration / 2) / 28.5; //Serial.println(distance); digitalWrite(LED1, distance <= 8 ? HIGH : LOW); digitalWrite(LED2, distance <= 16 ? HIGH : LOW); digitalWrite(LED3, distance <= 30 ? HIGH : LOW); if (distance < 8) { tone(buzzer, 1000); } else if (distance <= 16) { tone(buzzer, 600); delay(100); noTone(buzzer); delay(100); } else { noTone(buzzer); } //controlul ventilatorului in fucntie de temperatura float temperature = dht.readTemperature(); if (!isnan(temperature)) { int fanSpeed; if (temperature >= 26) { fanSpeed = mapFloat(temperature, 26, 30, 200, 255); } else { fanSpeed = 0; } if (temperature >= 26) { Serial.println(temperature); //Serial.println(fanSpeed); fanSpeed = constrain(fanSpeed, 200, 255); //mentine viteza maxima si cand depaseste 30 celsius analogWrite(fanPin, fanSpeed); } else { analogWrite(fanPin, 0); } lcd.clear(); lcd.setCursor(0, 0); lcd.print("Temp: "); lcd.print(temperature, 1); lcd.print("C"); lcd.setCursor(0, 1); lcd.print("Fan: "); lcd.print(fanSpeed); } else { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Temp Error"); Serial.println("Failed to read temperature from DHT22!"); } delay(100); // Small delay to reduce flickering }