[Anfänger] Verständnisfrage RTC-Sketch

Hallo Leute,

wieder einmal habe ich Verständnisfragen zu unten stehendem Code. Es ist der original Beispielsketch "DS1307RTC Read Test". Im Abschitt void loop() befindet sich gleich oben "tmElements_t tm;".
Und da waren sie, meine zwei Probleme:

1.) Ist das eine (lokale) Variable oder etwas Anderes? Ich vermute mal es ist eine Variable und es wird die Funktion (?) "tmElements_t" in "tm" "umbenannt", so das man statt "tmElements_t" nur noch "tm" aufrufen muß und der Code so übersichtlicher ist.

2.) Was ist "tmElements_t" für eine Funktion?

#include <Wire.h>
#include <Time.h>
#include <DS1307RTC.h>

void setup() {
  Serial.begin(9600);
  while (!Serial) ; // wait for serial
  delay(200);
  Serial.println("DS1307RTC Read Test");
  Serial.println("-------------------");
}

void loop() {
  tmElements_t tm;

  if (RTC.read(tm)) {
    Serial.print("Ok, Time = ");
    print2digits(tm.Hour);
    Serial.write(':');
    print2digits(tm.Minute);
    Serial.write(':');
    print2digits(tm.Second);
    Serial.print(", Date (D/M/Y) = ");
    Serial.print(tm.Day);
    Serial.write('/');
    Serial.print(tm.Month);
    Serial.write('/');
    Serial.print(tmYearToCalendar(tm.Year));
    Serial.println();
  } else {
    if (RTC.chipPresent()) {
      Serial.println("The DS1307 is stopped.  Please run the SetTime");
      Serial.println("example to initialize the time and begin running.");
      Serial.println();
    } else {
      Serial.println("DS1307 read error!  Please check the circuitry.");
      Serial.println();
    }
    delay(9000);
  }
  delay(1000);
}

void print2digits(int number) {
  if (number >= 0 && number < 10) {
    Serial.write('0');
  }
  Serial.print(number);
}

tmElements_t ist eine Struktur:

tm ist eine Instanz davon:

Da brauchst du dir auch nur mal den Quellcode anzusehen:

struct  
{ 
  uint8_t Second; 
  uint8_t Minute; 
  uint8_t Hour; 
  uint8_t Wday;   // day of week, sunday is day 1
  uint8_t Day;
  uint8_t Month; 
  uint8_t Year;   // offset from 1970; 
} tmElements_t;

Und was "Funktion" bedeutet solltes du auch mal nachschlagen

@TO: Schau Dir mal die TimeLib an.

Gruß Tommy

Danke für die Infos.

Bin halt so ein blutiger Anfänger, ich wußte nicht mal richtig wo ich nachschauen sollte. Google hat in diesem Fall für mich unverständliche Ergebnisse geliefert.
Seht mir bitte nach das ich Termini, wie "Funktion" usw. manchmal nicht richtig verwende...

cu Matthias

Es stellt sich die Frage, was Du eigentlich machen willst. Wenn Du beispielsweise nur Stunde und Minute benötigst geht das einfacher ohne Zeit-Bibliotheken. Beispiel.