I want to write a library for the RGBDigit shield (http://rgbdigit.com/), which essentially is an Adafruit Neopixel strip, packed as a 7 segment display. The shield also has a DS3231 clock and an IR receiver.
So my plan was to make a class RGBDigit, which inherits from the Adafruit_NeoPixel class and add private objects DS3231 and IRrecv.
This is my RGBDigit.h:
#ifndef RGBDigit_h
#define RGBDigit_h
#include <Arduino.h>
#include "Wire.h"
#include "../Adafruit_NeoPixel/Adafruit_NeoPixel.h"
#include "../IRremote/IRremote.h"
#include "../DS3231/DS3231.h"
class RGBDigit : public Adafruit_NeoPixel {
public:
RGBDigit(int nDigits);
~RGBDigit();
private:
int _nDigits;
DS3231 _clock;
IRrecv* _ir;
};
#endif
This is RGBDigit.cpp:
#include "RGBDigit.h"
RGBDigit::RGBDigit(int nDigits)
: Adafruit_NeoPixel(8 * nDigits, 12, NEO_GRB + NEO_KHZ800),
_nDigits(nDigits)
{
_ir = new IRrecv(10);
_ir->enableIRIn(); // Start the receiver
Adafruit_NeoPixel::begin();
}
RGBDigit::~RGBDigit()
{
delete _ir;
}
And this is my Arduino sketch:
#include <Wire.h>
#include <RGBDigit.h>
RGBDigit display = RGBDigit(4);
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
I get al lot of "undefined reference" errors:
RGBDigit/RGBDigit.cpp.o: In function `RGBDigit::RGBDigit(int)':
/home/ralph/Arduino/libraries/RGBDigit/RGBDigit.cpp:23: undefined reference to `Adafruit_NeoPixel::Adafruit_NeoPixel(unsigned int, unsigned char, unsigned char)'
/home/ralph/Arduino/libraries/RGBDigit/RGBDigit.cpp:23: undefined reference to `DS3231::DS3231()'
/home/ralph/Arduino/libraries/RGBDigit/RGBDigit.cpp:25: undefined reference to `IRrecv::IRrecv(int)'
/home/ralph/Arduino/libraries/RGBDigit/RGBDigit.cpp:26: undefined reference to `IRrecv::enableIRIn()'
/home/ralph/Arduino/libraries/RGBDigit/RGBDigit.cpp:27: undefined reference to `Adafruit_NeoPixel::begin()'
RGBDigit/RGBDigit.cpp.o: In function `RGBDigit::~RGBDigit()':
/home/ralph/Arduino/libraries/RGBDigit/RGBDigit.cpp:30: undefined reference to `Adafruit_NeoPixel::~Adafruit_NeoPixel()'
collect2: error: ld returned 1 exit status
But I don' t understand why. What am I doing wrong?