Problem mit Library TM1637

Schönen guten Tag!
Ich bin Amateurastronom und ich habe ein Projekt gefunden, das ich sehr gerne nachbauen möchte. Es handelt sich um diese Astroclock:

Der Sketch befindet sich rechts unten auf der Seite.
Ich habe nun folgendes Problem: Ich finde keine Bibliothek für das TM1637 Display für diesen Sketch und bekomme jedesmal die Fehlermeldung
exit status 1
'class TM1637Display' has no member named 'showNumberDecEx'; did you mean 'showNumberDec'?

showNumberDecEx scheint in keiner der Libraries, die ich bis jetzt gefunden habe, vertreten zu sein.
Kann mir bitte jemand von euch helfen und mir einen Tipp geben, wo es klemmt?
Leider bin ich als Anfänger nicht so gut drauf. Die Komponenten habe ich schon alle hier und stehe jetzt leider an.
Gruß
Gerhard

das ist mit sehr großer Wahrscheinlichkeit die TM1637 von Avishay Orpaz Version 1.2.0.
Ganz normal über den Bibliotheksmanager installieren.
Link stell ich trotzdem rein:

edit:
wobei die Kombination MAX7219 zu Fuß und TM1637 mit Lib in einem Sketch zu verwenden ... schon auch "spannend" ist ...

Wenn du was gefunden hast, musst du erstmal rauskriegen, ob es was taugt.
Wenn da z.B. die dort verwendeten Libraries nicht existieren, bedeutet das, dass du noch nichts brauchbares zum "Blind Nachbauen" gefunden hast.

Als Anregung, sich damit auseinanderzusetzen, kann es ja dennoch gut sein.

bitte hier rein copieren

Danke.
Ich habe versucht, anstatt showNumberDecEx showNumberDec zu verwenden.
Das lässt sich compilieren.

#include <Adafruit_INA219.h>

#include <Arduino.h>
#include <TM1637Display.h>
#include <TinyGPS++.h>
#include <SoftwareSerial.h>

//display pins
#define CLK 8
#define DIO 9

//varibles to calculate LST
double M,Y,D,MN,H,S,A,B;
double LST_hours,LST_degrees;

//define GPS pins and The serial connection to the GPS device
static const int RXPin = 3, TXPin = 2;
static const uint32_t GPSBaud = 9600;
TinyGPSPlus gps;
SoftwareSerial ss(RXPin, TXPin);
int gpsOld = gps.time.minute();

//define 7-digit display pins
TM1637Display display(CLK, DIO);

//----------------------8x8 matrix display--------------------

int INTENSITYMIN = 0; // minimum brightness, valid range [0,15]
int INTENSITYMAX = 8; // maximum brightness, valid range [0,15]

int DIN_PIN = 4;      // data in pin
int CS_PIN = 5;       // load (CS) pin
int CLK_PIN = 6;      // clock pin

// MAX7219 registers
byte MAXREG_DECODEMODE = 0x09;
byte MAXREG_INTENSITY  = 0x0a;
byte MAXREG_SCANLIMIT  = 0x0b;
byte MAXREG_SHUTDOWN   = 0x0c;
byte MAXREG_DISPTEST   = 0x0f;

//----------------------Moon phases--------------------------
unsigned char fullMoon[] =
{
  B00111100,
  B01111110,
  B11111111,
  B11111111,
  B11111111,
  B11111111,
  B01111110,
  B00111100
};

const unsigned char newMoon[] =
{
  B00111100,
  B01000010,
  B10000001,
  B10000001,
  B10000001,
  B10000001,
  B01000010,
  B00111100
};

const unsigned char firstQuarter[] =
{
  B00001100,
  B00001110,
  B00001111,
  B00001111,
  B00001111,
  B00001111,
  B00001110,
  B00001100
};

const unsigned char thirdQuarter[] =
{
  B00110000,
  B01110000,
  B11110000,
  B11110000,
  B11110000,
  B11110000,
  B01110000,
  B00110000
};

const unsigned char waningCrescent[] =
{
  B00111100,
  B01110000,
  B11100000,
  B11100000,
  B11100000,
  B11100000,
  B01110000,
  B00111100
};

const unsigned char waxingCrescent[] =
{
  B00111100,
  B00001110,
  B00000111,
  B00000111,
  B00000111,
  B00000111,
  B00001110,
  B00111100
};

unsigned char waxingGibbous[] =
{
  B00111100,
  B01011110,
  B10111111,
  B10111111,
  B10111111,
  B10111111,
  B01011110,
  B00111100
};

unsigned char waningGibbous[] =
{
  B00111100,
  B01111010,
  B11111101,
  B11111101,
  B11111101,
  B11111101,
  B01111010,
  B00111100
};
int rHours = 0;
int rMinutes = 0;
//-----------------------------------------------------------
void setup() {
  Serial.begin(115200); //Serial communication
  ss.begin(GPSBaud); //Serial communication for GPS

  pinMode(DIN_PIN, OUTPUT);
  pinMode(CLK_PIN, OUTPUT);
  pinMode(CS_PIN, OUTPUT);

  // initialization of the MAX7219
  setRegistry(MAXREG_SCANLIMIT, 0x07);
  setRegistry(MAXREG_DECODEMODE, 0x00);  // using an led matrix (not digits)
  setRegistry(MAXREG_SHUTDOWN, 0x01);    // not in shutdown mode
  setRegistry(MAXREG_DISPTEST, 0x00);    // no display test
  setRegistry(MAXREG_INTENSITY, 0x0f & INTENSITYMAX);
 
  
}

void loop() {

  smartDelay(0);
  display.setBrightness(0x0f);
  
  if(gps.time.minute()!=gpsOld){
    LST_time();
    int rHours =(int) LST_hours;
    int rMinutes = ((int)floor((LST_hours-rHours)*60));
    display.clear(); //reset display
 
 display.showNumberDec(((rHours*100)+rMinutes),true,4,0);
    int moonAge = ConwayMoon(gps.date.year(),gps.date.month(),gps.date.day());
    drawMoon(moonAge); //draw the moon to 8x8 display
    gpsOld = gps.time.minute();
    
    //Serial print for debuging
    /*
    Serial.print("UTC: ");
    Serial.print(gps.time.hour());
    Serial.print(":");
    Serial.println(gps.time.minute());
    Serial.print("Sidereal: ");
    Serial.println(LST_hours);
    Serial.print("Moon age: ");
    Serial.println(moonAge);
    */  
    }
}

ist dein Problem gelöst?

Ich bin noch nicht sicher, ob dann die Anzeige auf dem 7-Segment Display korrekt ist.
Ich habe folgende Beschreibung entdeckt:

Zitat:
showNumberDecEx(Zahl, Punkte, leading_zeros, Länge, Position)

Mit dieser Funktion können Sie die Punkte des Displays steuern. Nur das zweite Argument unterscheidet sich von der showNumberDec-Funktion. Es ermöglicht Ihnen, die Punkte zwischen den einzelnen Ziffern zu setzen.

Gefunden habe ich es hier:
TM1637 4-stelliges 7-Segment-Arduino-Tutorial (3 Beispiele) (makerguides.com)
Ich denke, ich werd mal einen Versuchsaufbau machen, um zu gucken, wie in dem Fall mit meiner Änderung auf showNumberDec die Anzeige auf dem Display aussieht.

Warum, nutze besser die passende Bibliothek!

Im WWW steht viel, aber in den Dateien der Bibliothek steht, was diese Bibliothek tatsächlich tut.

TM1637Display.h

  //! Display a decimal number, with dot control
  //!
  //! Display the given argument as a decimal number. The dots between the digits (or colon)
  //! can be individually controlled.
  //!
  //! @param num The number to be shown
  //! @param dots Dot/Colon enable. The argument is a bitmask, with each bit corresponding to a dot
  //!        between the digits (or colon mark, as implemented by each module). i.e.
  //!        For displays with dots between each digit:
  //!        * 0.000 (0b10000000)
  //!        * 00.00 (0b01000000)
  //!        * 000.0 (0b00100000)
  //!        * 0.0.0.0 (0b11100000)
  //!        For displays with just a colon:
  //!        * 00:00 (0b01000000)
  //!        For displays with dots and colons colon:
  //!        * 0.0:0.0 (0b11100000)
  //! @param leading_zero When true, leading zeros are displayed. Otherwise unnecessary digits are
  //!        blank. NOTE: leading zero is not supported with negative numbers.
  //! @param length The number of digits to set. The user must ensure that the number to be shown
  //!        fits to the number of digits requested (for example, if two digits are to be displayed,
  //!        the number must be between 0 to 99)
  //! @param pos The position of the most significant digit (0 - leftmost, 3 - rightmost)
  void showNumberDecEx(int num, uint8_t dots = 0, bool leading_zero = false, uint8_t length = 4, uint8_t pos = 0);

Das sieht doch ganz gut beschrieben aus :slightly_smiling_face:

Nur wenn es dann immer noch Verständnisprobleme gäbe, würde ich das WWW befragen.

machbar ist beides, du entscheidest was ist dir lieber:
Sketch für bestehende Lib modifizieren, jedes Kommando lernen und prüfen ob richtig angewendet ist, und so...
oder passende zu geladenem Sketch Lib her holen.

Was hat Dir an den Antworten nebenan (mal abgesehen vom Ton) nicht gefallen?

Mikrocontroller.net? Die Art , wie man dort sofort heruntergemacht wird.

Vielen Dank für Eure nette Hilfe
Gruß
Gerhard

Na ja, "sofort" hast du dort einen github Link bekommen. Ähnlich wie hier.

Wenn du nun die richtige Lib zu deinem hackaday.io Projekt als Lösung markierst, hast du sogar einen Beitrag geleistet.

Ich muss nochmals lästig sein. Habe mich inzwischen rund zwei Tage mit oben genanntem Problem herumgeplagt und kann es einfach nicht verstehen, dass die Funktion showNumberDecEx nicht erkannt wird, obwohl sie sowohl im Header-als auch cpp-File der Bibliothek aufscheint, sprich, ich komme einfach nicht drauf.

//  Author: avishorp@gmail.com
//
//  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 St, Fifth Floor, Boston, MA  02110-1301  USA

#ifndef __TM1637DISPLAY__
#define __TM1637DISPLAY__

#include <inttypes.h>

#define SEG_A   0b00000001
#define SEG_B   0b00000010
#define SEG_C   0b00000100
#define SEG_D   0b00001000
#define SEG_E   0b00010000
#define SEG_F   0b00100000
#define SEG_G   0b01000000
#define SEG_DP  0b10000000

#define DEFAULT_BIT_DELAY  100

class TM1637Display {

public:
  //! Initialize a TM1637Display object, setting the clock and
  //! data pins.
  //!
  //! @param pinClk - The number of the digital pin connected to the clock pin of the module
  //! @param pinDIO - The number of the digital pin connected to the DIO pin of the module
  //! @param bitDelay - The delay, in microseconds, between bit transition on the serial
  //!                   bus connected to the display
  TM1637Display(uint8_t pinClk, uint8_t pinDIO, unsigned int bitDelay = DEFAULT_BIT_DELAY);

  //! Sets the brightness of the display.
  //!
  //! The setting takes effect when a command is given to change the data being
  //! displayed.
  //!
  //! @param brightness A number from 0 (lowes brightness) to 7 (highest brightness)
  //! @param on Turn display on or off
  void setBrightness(uint8_t brightness, bool on = true);

  //! Display arbitrary data on the module
  //!
  //! This function receives raw segment values as input and displays them. The segment data
  //! is given as a byte array, each byte corresponding to a single digit. Within each byte,
  //! bit 0 is segment A, bit 1 is segment B etc.
  //! The function may either set the entire display or any desirable part on its own. The first
  //! digit is given by the @ref pos argument with 0 being the leftmost digit. The @ref length
  //! argument is the number of digits to be set. Other digits are not affected.
  //!
  //! @param segments An array of size @ref length containing the raw segment values
  //! @param length The number of digits to be modified
  //! @param pos The position from which to start the modification (0 - leftmost, 3 - rightmost)
  void setSegments(const uint8_t segments[], uint8_t length = 4, uint8_t pos = 0);

  //! Clear the display
  void clear();

  //! Display a decimal number
  //!
  //! Display the given argument as a decimal number.
  //!
  //! @param num The number to be shown
  //! @param leading_zero When true, leading zeros are displayed. Otherwise unnecessary digits are
  //!        blank. NOTE: leading zero is not supported with negative numbers.
  //! @param length The number of digits to set. The user must ensure that the number to be shown
  //!        fits to the number of digits requested (for example, if two digits are to be displayed,
  //!        the number must be between 0 to 99)
  //! @param pos The position of the most significant digit (0 - leftmost, 3 - rightmost)
  void showNumberDec(int num, bool leading_zero = false, uint8_t length = 4, uint8_t pos = 0);

  //! Display a decimal number, with dot control
  //!
  //! Display the given argument as a decimal number. The dots between the digits (or colon)
  //! can be individually controlled.
  //!
  //! @param num The number to be shown
  //! @param dots Dot/Colon enable. The argument is a bitmask, with each bit corresponding to a dot
  //!        between the digits (or colon mark, as implemented by each module). i.e.
  //!        For displays with dots between each digit:
  //!        * 0.000 (0b10000000)
  //!        * 00.00 (0b01000000)
  //!        * 000.0 (0b00100000)
  //!        * 0.0.0.0 (0b11100000)
  //!        For displays with just a colon:
  //!        * 00:00 (0b01000000)
  //!        For displays with dots and colons colon:
  //!        * 0.0:0.0 (0b11100000)
  //! @param leading_zero When true, leading zeros are displayed. Otherwise unnecessary digits are
  //!        blank. NOTE: leading zero is not supported with negative numbers.
  //! @param length The number of digits to set. The user must ensure that the number to be shown
  //!        fits to the number of digits requested (for example, if two digits are to be displayed,
  //!        the number must be between 0 to 99)
  //! @param pos The position of the most significant digit (0 - leftmost, 3 - rightmost)
  void showNumberDecEx(int num, uint8_t dots = 0, bool leading_zero = false, uint8_t length = 4, uint8_t pos = 0);

  //! Display a hexadecimal number, with dot control
  //!
  //! Display the given argument as a hexadecimal number. The dots between the digits (or colon)
  //! can be individually controlled.
  //!
  //! @param num The number to be shown
  //! @param dots Dot/Colon enable. The argument is a bitmask, with each bit corresponding to a dot
  //!        between the digits (or colon mark, as implemented by each module). i.e.
  //!        For displays with dots between each digit:
  //!        * 0.000 (0b10000000)
  //!        * 00.00 (0b01000000)
  //!        * 000.0 (0b00100000)
  //!        * 0.0.0.0 (0b11100000)
  //!        For displays with just a colon:
  //!        * 00:00 (0b01000000)
  //!        For displays with dots and colons colon:
  //!        * 0.0:0.0 (0b11100000)
  //! @param leading_zero When true, leading zeros are displayed. Otherwise unnecessary digits are
  //!        blank
  //! @param length The number of digits to set. The user must ensure that the number to be shown
  //!        fits to the number of digits requested (for example, if two digits are to be displayed,
  //!        the number must be between 0 to 99)
  //! @param pos The position of the most significant digit (0 - leftmost, 3 - rightmost)
  void showNumberHexEx(uint16_t num, uint8_t dots = 0, bool leading_zero = false, uint8_t length = 4, uint8_t pos = 0);

  //! Translate a single digit into 7 segment code
  //!
  //! The method accepts a number between 0 - 15 and converts it to the
  //! code required to display the number on a 7 segment display.
  //! Numbers between 10-15 are converted to hexadecimal digits (A-F)
  //!
  //! @param digit A number between 0 to 15
  //! @return A code representing the 7 segment image of the digit (LSB - segment A;
  //!         bit 6 - segment G; bit 7 - always zero)
  static uint8_t encodeDigit(uint8_t digit);

protected:
   void bitDelay();

   void start();

   void stop();

   bool writeByte(uint8_t b);

   void showDots(uint8_t dots, uint8_t* digits);
   
   void showNumberBaseEx(int8_t base, uint16_t num, uint8_t dots = 0, bool leading_zero = false, uint8_t length = 4, uint8_t pos = 0);


private:
	uint8_t m_pinClk;
	uint8_t m_pinDIO;
	uint8_t m_brightness;
	unsigned int m_bitDelay;
};

#endif // __TM1637DISPLAY__


Zum Inhalt springen

Anmelden

Anmelden

Avishorp/TM1637 Öffentlich

Meister

TM1637/TM1637Anzeige.cpp

Zur Datei

@avishorp

avishorp Bugfix: Punkte/Doppelpunkt wird nicht angezeigt #65

...

Letzter Commit 9486982 on Jun 27, 2020 Geschichte

4 Mitwirkende@avishorp@rolkwo@mcauser@Kasoo

258 Zeilen (215 sloc) 5.48 KB

Roh Schuld

Nämpf Autor: avishorp@gmail.com
//
Nämpf Diese Bibliothek ist freie Software; Sie können es weitergeben und/oder
Es unter den Bedingungen der GNU Lesser General Public zu modifizieren
Nämpf Lizenz, wie von der Free Software Foundation veröffentlicht; entweder
Version 2.1 der Lizenz oder (nach Ihrer Wahl) eine spätere Version.
//
Nämpf Diese Bibliothek wird in der Hoffnung verteilt, dass sie nützlich sein wird,
aber OHNE GEWÄHRLEISTUNG; ohne die stillschweigende Gewährleistung von
Nämpf MARKTGÄNGIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Siehe GNU
Nämpf Lesser General Public License für weitere Details.
//
Nämpf Sie sollten ein Exemplar der GNU Lesser General Public erhalten haben
Nämpf Lizenz zusammen mit dieser Bibliothek; Wenn nicht, schreiben Sie in die Freie Software
Nämpf Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

vextern "C" {
#Fügen Sie <stdlib.h> hinzu
#<string.h> einschließen
#<inttypes.h> einschließen
}

#enthalten <TM1637Display.h>
#Dazu gehören <Arduino.h>

#Definieren Sie TM1637_I2C_COMM1 0x40
#Definieren Sie TM1637_I2C_COMM2 0xC0
#Definieren Sie TM1637_I2C_COMM3 0x80

//
Nämpf Ein
// ---
Nämpf F B
// -G-
Nämpf E C
// ---
Nämpf D
const uint8_t digitToSegment[] = {
Nämpf XGFEDCBA
0b00111111, // 0
0b00000110, // 1
0b01011011, // 2
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111101, // 6
0b00000111, // 7
0b01111111, // 8
0b01101111, // 9
0b01110111, // A
0b01111100, // b
0b00111001, // C
0b01011110, // d
0b01111001, // E
0b01110001 // F
};

static const uint8_t minusSegments = 0b01000000;

TM1637Display::TM1637Display(uint8_t pinClk, uint8_t pinDIO, unsigned int bitDelay)
{
Nämpf Kopieren Sie die PIN-Nummern
m_pinClk = pinClk;
m_pinDIO = pinDIO;
m_bitDelay = bitDelay;

Nämpf Legen Sie die Pin-Richtung und den Standardwert fest.
Nämpf Beide Pins sind als Eingänge eingestellt, so dass die Pull-up-Widerstände sie nach oben ziehen können
pinMode(m_pinClk, INPUT);
pinMode(m_pinDIO,INPUT);
digitalWrite(m_pinClk, LOW);
digitalWrite(m_pinDIO, LOW);
}

void TM1637Display::setBrightness(uint8_t Helligkeit, bool on)
{
m_brightness = (Helligkeit & 0x7) (Auf? 0x08 : 0x00);
}

void TM1637Display::setSegments(const uint8_t Segmente[], uint8_t Länge, uint8_t pos)
{
Nämpf COMM1 schreiben
anfangen();
writeByte(TM1637_I2C_COMM1);
aufhören();

Nämpf COMM2 + Adresse der ersten Ziffer schreiben
anfangen();
writeByte(TM1637_I2C_COMM2 + (pos & 0x03));

Nämpf Schreiben Sie die Datenbytes
für (uint8_t k=0; k < Länge; k++)
writeByte(segmente[k]);

aufhören();

Nämpf COMM3 + Helligkeit schreiben
anfangen();
writeByte(TM1637_I2C_COMM3 + (m_brightness & 0x0f));
aufhören();
}

void TM1637Anzeige::clear()
{
uint8_t data[] = { 0, 0, 0, 0 };
setSegments(data);
}

void TM1637Display::showNumberDec(int num, bool leading_zero, uint8_t length, uint8_t pos)
{
showNumberDecEx(num, 0, leading_zero, Länge, pos);
}

void TM1637Display::showNumberDecEx(int num, uint8_t Punkte, bool leading_zero,
uint8_t Länge, uint8_t pos)
{
showNumberBaseEx(num < 0? -10 : 10, num < 0? -num : num, Punkte, leading_zero, Länge, pos);
}

void TM1637Display::showNumberHexEx(uint16_t num, uint8_t Punkte, bool leading_zero,
uint8_t Länge, uint8_t pos)
{
showNumberBaseEx(16, Zahl, Punkte, leading_zero, Länge, Pos);
}

void TM1637Display::showNumberBaseEx(int8_t Basis, uint16_t num, uint8_t Punkte, bool leading_zero,
uint8_t Länge, uint8_t pos)
{
bool negativ = falsch;
if (Basis < 0) {
Basis = -Basis;
negativ = wahr;
}

uint8_t Ziffern[4];

if (num == 0 && !leading_zero) {
Nämpf Einzelfall - gesondert aufpassen
for(uint8_t i = 0; i < (length-1); i++)
Ziffern[i] = 0;
digits[length-1] = encodeDigit(0);
}
oder {
//uint8_t i = Länge-1;
//if (negativ) {
// // Negative Zahl, Minuszeichen anzeigen
// digits[i] = minusSegments;
// i--;
//}

for(int i = Länge-1; i >= 0; --i)
{
uint8_t Ziffer = Anzahl % Basis;

if (digit == 0 & & num == 0 && leading_zero == false)
Nämpf Führende Null ist leer
Ziffern[i] = 0;
oder
digits[i] = encodeDigit(digit);

if (Ziffer == 0 & & num == 0 && negativ) {
Ziffern[i] = MinusSegmente;
negativ = falsch;
}

num /= Basis;
}
}

if(Punkte != 0)
{
showDots(Punkte, Ziffern);
}

setSegments(Ziffern, Länge, pos);
}

void TM1637Display::bitDelay()
{
VerzögerungMikrosekunden(m_bitDelay);
}

void TM1637Anzeige::start()
{
pinMode(m_pinDIO, OUTPUT);
bitVerzögerung();
}

void TM1637Anzeige::stop()
{
pinMode(m_pinDIO, OUTPUT);
bitVerzögerung();
pinMode(m_pinClk, INPUT);
bitVerzögerung();
pinMode(m_pinDIO, INPUT);
bitVerzögerung();
}

bool TM1637Display::writeByte(uint8_t b)
{
uint8_t data = b;

// 8 Data Bits
for(uint8_t i = 0; i < 8; i++) {
// CLK low
pinMode(m_pinClk, OUTPUT);
bitDelay();

// Set data bit
if (data & 0x01)
pinMode(m_pinDIO, INPUT);
else
pinMode(m_pinDIO, OUTPUT);

bitDelay();

// CLK high
pinMode(m_pinClk, INPUT);
bitDelay();
data = data >> 1;
}

// Wait for acknowledge
// CLK to zero
pinMode(m_pinClk, OUTPUT);
pinMode(m_pinDIO, INPUT);
bitDelay();

// CLK to high
pinMode(m_pinClk, INPUT);
bitDelay();
uint8_t ack = digitalRead(m_pinDIO);
if (ack == 0)
pinMode(m_pinDIO, OUTPUT);

bitDelay();
pinMode(m_pinClk, OUTPUT);
bitDelay();

return ack;
}

void TM1637Display::showDots(uint8_t dots, uint8_t* digits)
{
for(int i = 0; i < 4; ++i)
{
digits[i] = (dots & 0x80);
dots <<= 1;
}
}

uint8_t TM1637Display::encodeDigit(uint8_t digit)
{
return digitToSegment[digit & 0x0f];
}

Ich habe sämtliche Libraries durchgetestet, bekomme aber jedesmal die Meldung:

Compilation error: 'class TM1637Display' has no member named 'showNumberDecEx'; did you mean 'showNumberDec'?

Ich komme einfach auf die Ursache net drauf! Mit der Funktion 'showNumberDec' lässt sich das oben erwähnte Astro-Uhren-Programm problemlos compilieren, aber die Funktion showNumberDecEx, die ich gerne verwenden möchte, ist nicht bekannt.
Kurz gesagt, ich renne im Kreis, obwohl ich wirklich angestrengt versucht habe, das Problem in den Griff zu bekommen.
Die Anzeige des Doppelpunktes auf dem TM1637 ist ja nicht unbedingt notwendig aber sie sollte schon sein und showNumberDec kann das ja nicht.

stell bitte mal in den Einstellungen auf Compiler Warnings all und poste die completten Compiler Ausgaben in Code Tags

Danke

Hier nun die Compiler-Fehlermeldungen, sobald ich showNumberDecEx verwende anstatt nur showNumberDec:

C:\ARDUINO PROGRAMME\ASTROCLOCK\sketch_may13a\sketch_may13a.ino: In function 'void loop()':
C:\ARDUINO PROGRAMME\ASTROCLOCK\sketch_may13a\sketch_may13a.ino:169:13: error: 'class TM1637Display' has no member named 'showNumberDecEx'; did you mean 'showNumberDec'?
     display.showNumberDecEx(((rHours*100)+rMinutes),0b01000000, true,4,0);
             ^~~~~~~~~~~~~~~
             showNumberDec
C:\ARDUINO PROGRAMME\ASTROCLOCK\sketch_may13a\sketch_may13a.ino: In function 'int ConwayMoon(int, int, int)':
C:\ARDUINO PROGRAMME\ASTROCLOCK\sketch_may13a\sketch_may13a.ino:245:7: warning: unused variable 'yy' [-Wunused-variable]
   int yy;
       ^~
C:\ARDUINO PROGRAMME\ASTROCLOCK\sketch_may13a\sketch_may13a.ino:246:7: warning: unused variable 'd' [-Wunused-variable]
   int d;
       ^
C:\ARDUINO PROGRAMME\ASTROCLOCK\sketch_may13a\sketch_may13a.ino: In function 'int drawMoon(int)':
C:\ARDUINO PROGRAMME\ASTROCLOCK\sketch_may13a\sketch_may13a.ino:319:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
Mehrere Bibliotheken wurden für "TM1637Display.h" gefunden
  Benutzt: C:\ARDUINO PROGRAMME\libraries\TM1637Display-master
  Nicht benutzt: C:\ARDUINO PROGRAMME\libraries\TM1637-1.2.0
  Nicht benutzt: C:\ARDUINO PROGRAMME\libraries\TM1637-master
exit status 1

Compilation error: 'class TM1637Display' has no member named 'showNumberDecEx'; did you mean 'showNumberDec'?

Gib uns mal einen Link zur TM1637Display-Lib.
Diese hier z.B. hat die Methode.

Gruß Tommy

Es gibt doch mit Hilfe der Anzeige aller Compiler-Fehlermeldungen auch bei der Verwendung von shownumberDec eine Menge an zusätzlichen Warnmeldungen:

C:\ARDUINO PROGRAMME\ASTROCLOCK\sketch_may13a\sketch_may13a.ino: In function 'int ConwayMoon(int, int, int)':
C:\ARDUINO PROGRAMME\ASTROCLOCK\sketch_may13a\sketch_may13a.ino:245:7: warning: unused variable 'yy' [-Wunused-variable]
   int yy;
       ^~
C:\ARDUINO PROGRAMME\ASTROCLOCK\sketch_may13a\sketch_may13a.ino:246:7: warning: unused variable 'd' [-Wunused-variable]
   int d;
       ^
C:\ARDUINO PROGRAMME\ASTROCLOCK\sketch_may13a\sketch_may13a.ino: In function 'int drawMoon(int)':
C:\ARDUINO PROGRAMME\ASTROCLOCK\sketch_may13a\sketch_may13a.ino:319:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
c:\ARDUINO PROGRAMME\libraries\TinyGPSPlus-master\src\TinyGPS++.cpp: In member function 'bool TinyGPSPlus::encode(char)':
c:\ARDUINO PROGRAMME\libraries\TinyGPSPlus-master\src\TinyGPS++.cpp:63:12: warning: this statement may fall through [-Wimplicit-fallthrough=]
     parity ^= (uint8_t)c;
     ~~~~~~~^~~~~~~~~~~~~
c:\ARDUINO PROGRAMME\libraries\TinyGPSPlus-master\src\TinyGPS++.cpp:64:3: note: here
   case '\r':
   ^~~~
Der Sketch verwendet 9644 Bytes (31%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.
Globale Variablen verwenden 633 Bytes (30%) des dynamischen Speichers, 1415 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.

Du musst zwischen error = Fehler und warning = Warnung unterscheiden.

Gruß Tommy

lösch mal alle drei Libraries.
installiere noch mal die TM1637 Version 1.2.0 MIT DEM BIBLIOTHEKSMANAGER.