Hello
I am trying to use libraries to encapsulate implementation details of certain classes so it is easier to decompose objects and separation of concerns.
In this situation, I am hiding implementation details of newPing objects that's in class of UltraSonicSensor.
I get the following message error when I try to build this:
/home/pavel/ZumoArduino/libraries/UltraSonicSensor/UltraSonicSensor.cpp: In constructor 'UltraSonicSensor::UltraSonicSensor()':
/home/pavel/ZumoArduino/libraries/UltraSonicSensor/UltraSonicSensor.cpp:11:36: error: no matching function for call to 'NewPing::NewPing()'
UltraSonicSensor::UltraSonicSensor() {
^
/home/pavel/ZumoArduino/libraries/UltraSonicSensor/UltraSonicSensor.cpp:11:36: note: candidates are:
In file included from /home/pavel/ZumoArduino/libraries/UltraSonicSensor/UltraSonicSensor.h:5:0,
from /home/pavel/ZumoArduino/libraries/UltraSonicSensor/UltraSonicSensor.cpp:3:
/home/pavel/ZumoArduino/libraries/NewPing/NewPing.h:206:3: note: NewPing::NewPing(uint8_t, uint8_t, unsigned int)
NewPing(uint8_t trigger_pin, uint8_t echo_pin, unsigned int max_cm_distance = MAX_SENSOR_DISTANCE);
^
/home/pavel/ZumoArduino/libraries/NewPing/NewPing.h:206:3: note: candidate expects 3 arguments, 0 provided
/home/pavel/ZumoArduino/libraries/NewPing/NewPing.h:204:7: note: constexpr NewPing::NewPing(const NewPing&)
class NewPing {
^
/home/pavel/ZumoArduino/libraries/NewPing/NewPing.h:204:7: note: candidate expects 1 argument, 0 provided
/home/pavel/ZumoArduino/libraries/NewPing/NewPing.h:204:7: note: constexpr NewPing::NewPing(NewPing&&)
/home/pavel/ZumoArduino/libraries/NewPing/NewPing.h:204:7: note: candidate expects 1 argument, 0 provided
/home/pavel/ZumoArduino/libraries/UltraSonicSensor/UltraSonicSensor.cpp:12:41: error: no match for call to '(NewPing) (int, int, int)'
UltraSonicSensor::_sonar(12, 13, 400);
^
exit status 1
Error compiling for board Arduino/Genuino Uno.
This is the following files that I just implemented:
UltraSonicSensor.h
#ifndef UltraSonicSensor_h
#define UltraSonicSensor_h
#include "Arduino.h"
#include "NewPing.h"
class UltraSonicSensor
{
public:
UltraSonicSensor();
/*int getCurrentReading();
bool hasDetectedContact();*/
private:
NewPing _sonar;
int _TRIGGER_PIN;
int _ECHO_PIN;
int _MAX_DISTANCE;
};
#endif
UltraSonicSensor.cpp
#include "Arduino.h"
#include "NewPing.h"
#include "UltraSonicSensor.h"
/*#define TRIGGER_PIN 12
#define ECHO_PIN
#define MAX_DISTANCE*/
UltraSonicSensor::UltraSonicSensor() {
UltraSonicSensor::_sonar(12, 13, 400);
}
and the running file of zujmo-rescuer.ino
#include <UltraSonicSensor.h>
void setup() {
// put your setup code here, to run once:
String var = "Hello";
}
void loop() {
// put your main code here, to run repeatedly:
}
and here's the link to the reference of the NewPing: Arduino Playground - NewPing Library
and the directory structure is:
zumo-rescuer
-- zumo-rescuer
libraries
--UltraSonicSensor
----UltraSonicSensor.cpp
----UltraSonicSensor.h
--NewPing
----NewPing
Thank you very much for reading this!
NewPing.cpp (16.6 KB)
NewPing.h (13.8 KB)