Error: 'class...'

Hallo zusammen

Ich versuche gerade ein Display anzusteuern, aber irgendwie klappt das nicht so recht. Den Code dazu findet ihr gleich angefügt. Den fehler, welchen ich erhalte, wenn ich den Arduino Sketch hochladen will, ist folgender:
error: ‘class PCD8544’ has no member named ‘setCursor’
lcd.setCurser
error: ‘class PCD8544’ has no member named ‘begin’
lcd.begin
etc. Hier die ganzen fehler, die der Compiler mir ausspukt:

sketch_jul15a:114: error: no matching function for call to 'PCD8544::PCD8544()'

static PCD8544 lcd;

               ^

C:\Users\Kecks\AppData\Local\Temp\arduino_modified_sketch_90137\sketch_jul15a.ino:114:16: note: candidates are:

C:\Users\Kecks\AppData\Local\Temp\arduino_modified_sketch_90137\sketch_jul15a.ino:60:3: note: PCD8544::PCD8544(int8_t, int8_t, int8_t, int8_t)

  PCD8544(int8_t SCLK, int8_t DIN, int8_t DC, int8_t RST);

  ^

C:\Users\Kecks\AppData\Local\Temp\arduino_modified_sketch_90137\sketch_jul15a.ino:60:3: note:   candidate expects 4 arguments, 0 provided

C:\Users\Kecks\AppData\Local\Temp\arduino_modified_sketch_90137\sketch_jul15a.ino:59:3: note: PCD8544::PCD8544(int8_t, int8_t, int8_t, int8_t, int8_t)

  PCD8544(int8_t SCLK, int8_t DIN, int8_t DC, int8_t CS=0, int8_t RST=0); // allow 3, 4 or 5 pin LCD control

  ^

C:\Users\Kecks\AppData\Local\Temp\arduino_modified_sketch_90137\sketch_jul15a.ino:59:3: note:   candidate expects 5 arguments, 0 provided

C:\Users\Kecks\AppData\Local\Temp\arduino_modified_sketch_90137\sketch_jul15a.ino:57:7: note: constexpr PCD8544::PCD8544(const PCD8544&)

class PCD8544 : public Print {

      ^

C:\Users\Kecks\AppData\Local\Temp\arduino_modified_sketch_90137\sketch_jul15a.ino:57:7: note:   candidate expects 1 argument, 0 provided

C:\Users\Kecks\AppData\Local\Temp\arduino_modified_sketch_90137\sketch_jul15a.ino:57:7: note: constexpr PCD8544::PCD8544(PCD8544&&)

C:\Users\Kecks\AppData\Local\Temp\arduino_modified_sketch_90137\sketch_jul15a.ino:57:7: note:   candidate expects 1 argument, 0 provided

C:\Users\Kecks\AppData\Local\Temp\arduino_modified_sketch_90137\sketch_jul15a.ino: In function 'void setup()':

sketch_jul15a:138: error: 'class PCD8544' has no member named 'begin'

  lcd.begin(84, 48);

      ^

C:\Users\Kecks\AppData\Local\Temp\arduino_modified_sketch_90137\sketch_jul15a.ino: In function 'void loop()':

sketch_jul15a:177: error: 'class PCD8544' has no member named 'setCurser'

  lcd.setCurser(0, 1);

      ^

sketch_jul15a:179: error: 'class PCD8544' has no member named 'setCurser'

  lcd.setCurser(20, 1);

      ^

sketch_jul15a:181: error: 'class PCD8544' has no member named 'setCurser'

  lcd.setCurser(50, 1);

      ^

exit status 1
no matching function for call to 'PCD8544::PCD8544()'

Und hier kommt mein Code: Auch wenn ich #include <PCD8544.h> auskommentiere, kommen dieselben Fehler. Oder auch, wenn ich nur #include <PCD8544.h> verwende.

#include <PCD8544.h>


#ifndef PCD8544_H 
#define PCD8544_H
/*
$Id:$
PCD8544 LCD library!
Copyright (C) 2010 Limor Fried, Adafruit Industries
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
*/

#if defined(ARDUINO) && ARDUINO >= 100
 #include "Arduino.h"
#else
 #include "WProgram.h"
#endif

#define BLACK 1
#define WHITE 0

#define LCDWIDTH 84
#define LCDHEIGHT 48

#define PCD8544_POWERDOWN 0x04
#define PCD8544_ENTRYMODE 0x02
#define PCD8544_EXTENDEDINSTRUCTION 0x01

#define PCD8544_DISPLAYBLANK 0x0
#define PCD8544_DISPLAYNORMAL 0x4
#define PCD8544_DISPLAYALLON 0x1
#define PCD8544_DISPLAYINVERTED 0x5

// H = 0
#define PCD8544_FUNCTIONSET 0x20
#define PCD8544_DISPLAYCONTROL 0x08
#define PCD8544_SETYADDR 0x40
#define PCD8544_SETXADDR 0x80

// H = 1
#define PCD8544_SETTEMP 0x04
#define PCD8544_SETBIAS 0x10
#define PCD8544_SETVOP 0x80

#define swap(a, b) { uint8_t t = a; a = b; b = t; }

class PCD8544 : public Print {
public:
 PCD8544(int8_t SCLK, int8_t DIN, int8_t DC, int8_t CS=0, int8_t RST=0); // allow 3, 4 or 5 pin LCD control
 PCD8544(int8_t SCLK, int8_t DIN, int8_t DC, int8_t RST);

 void init(uint8_t contrast);
 void init(void);
 
 void command(uint8_t c);
 void data(uint8_t c);
 
 void setContrast(uint8_t val);
 void clearDisplay(void);
 void clear();
 void display();
 void displayBuffer();
 
 void setPixel(uint8_t x, uint8_t y, uint8_t color);
 uint8_t getPixel(uint8_t x, uint8_t y);
 void fillcircle(uint8_t x0, uint8_t y0, uint8_t r, 
     uint8_t color);
 void drawcircle(uint8_t x0, uint8_t y0, uint8_t r, 
     uint8_t color);
 void drawrect(uint8_t x, uint8_t y, uint8_t w, uint8_t h, 
   uint8_t color);
 void fillrect(uint8_t x, uint8_t y, uint8_t w, uint8_t h, 
   uint8_t color);
 void drawline(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, 
   uint8_t color);
 
 void setCursor(uint8_t x, uint8_t y);
 void setTextSize(uint8_t s);
 void setTextColor(uint8_t c);
 #if defined(ARDUINO) && ARDUINO >= 100
   size_t write(uint8_t c);
 #else
   void write(uint8_t c);
 #endif

 void drawchar(uint8_t x, uint8_t line, char c);
 void drawstring(uint8_t x, uint8_t line, char *c);
 void drawstring_P(uint8_t x, uint8_t line, const char *c);
 void drawbitmap(uint8_t x, uint8_t y, 
     const uint8_t *bitmap, uint8_t w, uint8_t h,
     uint8_t color);

private:
 uint8_t cursor_x, cursor_y, textsize, textcolor;
 int8_t _din, _sclk, _dc, _rst, _cs;
 void spiwrite(uint8_t c);

 void my_setpixel(uint8_t x, uint8_t y, uint8_t color);
};

#endif


static PCD8544 lcd;

int irqPin = 2;

float umdreh;
float anz;
float rpm;
float spd;
float dist;

unsigned long timeold;

float WHEELCIRC = 2.0736; //(2* PI*0.3302 in m)

void setup()
{
 Serial.begin(9600);

 //Interrupt Pullup
 digitalWrite(irqPin, HIGH);
 //Interrupt
 attachInterrupt(0, count_umd, FALLING);

 //Display:
 lcd.begin(84, 48);
 lcd.setCursor(0, 0);
 lcd.print("BIKESPEED V1");

 //Daten
 umdreh = 0;
 rpm = 0;
 timeold = 0;
 dist=0;
}

void loop()
{
 lcd.setCursor(0, 0);
 lcd.print("BIKESPEED V1");
 if (umdreh >=3)
 {
   //zuerst die Berechnungen:
   int timediff=millis()-timeold;
   rpm = anz/timediff;

   //Die Geschwindigkeit:
   spd = (rpm *WHEELCIRC * 3600);

   //Distanz:
   dist = dist + (anz * WHEELCIRC);

   //Ausgabe des Serial-Monitors:
   Serial.print("Speed: ");
   Serial.print(spd,1);
   Serial.println(" km/h");
   Serial.print("Distance: ");
   Serial.print(dist/1000,3);
   Serial.println(" m");
   timeold = millis();
   umdreh = 0;
 }

 //Ausgabe am Display:
 lcd.setCurser(0, 1);
 lcd.print("G: ");
 lcd.setCurser(20, 1);
 lcd.print(spd,1);
 lcd.setCurser(50, 1);
 lcd.print("(km/h)");
 lcd.setCursor(0, 2);
 lcd.print("D: ");
 lcd.print(dist/1000,3);
 lcd.setCursor(50, 2);
 lcd.print("(km/h)");
 }

 void count_umd()
 {
   umdreh=umdreh+1;
   anz=umdreh;
 }

Verwendetes Arduino: MKR1000
Verwendetes Display: Nokia5110 ()
Link zur PCD8544.h:

Schon mal ganz herzlichen Dank.
=> Ich möchte eine Geschwindigkeitsanzeige für mein Fahrrad machen :slight_smile:

Dein Sketch ist fast nicht zu lesen. In einem Mobilgerät überhaupt nicht.
Setze den bitte in Code-Tags.

Verwende dazu die Schaltfläche </> oben links im Editorfenster.
Das kannst du auch nachträglich machen.
Dazu den Sketch markieren und die Schaltfläche klicken.

Damit wird dieser für alle besser lesbar.

Das mache bitte auch mit der Fehlermeldung.

Und poste bitte auch einen Hyperlink (keine URL) von deinem Display, damit wir auch sehen, welches Display du verwendest.

Du schreibst in deinem Sketch

#include <PCD8544.h>

hast, dann aber offensichtlich den Code der .h-Datei in deinen Sketch kopiert. Das macht keinen Sinn und ist falsch.
Hast Du die Library PCD8544 überhaupt richtig installiert?

static PCD8544 lcd;Der Konstruktor der Lib erfordert auch Parameter, so kann das nicht funktionieren.
Poste auch den Link zur Lib die Du einsetzt. Für den PCD8544 gibt es offensichtlich mehrere.

Ich habe meinen Post angepasst. Danke für die Inputs

Änder doch mal Dein lcd.setCurser => lcd.setCursor

und ein lcd.begin scheint es nach dem Beispiel auch nicht zu geben, nur ein lcd.init.

HotSystems: Und poste bitte auch einen Hyperlink (keine URL) von deinem Display, damit wir auch sehen, welches Display du verwendest.

Wie poste ich einen Hyperlink?

In dem Du im Editor auf das Kettensymbol mit dem Plus (oben in der Mitte) klickst und die URL dort einfügst!

Gruß SG

Keks92: Ich habe meinen Post angepasst. Danke für die Inputs

Und was ist mit meinen Fragen zur Lib? Hast Du die ordentlich installiert? Deine URL zeigt nur die .h-Datei, das ist aber nicht die ganze Lib. Und aus deinem Sketch muss die .h auch noch raus, nur das #include bleibt. Warum verwendest Du überhaupt diese uralte Lib, und nicht das Original von Adafriut? Ich bin auch nicht sicher ob die auf dem MKR1000 fehlerfrei läuft. Für den SAMD sind in der Adafruit-Lib offensichtlich Anpassungen vorgenommen worden, die in der von dir verwendeten Lib sicher noch nicht enthalten sind.

P.S. Wenn Du den Sketch angepasst hast, poste ihn bitte neu und ändere nicht den Eingangspost.

Hallo zusammen

Mit der lib von Adafruit hats geklappt! Herzlichen Dank für den Tip :)