BMW E36 Cluster | Sketch Fehler! | Fehler beim Kompilieren.

Hey,

Leider bekomme ich einen Fehler beim Hochladen auf mein UNO R3 Board von Elegoo der Fehler lautet:

sketch\Tacho_e36.ino.cpp.o: In function `setup':

C:\Users\Phillip\Desktop\Tacho\Tacho\Tacho_e36/Tacho_e36.ino:50: undefined reference to `Tone::begin(unsigned char)'

C:\Users\Phillip\Desktop\Tacho\Tacho\Tacho_e36/Tacho_e36.ino:51: undefined reference to `Tone::begin(unsigned char)'

sketch\Tacho_e36.ino.cpp.o: In function `ReadData()':

C:\Users\Phillip\Desktop\Tacho\Tacho\Tacho_e36/Tacho_e36.ino:115: undefined reference to `Tone::play(unsigned int, unsigned long)'

C:\Users\Phillip\Desktop\Tacho\Tacho\Tacho_e36/Tacho_e36.ino:118: undefined reference to `Tone::stop()'

collect2.exe: error: ld returned 1 exit status

exit status 1
Fehler beim Kompilieren.

Leider weiß ich nicht mehr was ich tun kann :frowning:
Ich danke um jede Hilfe!

Sketch:

#include <C:\Users\Phillip\Desktop\Tacho\Tacho\Tone\Tone/Tone.h>
#include <SPI.h>
char kind_of_data;
// shiftpoint #############
int ShiftPoint  = 0;   
int RpmSimTools = 6500;  // Schaltpunkt vorbelegen
int LimitRange  = 0;
int UnderShiftPoint;
int OverShiftPoint;
int OverShift;
int UnderShift;
int ButtonState;
int LastButtonState = LOW;
long lastDebounceTime = 0;
long debounceDelay    = 5;
//LED rpm
int rpmLED = 0;
// 7segment Common Cathode 
int Gear;
int GearLight = 0;
int N1[9] = {63,6,91,79,102,109,124,7,80};  // 0 1 2 3 4 5 6 7 r
//arduino pins
int prpm = 2;      
int pkmh = 3;          
int ful  = 5;   // pwm 
int tmp  = 6;   // pwm 
int capture_button = 4;  //shift point capture button
int analog_adj_pot = 0;  // adjusting poti
//arduino spi pins nach 74HC595 (Shiftregister)
int latchpin = 10;   // blaues kabel >> RCLK   (Register clock)
int clockpin = 13;   // grünes kabel >> SRCLK  (Shift register clock)
int datapin  = 11;   // gelbes kabel >> SER    (Serial data input)
// Tone
Tone kmh;
Tone rpm;

void setup(){
pinMode(latchpin, OUTPUT);  
pinMode(ful, OUTPUT);  
pinMode(tmp, OUTPUT); 
pinMode(capture_button,INPUT);

digitalWrite(latchpin, LOW);

//Setup SPI
SPI.setBitOrder(MSBFIRST);
SPI.begin(); 

//Setup TONE 
kmh.begin(pkmh);
rpm.begin(prpm);

Serial.begin(115200);
// Vorbelegung auf 50°c
analogWrite(tmp,85); 
// Vorbelegung auf 30 Ltr.
analogWrite(ful,95); 
}

void CheckButtonPress() {   // shiftlight 
int reading = digitalRead(capture_button);
if (reading != LastButtonState){
  lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
  if (reading != ButtonState){
    ButtonState = reading;
    if (ButtonState == HIGH){
      ShiftPoint = RpmSimTools;
    }
  }
}
LastButtonState = reading;
}

void CheckShiftLightAdj() {  // shiftlight nachjustieren
LimitRange = analogRead(analog_adj_pot);
int RpmAdjust = map(LimitRange, 1, 1023, 0, 2000);
UnderShift = RpmAdjust;
OverShift = RpmAdjust;
}

void SetLimits() {  // shiftlight
UnderShiftPoint = ShiftPoint - UnderShift;
OverShiftPoint = ShiftPoint + OverShift;
}

void ReadData(){
if(Serial.available() > 0) {
  kind_of_data = Serial.read();
  delay(1);
  int Data100 = Serial.read() - '0';
  delay(1);
  int Data10 = Serial.read()- '0';
  delay(1);
  int Data1 = Serial.read()- '0';

  //Daten anpassen: aus 1 wird 001, aus 10 wird 010 etc.
  while (Data1 < 0) {
    Data1 = Data10;
    Data10 = Data100;
    Data100 = 0;
  }

  int Data = 100*Data100 + 10*Data10 + Data1;
    //  Speed
    if (kind_of_data == 'S') {
    int Speed = map(Data,0,255,0,318);
    //  Gauge begrenzen
     if(Speed > 318) {
      Speed = 318;
      kmh.play(Speed);
     }
     else if((Speed <= 318) && (Speed >= 25)) {
      kmh.play(Speed);
     }
     else if(Speed < 25) {
      kmh.stop();
     }
    } 

    // Drehzahl      
    else if (kind_of_data == 'R') {
     RpmSimTools = Data*10;
     int Drehzahl = map(Data,0,700,0,350);
     if(Drehzahl > 350) {
      Drehzahl = 350;
     }
     if(Drehzahl < 025) {
      Drehzahl = 000;
     }
     rpm.play(Drehzahl);
   }

    // Gang 
    else if (kind_of_data == 'G') {
     Gear = Data;

     if (Gear == 9) {   // rückwärts
      GearLight = N1[8];
     } 
     if (Gear == 0) {   // neutral
      GearLight = N1[0];
     } 
     if (Gear == 1) {   // 1 gang
      GearLight = N1[1];  
     } 
     if (Gear == 2) {   // 2 gang
      GearLight = N1[2];
     }  
     if (Gear == 3) {   // 3 gang
      GearLight = N1[3];
     } 
     if (Gear == 4) {   // 4 gang
      GearLight = N1[4];
     } 
     if (Gear == 5) {   // 5 gang
      GearLight = N1[5];
     }
     if (Gear == 6) {   // 6 gang
      GearLight = N1[6];
     }
     if (Gear == 7) {   // 7 gang
      GearLight = N1[7];
     }
    }

    //Tankinhalt 
    else if (kind_of_data == 'F') {
     int Tankinhalt = map(Data,0,65,13,155);

     if(Tankinhalt > 155) {
      Tankinhalt = 155;
     }
     if(Tankinhalt < 13) {
      Tankinhalt = 13;
     }
     analogWrite(ful,Tankinhalt);      
   }

    //Temperatur 
    else if (kind_of_data == 'T') {
     int Temperatur = map(Data,0,140,140,0);
     analogWrite(tmp,Temperatur);             
    }

  DisplayLeds();    
 }
}

void DisplayLeds(){  

 if (RpmSimTools < UnderShiftPoint *0.25){
  rpmLED=0;
 }

 if (RpmSimTools >= UnderShiftPoint *0.25){
  rpmLED=1; 
 }

 if (RpmSimTools >= UnderShiftPoint *0.5){
  rpmLED=3;  
 }

 if (RpmSimTools >= UnderShiftPoint *0.75){
  rpmLED=7;  
 }

 if (RpmSimTools >= UnderShiftPoint){
  rpmLED=15;  
 }

 if (RpmSimTools >= ShiftPoint -500){
  rpmLED=31;   
 }
 if (RpmSimTools >= ShiftPoint){
  rpmLED=63;   
 }

 if (RpmSimTools >= OverShiftPoint -500){
  rpmLED=127;
 } 

 if (RpmSimTools >= OverShiftPoint){
  rpmLED=255;
 }

digitalWrite(latchpin, HIGH);                       
SPI.transfer(GearLight);    // Ganganzeige
SPI.transfer(rpmLED);       // LED's Drehzahl
digitalWrite(latchpin, LOW); 
}   

void loop(){ 
CheckButtonPress();
CheckShiftLightAdj();
SetLimits();
ReadData(); 
}

Du solltest den Sketch und die Fehlermeldung in Codetags setzen (Der Button </> links oben. Das kannst Du nachträglich noch machen: den entsprechenden Text markieren und den Button drücken.

Hast Du die tone Library richtig installiert? Der Pfad spricht eher nicht dafür.

@MircroBahner!

Hey,

Könnten sie mir erklären wie man das Ganze installiert? denn ich habe davon garkein Plan xd

MFG

Das hat er doch.
Für Leute, die nicht so gut lesen können:

Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).
Dann ist er auch auf mobilen Geräten besser lesbar.
Das kannst Du auch noch nachträglich ändern.

Gruß Tommy

Luiqly:
wie man das Ganze installiert?

Was verstehtst Du unter 'das Ganze'. Das ist ein bisschen arg allgemein. Die IDE hast Du ja offensichtlich installiert. Bei der Lib kommt es darauf an, wo Du die her hast. In der Regel lassen sich Lib's als zip-Datei oder direkt über den Bibliotheksmanager isntallieren.
Am besten zeigst Du mal einen Link zur Lib.