Arduino Anfängerproblem - class

Gast #5704657
Lesenswert?
• ▲
▼
Hallo,

ganz sicher ein absolutes Anfängerproblem - das bin ich einer :-)

Ich baue eine Uhr aus einem Arduino mit RTC-Modul. Nun möchte ich, 
sofern ein bestimmtes Datum ist, den Geburtstag von Personen anzeigen 
lassen.

Ich habe eine Klasse mit den Geb.-Tagen angelegt; die funktioniert 
soweit auch. Sie heißt "Person" und hat drei Einträge;
int day,
int month,
String name.
z.B.: Person Julian(9,6,"Julian");

Nun möchte ich die Geburtstage (aus der Klasse) mit dem aktuellen Datum 
aus dem rtc-Modul vergleichen und so die Geburtstage "erkennen": Ich 
dachte das geht so...

        if(tm.Day == day() && tm.Month == month()){

// Ausgabe Blablabla; wie das geht, weiß ich auch noch nicht. Aktuell 
habe ich aber Probleme mit dem oberen Thema "erkennen/vergleichen"

        }

Ich Check es irgendwie nicht, kann mir bitte jemand helfen? Wäre klasse.
Gast #5704675
Lesenswert?
• ▲
▼
Julian schrieb:
> Nun möchte ich die Geburtstage (aus der Klasse)

Wenn du eine Personenklasse hast, dann erzeugst du davon Objekte. Und du 
musst dann wissen wieviele Objekte du erzeugt hast oder? Und dann jedes 
Objet (Geburtstag) mit aktuellem Datum vergleichen.

Ist es nicht besser so etwas wie eine Liste zu benutzen?
Gast #5704691
Lesenswert?
• ▲
▼
es passiert einfach nichts bei der Abfrage von mir. Er geht nicht in die 
Schleife rein.

was ich will ist;
--> wenn das Datum (aus dem RTC-Modul) gleich ist, wie eines aus meiner 
Klasse, dass das erkannt wird.
Gast #5704705
Lesenswert?
• ▲
▼
> Ich habe eine Klasse mit den Geb.-Tagen angelegt; die funktioniert
> soweit auch. Sie heißt "Person" und hat drei Einträge;
> int day,
> int month,
> String name.
> z.B.: Person Julian(9,6,"Julian");
>
> Nun möchte ich die Geburtstage (aus der Klasse) mit dem aktuellen Datum
> aus dem rtc-Modul vergleichen und so die Geburtstage "erkennen": Ich
> dachte das geht so...
>
>         if(tm.Day == day() && tm.Month == month()){
>
> // Ausgabe Blablabla; wie das geht, weiß ich auch noch nicht. Aktuell
> habe ich aber Probleme mit dem oberen Thema "erkennen/vergleichen"
>
>         }
>
> Ich Check es irgendwie nicht, kann mir bitte jemand helfen?

Suchst du vielleicht

if((tm.Day == Julian.day) && (tm.Month == Julian.month)){
//Gratulation an Julian schlumpfen
}


> Wäre klasse.
*class    ;-)
Gast #5704709
Lesenswert?
• ▲
▼
// Klasse Person und Geburstag (Tag und Monat)

#include <Arduino.h>

class Person{
  public:
  int day;
  int month;
  String name;
  Person(int d, int m, String n);        // Konstruktor
  String get_Name(){                     // Methode anlegen, die den 
Namen zurückliefert
    return name;
  }
};

+++

// was auch immer das hier macht

#include "Person.h"
#include <Arduino.h>

Person::Person(int d, int m, String n){

month=m;
day=d;
name=n;

}

+++

void loop(){

!!!
(2) hier habe ich das Problem; entweder würde ich gerne mal zurücklesen, 
was aus der Klasse kommt, wenn ich die aktuellen RTC-Daten reingebe... 
das bekomm ich nicht hin ODER
(1) den Geburtstag feststellen durch einen Vergleich des aktuellen Datum 
mit den Daten aus der Klasse; kein Fehler aber passiert nix

        // Datums- oder Geburtstagsanzeige

        if(tm.Day == day() && tm.Month == month()){  (1)

        // get_Name(day=tm.Day, month=tm.Month); (2)
Gast #5705265
Lesenswert?
• ▲
▼
Gibt es da nicht noch Bücher für Anfänger?
Ganze Generationen haben so das Programmieren gelernt.

Zu meiner Zeit ist man zu www.amazon.de gegangen, und hat C++ 
Programmierung eingegeben.
Und 2 Tage später kam ein Buch.
Wie geht das heutzutage?
Gast #5705990
Lesenswert?
• ▲
▼
Hier mein Test-Code; RTC-Timer Timer tut, Klasse tut auch. Ich möchte 
das Datum aus dem RTC an die Klasse übergeben und erfahren, ob jemand an 
dem übergebenen Tag Geburtstag hat... und wer, also den Namen 
zurückbekommen.

---------------------------------------------
1
#include <Wire.h>
2
#include <TimeLib.h>
3
#include <DS1307RTC.h>
4
#include <Arduino.h>
5
#include "Person.h"
6

7
int txden = 8;
8

9
Person Elisa(9,1,"Elisa");
10
Person Smud(14,2,"Smud");
11
Person Papa(15,2,"Papa");
12
Person Erik(20,3,"Erik");
13
Person Marlene(10,5,"IsaMarlene");
14

15
void setup() {
16
  // put your setup code here, to run once:
17

18
    Serial.begin(57600); 
19
    pinMode(txden, OUTPUT);
20
    digitalWrite(txden, HIGH); // master
21

22
}
23

24
void loop() {
25
  // put your main code here, to run repeatedly:
26

27
    int delay_tr = 1000;
28
    tmElements_t tm;
29

30
    // wie bekomme ich es hin, dass ich, vorausgesetzt ich habe ein bestimmtes Datum (kommt aus RTC-Modul über tm.Day und tm.Month), den Namen des Geburtstagskinds angezeigt bekomme?
31
    get_Name(Person.day=tm.Day, Person.month=tm.Month);
32

33
    delay(delay_tr); 
34
}
35

36
---------------------------------------------
37
// Person.cpp
38

39
#include "Person.h"
40
#include <Arduino.h>
41

42
Person::Person(int d, int m, String n){
43

44
month=m;
45
day=d;
46
name=n;
47

48
}
49

50
---------------------------------------------
51
// Person.h
52

53
#include <Arduino.h>
54

55
class Person{
56
  public:
57
  int day;
58
  int month;
59
  String name;
60
  Person(int d, int m, String n);        // Konstruktor
61
  String get_Name(){                     // Methode anlegen, die den Namen zurückliefert
62
    return name;
63
  }
64
};

--

Ist es wirklich so kompliziert, die Formatierungs-Tags hier 
einzufügen?
Gast #5706923
Lesenswert?
• ▲
▼
Mit Klasssen und Instanzen/Objekten verhält es sich ähnlich wie mit 
Plätzenstechformen und Plätzchen.
Würde man auf eine Stechform Zucker streuen á la
StechformHase.Streue(Zucker); ?
Ne, man würde mit der StechformHase eine Instanz "PlätzchenHase" 
ausstechen (anlegen) auf DIE kann man dann Zucker streuen.
PlätchenHase.Streue(Zucker);

Der Teig aus dem man aussticht währe sinngemäß so etwas wie der Heap.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren