/********* Pleasedontcode.com ********** Pleasedontcode thanks you for automatic code generation! Enjoy your code! - Terms and Conditions: You have a non-exclusive, revocable, worldwide, royalty-free license for personal and commercial use. Attribution is optional; modifications are allowed, but you're responsible for code maintenance. We're not liable for any loss or damage. For full terms, please visit pleasedontcode.com/termsandconditions. - Project: Arduino Sensor - Source Code compiled for: ESP32 DevKit V1 - Source Code created on: 2024-02-14 14:57:44 ********* Pleasedontcode.com **********/ /****** SYSTEM REQUIREMENTS *****/ /****** SYSTEM REQUIREMENT 1 *****/ /* As a user, I want to be able to measure distance */ /* using the HC-SR04 ultrasonic sensor and display */ /* the results on an LCD screen. */ /****** END SYSTEM REQUIREMENTS *****/ /****** DEFINITION OF LIBRARIES *****/ #include // Add the Wire library for I2C communication #include // Add the LiquidCrystal_I2C library for LCD display #include // Add the Ultrasonic library for distance measurement #include // Add the DHT library for temperature and humidity measurement /****** FUNCTION PROTOTYPES *****/ void setup(void); void loop(void); void updateOutputs(void); void displayData(float distance, float temperature, float humidity); /***** DEFINITION OF DIGITAL INPUT PINS *****/ const uint8_t DistanceBuddy_HC_SR04_Echo_PIN = 14; const uint8_t DHT11_DHT11_DOUT_PIN = 4; /***** DEFINITION OF DIGITAL OUTPUT PINS *****/ const uint8_t DistanceBuddy_HC_SR04_Trigger_PIN = 13; const uint8_t HelloRGB_LEDRGB_Red_PIN = 19; const uint8_t HelloRGB_LEDRGB_Green_PIN = 20; /***** DEFINITION OF OUTPUT RAW VARIABLES *****/ bool DistanceBuddy_HC_SR04_Trigger_PIN_rawData = 0; bool HelloRGB_LEDRGB_Red_PIN_rawData = 0; bool HelloRGB_LEDRGB_Green_PIN_rawData = 0; /***** DEFINITION OF OUTPUT PHYSICAL VARIABLES *****/ float DistanceBuddy_HC_SR04_Trigger_PIN_phyData = 0.0; float HelloRGB_LEDRGB_Red_PIN_phyData = 0.0; float HelloRGB_LEDRGB_Green_PIN_phyData = 0.0; /****** DEFINITION OF LIBRARIES CLASS INSTANCES *****/ Ultrasonic ultrasonic(DistanceBuddy_HC_SR04_Trigger_PIN, DistanceBuddy_HC_SR04_Echo_PIN); // Create an instance of the Ultrasonic class DHT dht(DHT11_DHT11_DOUT_PIN, DHT11); // Create an instance of the DHT class LiquidCrystal_I2C lcd(0x27, 16, 2); // Create an instance of the LiquidCrystal_I2C class for LCD display void setup(void) { // put your setup code here, to run once: pinMode(DistanceBuddy_HC_SR04_Echo_PIN, INPUT); pinMode(DistanceBuddy_HC_SR04_Trigger_PIN, OUTPUT); pinMode(HelloRGB_LEDRGB_Red_PIN, OUTPUT); pinMode(HelloRGB_LEDRGB_Green_PIN, OUTPUT); ultrasonic.setTimeout(2000); // Set the timeout for Ultrasonic sensor dht.begin(); // Initialize the DHT sensor lcd.begin(16, 2); // Initialize the LCD display lcd.backlight(); // Turn on the LCD backlight } void loop(void) { // put your main code here, to run repeatedly: updateOutputs(); // Refresh output data float distance = ultrasonic.read(); // Read distance from Ultrasonic sensor float temperature = dht.readTemperature(); // Read temperature from DHT sensor float humidity = dht.readHumidity(); // Read humidity from DHT sensor displayData(distance, temperature, humidity); // Display the data on the LCD } void updateOutputs() { digitalWrite(DistanceBuddy_HC_SR04_Trigger_PIN, DistanceBuddy_HC_SR04_Trigger_PIN_rawData); digitalWrite(HelloRGB_LEDRGB_Red_PIN, HelloRGB_LEDRGB_Red_PIN_rawData); digitalWrite(HelloRGB_LEDRGB_Green_PIN, HelloRGB_LEDRGB_Green_PIN_rawData); } void displayData(float distance, float temperature, float humidity) { lcd.clear(); // Clear the LCD display lcd.setCursor(0, 0); // Set the cursor to the first line // Display the distance on the LCD lcd.print("Distance: "); lcd.print(distance); lcd.print(" cm"); lcd.setCursor(0, 1); // Set the cursor to the second line // Display the temperature on the LCD lcd.print("Temp: "); lcd.print(temperature); lcd.print(" C"); // Display the humidity on the LCD lcd.print(" Humidity: "); lcd.print(humidity); lcd.print(" %"); }