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.
> 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)
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
inttxden=8;
8
9
PersonElisa(9,1,"Elisa");
10
PersonSmud(14,2,"Smud");
11
PersonPapa(15,2,"Papa");
12
PersonErik(20,3,"Erik");
13
PersonMarlene(10,5,"IsaMarlene");
14
15
voidsetup(){
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
voidloop(){
25
// put your main code here, to run repeatedly:
26
27
intdelay_tr=1000;
28
tmElements_ttm;
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?
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> }
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.