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.
Julian schrieb: > Aktuell habe ich aber Probleme mit dem oberen Thema > "erkennen/vergleichen" Welche? Beschreib', was Du versucht hast, und was sich dabei anders verhält als Du erwartest.
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?
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.
Julian schrieb: > es passiert einfach nichts bei der Abfrage von mir. Er geht nicht in die > Schleife rein. Zeig' Deinen Code.
> 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 ;-)
// 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)
Fast: ich suche nicht die Daten von Julians Geburtstag, sondern möchte wissen, dass er Geburtstag hat wenn es soweit ist!!! ;-)
Julian schrieb: > if(tm.Day == day() && tm.Month == month()){ (1) Was ist tm? Und wo kommen die Funktionen day() und month() her? Im Moment passt das alles irgendwie nicht zusammen, denn du greifst nirgends auf die Elemente deines Objekts zu.
Du zeigst nicht Deinen Code, sondern nur irgendwelche zusammenhangslosen Schnipsel. Im übrigen könntest Du, damit man Deine Codeschnipsel von Deinen Textschnipseln unterscheiden kann, die Formatierungstags verwenden, die die Forensoftware anbietet. Sieh einfach mal oberhalb der Texteingabebox die erste Zeile unter dem Wort "Formatierung" an ...
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?
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?
:
Bearbeitet durch User
PittyJ schrieb: > Zu meiner Zeit ist man zu www.amazon.de gegangen, und hat C++ > Programmierung eingegeben. Jungspund… Zu meiner Zeit ist man in der nächsten größeren Stadt einen Buchladen gegangen und hat gehofft, dass was interessantes zu finden ist. Oder man kannte von irgendwo die ISBN und hat das Buch im Laden bestellt.
Du wirfst Klassen und Instanzen durcheinander. Eine Klasse ist nur ein Bauplan, mehr nicht. Man kann nicht Person.day abfragen, sondern nur das konkrete Objekt. Glaskugelin schrieb: > Suchst du vielleicht > > if((tm.Day == Julian.day) && (tm.Month == Julian.month)){ > //Gratulation an Julian schlumpfen > }
ah, ok. das hilft mir schon mal weiter. d.h., ohne mich damit beschäftigt zu habe, ich muss auf Instanzen zurückgreifen?
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.
Julian schrieb: > ohne mich damit > beschäftigt zu habe Vielleicht solltest Du genau das mal machen^^
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.