got a setup with 3 sensors and weird stuff happens.
When i do not block the sensor it measures the ceiling just fine?
When i don't block the sensors
15:21:07.744 -> pin:0-180.56
15:21:07.791 -> pin:1-172.19
15:21:07.837 -> pin:2-180.78
When i block sensor 1:
15:21:30.346 -> pin:0-9.57
15:21:30.393 -> pin:1-0.00
15:21:30.393 -> pin:2-181.44
when i block sensor 2:
15:21:41.502 -> pin:0-181.39
15:21:41.549 -> pin:1-7.99
15:21:41.549 -> pin:2-0.00
When i block sensor 3:
15:21:56.689 -> pin:0-181.07
15:21:56.736 -> pin:1-174.25
15:21:56.736 -> pin:2-8.53
Is my code wrong or should i look elsewhere.
/*
*Using HCSR04-ultrasonic-sensor-lib made by gamegine, thanks for yor work!
*https://github.com/gamegine/HCSR04-ultrasonic-sensor-lib
*Checking the distance on the left and right and front of the walker.
*There is 3 distances with unique buzz characteristics.
*on high we buzz the left, right or both ( for front) once for .5 seconds
*on short we buzz 3 x for .5 seconds
*on left right or front we buzz till the way is clear.
*/
#include <HCSR04.h>
HCSR04 hc(2, new int[3]{4, 7, 8}, 3); //initialisation class HCSR04 (trig pin , echo pin, number of sensor)
bool leftlong = false;
bool leftshort = false;
bool rightlong = false;
bool rightshort = false;
bool frontlong = false;
bool frontshort = false;
const float lefthigh = 15.0;
const float leftlow = 10.0;
const float left = 5.0;
const float righthigh = 20.0;
const float rightlow = 14.0;
const float right = 7.0;
const float fronthigh = 30.0;
const float frontlow = 20.0;
const float front = 10.0;
void setup()
{
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop()
{
digitalWrite(LED_BUILTIN, LOW);
for (int i = 0; i < 3; i++)
Serial.println((String)"pin:"+i+"-"+hc.dist(i)); //return curent distance in serial for sensor 1 to 6
if(hc.dist(0) < lefthigh && !leftlong)
{
// buzzercode left short
for (int i = 0; i < 3; i++)
{
digitalWrite(LED_BUILTIN, HIGH);
delay(200);
digitalWrite(LED_BUILTIN, LOW);
delay(200);
}
leftlong = true;
}
else
{
leftlong = false;
}
if(hc.dist(0) < leftshort && !leftshort)
{
// buzzercode left short
for (int i = 0; i < 4; i++)
{
digitalWrite(LED_BUILTIN, HIGH);
delay(200);
digitalWrite(LED_BUILTIN, LOW);
delay(200);
}
leftshort = true;
}
else
{
leftshort = false;
}
if(hc.dist(0) < left)
{
// buzzercode left
for (int i = 0; i < 10; i++)
{
digitalWrite(LED_BUILTIN, HIGH);
delay(80);
digitalWrite(LED_BUILTIN, LOW);
delay(50);
}
}
if(hc.dist(1) < righthigh && !rightlong)
{
//buzzercode right long
for (int i = 0; i < 6; i++)
{
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
delay(500);
}
rightlong = true;
}
else
{
rightlong = false;
}
if(hc.dist(1) < rightshort && !rightshort)
{
//buzzercode right short
for (int i = 0; i < 7; i++)
{
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
delay(500);
}
rightshort = true;
}
else
{
rightshort = false;
}
if(hc.dist(1) < right)
{
// buzzercode right
for (int i = 0; i < 15; i++)
{
digitalWrite(LED_BUILTIN, HIGH);
delay(200);
digitalWrite(LED_BUILTIN, LOW);
delay(50);
}
}
if(hc.dist(2) < fronthigh && !frontlong)
{
//buzzercode front long
for (int i = 0; i < 9; i++)
{
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
delay(500);
}
frontlong = true;
}
else
{
frontlong = false;
}
if(hc.dist(2) < frontshort && !frontshort)
{
//buzzercode front short
for (int i = 0; i < 10; i++)
{
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
delay(500);
}
frontshort = true;
}
else
{
frontshort = false;
}
if(hc.dist(2) < front)
{
// buzzercode front
for (int i = 0; i < 20; i++)
{
digitalWrite(LED_BUILTIN, HIGH);
delay(150);
digitalWrite(LED_BUILTIN, LOW);
delay(150);
}
}
delay(60); // we suggest to use over 60ms measurement cycle, in order to prevent trigger signal to the echo signal.
}