Hi guys, I am writing down a library that helps who want to build cheap distance sensors.
We use the IR LED capacitance to determine the distance of the object, with two readings: ambient light check and ir light emission check
I try to write down a library to help people to use free this system but I get some errors:
ERER.cpp:64: error: no ‘void ERER::init(int)’ member function declared in class ‘ERER’
here it is the cpp:
/*
---------------------------------------------------
ERER.cpp - Library for ERER sensors.
Use 2 infrared LEDs to build a distance sensor
After that think about to matrix it with this - _-
---------------------------------------------------
Created by Giovanni Blu Mitolo, March 11, 2011.
www.gioblu.com - gioscarab@gmail.com
Released with Creative Commons Attribution licence
---------------------------------------------------
*/
#include "WProgram.h"
#include "ERER.h"
void ERER::emitterN(int emitterNegative){
pinMode(emitterN, OUTPUT);
_irEmitterP = emitterNegative;
}
void ERER::receiverN(int receiverNegative){
_irReceiverN = receiverNegative;
}
void ERER::receiverP(int receiverPositive){
_irReceiverP = receiverPositive;
}
void ERER::gain(int setGain){
_gain = setGain;
}
void ERER::maxRangeValue(int setMaxRangeValue){
_maxRangeValue = setMaxRangeValue;
}
void ERER::maxRange(int setMaxRange){
_maxRange = setMaxRange;
}
/////////////////////////////////////////////////////////////////////////////
void ERER::distanceCheck() {
if(currentInit == 0){if(digitalRead(_irReceiverN) == LOW) ERER::ambientCheck();}
if(currentInit == 1){if(digitalRead(_irReceiverN) == LOW) ERER::emissionCheck();}
}
void ERER::ambientCheck() {
ambient = micros() - lightTime;
ERER::init(1);
}
void ERER::emissionCheck(){
rawData = micros() - lightTime;
distance = rawData * (ambient / (ambient - rawData));
distance = map(distance, 0, _maxRangeValue, 0, _maxRange);
if(distance <= 0) distance = 0;
if(distance > 15) distance = sqrt(distance) * _gain;
rawData = 0;
ambient = 0;
ERER::init(0);
}
void ERER::init(int emitter) {
if(emitter == 0)digitalWrite(_irEmitterP, LOW);
if(emitter == 1)digitalWrite(_irEmitterP, HIGH);
lightTime = micros();
pinMode(_irReceiverN, OUTPUT);
digitalWrite(_irReceiverN, HIGH); //carico ricevitore di induttanza
pinMode(_irReceiverN, INPUT);
digitalWrite(_irReceiverN, LOW);
if(emitter == 1) currentInit = 1;
if(emitter == 0) currentInit = 0;
}
here it is the .h:
/*
ERER.cpp - Library for ERER sensors.
(use 2 infrared LEDs to build a distance sensor)
Created by Giovanni Blu Mitolo, March 11, 2011.
Released with Creative Commons Attribution licence
*/
#ifndef ERER_h
#define ERER_h
class ERER {
public:
long ambient;
void ambientCheck();
long currentInit;
long distance;
void distanceCheck();
void emissionCheck();
void gain(int setGain)
void init(int emitter);
long lightTime;
void maxRangeValue(int setMaxRangeValue);
void maxRange(int setMaxRange);
long rawData;
void emitterN(int emitterNegative);
void receiverN(int receiverNegative);
void receiverP(int receiverPositive);
private:
int _irEmitterP;
int _irReceiverP;
int _irReceiverN;
int _gain;
long _maxRange;
long _maxRangeValue;
};
#endif
pleease help
