Just finished writing a small C++ class to work with multiple HC-RS04 sonar transducers with a non-blocking way with the NewPing Library.
In this exact code I connected two sensors, but you can add as many as you like.
To add new sonars, just create a new instance of it adding the echo and trigger pins.
Sonar sonar1(2,3);
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Daniel Andrade - www.danielandrade.net | |
non blocking classes for NewPing sonars | |
*/ | |
#include <NewPing.h> | |
class Sonar : public NewPing | |
{ | |
// Class Member Variables | |
// Initialized | |
int trigPin; // Trigger | |
int echoPin; // Echo | |
// Current Readings | |
int distance; // measured distance | |
unsigned long previousMillis; // last time we did a reading | |
// Constructor - creates a sonar | |
// and initialize member variables | |
public : Sonar(int trig, int echo) : NewPing(trig, echo, 90), trigPin(trig), echoPin(echo), previousMillis(0) | |
{ | |
} | |
void updateSonar() | |
{ | |
// check if the time has passed (more than 30ms) | |
unsigned long currentMillis = millis(); | |
// if it has passed more than 30ms | |
if(currentMillis - previousMillis >= 30) | |
{ | |
previousMillis = millis(); | |
// read current distance | |
distance = ping_cm(); | |
} | |
} | |
int currentDistance() { return distance; } | |
}; | |
// Create the instances for our sonars | |
Sonar sonar1(2,3); | |
Sonar sonar2(5,4); | |
void setup() | |
{ | |
} | |
void loop() | |
{ | |
sonar1.updateSonar(); | |
sonar2.updateSonar(); | |
int distance1 = sonar1.currentDistance(); | |
int distance2 = sonar2.currentDistance(); | |
Serial.print(distance1); | |
Serial.print(" - "); | |
Serial.println(distance2); | |
} |
Here is an example with some NeoPixels, just for fun:
Cheers!
Sir, I like your idea very much and I m impressed with your project. So, I just want to make this amazing project but the problem is that you haven’t mentioned the device or the component you are using also there is no information about the connection, please sir help me out with this.
I’ll be so glad if you’ll help me out.
Thanks