POUWIEL|COM

JeroenPouwiel

ARDUINO: Sonar + humidity + lcd


#include "DHT.h";
#include "NewPing.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display

// Define Constants
#define DHTPIN 7        // DHT-22 Output Pin connection
#define DHTTYPE DHT11   // DHT Type is DHT 22 (AM2302)
#define TRIGGER_PIN  10
#define ECHO_PIN     13
#define MAX_DISTANCE 400

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

// Define Variables
float hum;    // Stores humidity value in percent
float temp;   // Stores temperature value in Celcius
float duration; // Stores HC-SR04 pulse duration value
float distance; // Stores calculated distance in cm
float soundsp;  // Stores calculated speed of sound in M/S
float soundcm;  // Stores calculated speed of sound in cm/ms
int iterations = 5;
int humint = 0;


// Initialize DHT sensor for normal 16mhz Arduino
DHT dht(DHTPIN, DHTTYPE); 

void setup() {
  lcd.init();
  lcd.backlight();
  dht.begin();
}

void loop()
{

  delay(2000);  // Delay so DHT-22 sensor can stabalize
   
    hum = dht.readHumidity();  // Get Humidity value
    humint = hum;
    temp= dht.readTemperature();  // Get Temperature value
    
    // Calculate the Speed of Sound in M/S
    soundsp = 331.4 + (0.606 * temp) + (0.0124 * hum);
    
    // Convert to cm/ms
    
    soundcm = soundsp / 10000;
    
  duration = sonar.ping_median(iterations);
  
  // Calculate the distance
  distance = (duration / 2) * soundcm;
  
  // Send results to Serial Monitor
    lcd.setCursor(1,0);
    //lcd.print("Sound:");
    lcd.print(soundsp);
    lcd.print("m/s, ");
    //lcd.print("Hum:");
    lcd.print(humint);
    lcd.print("%");
    lcd.setCursor(1,1);
    lcd.print(temp);
    lcd.print("C, ");
    //lcd.print("Dis:");

    if (distance >= 400 || distance <= 2) {
      lcd.clear();
      lcd.setCursor(1,0);
      lcd.print("Distance:");
      lcd.setCursor(1,1);
      lcd.print("Out of range");
    }
    else {
      lcd.print(distance,2);
      lcd.print("cm");
    delay(500);
    }
}

Comments are closed.

Categories