// ---------------------------------------------------------------------------
// Example NewPing library sketch that does a ping about 20 times per second.
// ---------------------------------------------------------------------------
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
#include <NewPing.h>
#define lid_sensor_trig 9 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define lid_sensor_eco 10 // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 500 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
#define level_sensor_trig 6 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define level_sensor_eco 7
NewPing lid_distance(lid_sensor_trig, lid_sensor_eco, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
NewPing level_distance(level_sensor_trig, level_sensor_eco, MAX_DISTANCE);
int lid_prev=-1;
int level_prev=-1;
int level_dist;
int lid_dist;
void setup() {
Serial.begin(115200); // Open lcd monitor at 115200 baud to see ping results.
lcd_setup();
}
void loop() {
sensors();
if((lid_dist!=lid_prev)||(level_dist!=level_prev))
update_lcd();
}
void lcd_setup()
{
lcd.init();
lcd.clear();
lcd.backlight(); // Make sure backlight is on
}
void update_lcd()
{
lcd.clear();
lcd.backlight();
lid_prev=lid_dist;
level_prev=level_dist;
lcd.setCursor(0,0);
// Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
lcd.print("lid_distan ");
lcd.print(lid_dist); // Send ping, get distance in cm and print result (0 = outside set distance range)
lcd.print("cm");
lcd.setCursor(0,1);
lcd.print("level_dist ");
lcd.print(level_dist); // Send ping, get distance in cm and print result (0 = outside set distance range)
lcd.println("cm");
delay(1000);
}
void sensors()
{
int i=0;
int lids[100];
int levels[100];
for(i=2;i<100;i++)
{
lids[i]=lid_distance.ping_cm();
if((lids[i]==lids[i-1])&&(lids[i]==lids[i-2]))
{
lid_dist=lids[i];
break;
}
}
for(i=2;i<100;i++)
{
levels[i]=level_distance.ping_cm();
if((levels[i]==levels[i-1])&&(levels[i]==levels[i-2]))
{
level_dist=levels[i];
break;
}
}
}