Finde den Fehler im Code nicht !!!

Hi,

sitz schon seit Stunden an meinem code, aber kann den Fehler einfach nicht finden!!! Ich hab mir eine Library gemacht, damit ich meine rgb led’s einfacher steuern kann.

Im Hauptprogramm wird eine Klasse der Library erzeugt.
Dann rufe ich eine Funktion der Klasse auf. Funktioniert bis jetzt alles.
Dann möchte ich jedoch in dieser aufgerufenen Funktion noch eine andere Funktion derselben Klasse aufrufen.
Dabei bekomme ich jedoch immer den Fehler:

"/Applications/Arduino/hardware/libraries/superflux/superflux.o: In function `superflux::on(char)’:

/Applications/Arduino/hardware/libraries/superflux/superflux.cpp:40: undefined reference to `superflux::choosePin(char)’"

Kann mir wer sagen worans liegt?

superflux.h

/*
  superflux.h - Library for superflux LED's.
*/
#ifndef superflux_h
#define superflux_h

#include "WProgram.h"

class superflux
{
  public:
    superflux(int Rpin, int Gpin, int Bpin, int del);
    void fadeIn(char color);
    void fadeOut(char color); 
    void on(char color);
    void off(char color);
    int choosePin(char color);
  private:
    int _Rpin;
    int _Gpin;
    int _Bpin;
    int wait;
      int _value;
};

#endif

superflux.cpp

void superflux::on(char color)
{
  int pin = choosePin(color);
  analogWrite(pin, 255);
}

int superflux::choosePin(char color)
{
      int pin = 0;
      
       if(color == 'r')
       {
       pin = _Rpin;
       }
       else if(color == 'g')
       {
       pin = _Gpin;
       }
       else (color == 'b')
       {
       pin = _Bpin;
       }
       return pin;
}

Hauptprogramm

// Fading LED 
#include <superflux.h>

int wait = 35;                           // delay zeit beim aus und einfaden

superflux rgb1(12, 11, 10, wait);

void setup() 
{ 
  // nothing for setup 
} 
 
void loop() 
{ 
  rgb1.fadeIn('r');
  rgb1.on('b');
  rgb1.fadeOut('r');
}

duerfen wir das header file auch noch sehen ?

schon geadded :wink:

else (color == 'b') /* fehlt da ein IF ? */
{
  pin = _Bpin;
}

/* fehlt da ein IF ? */

wenn du color auf 'b' testen willst: JA

Das war eine rhetorische Frage.

Ob es das Problem mit der Funktion loest, weiss ich allerdings nicht.

Aja, das if fehlt ;) Aber das Problem wird leider nicht gelöst. :(

Also das mit den classes in c++ ist mir selbst nicht so ganz geheuer, mal abgesehen von der normalen benutzung. Alles sehr verschachtelt.

Ich wuerde hier starten, sollte ich einen Lib schreiben muessen: http://www.arduino.cc/en/Hacking/LibraryTutorial

Ja danke für den link, aber den hab ich eh verwendet. ;)

Ich glaube, Du hast das Headerfile nicht im cpp File included, oder?
Fang das .cpp File doch am besten so an:

#include "superflux.h"

mit welcher Arduino Softwareversion arbeitest Du?

Doch, doch, hab alles drinnen:

/*
  superflux.cpp - Library for superflux led's.
*/
#include "superflux.h"
#include "WProgram.h"

Arduino Version: 0016 Alpha wenns das Richtige is. Und ich arbeite an einem Mac falls das was hilft.