int Motor = 3;
int Schieb1 = 4;
int Stop = 5;
int Schieb2 = 6;
// das Ganze muß noch in das DCF77 Programm eingefügt werden. Ich muß aber bevor ich das mache sicher sein
//dass dieser Abschnitt fehlerfrei ist.Ich weiss nicht wie man in C++ Unterprogramme erstellt. Ich kenne es
//nur von AVR Assembler. Da schreibt man Label: geht mit rcall hinein und mit ret wieder heraus auf die
//letzte Adresse +1. Der Sinn dieses Programms ist, dass in der Zeit von 7.00 Uhr bis 21.00 Uhr in Abständen
// von 20 min das Unterprogramm (Funktionen) "Abfrage" läuft
int DCF77PIN2 ;
void setup()
{
pinMode(Motor, OUTPUT);
pinMode(Schieb1, OUTPUT);
pinMode(Stop, OUTPUT);
pinMode(Schieb2, OUTPUT);
pinMode(DCF77PIN2, INPUT);
}
void loop() {
digitalRead(DCF77PIN2);// hier muß ich noch prüfen ob dieser Befehl mir die Zeit vom DCF77 zeigt und ich das
//auch abfragen kann
void Std void();
int Std
if (Std <= 7) {
goto loop;
}
if (Std == 7) {
goto MIN;
if (Std <= 21) {
goto MIN;
if (Std <= 24) {
goto loop;
}
if (Std == 24) {
goto loop;
}
void MIN void() {
int min
}
digital Read PIN 2;
if (min == 0) {
goto Abfrage;
continue;
}
if (min == 20) {
goto Abfrage;
continue;
}
if (min == 40) {
goto Abfrage;
continue;
delay(50);
goto loop;
}
void Abfrage void() {
Motor = HIGH;
delay(10000);
Motor = LOW;
Schieb1 = HIGH;
delay(1000);
Schieb2 = LOW;
Stop = HIGH;
delay(1000);
Stop = LOW;
Schieb2 = HIGH;
delay(1000);
Schieb2 = LOW;
return;
}
}
(außerhalb einer anderen Funktion wie z.B. void loop() { ... } )
und aufgerufen, indem einfach
woanders im Code, z.B. innerhalb der geschweiften Klammern von loop, Abfrage();
geschrieben wird.
[code]
int Motor = 3;
int Schieb1 = 4;
int Stop = 5;
int Schieb2 = 6;
// das Ganze muß noch in das DCF77 Programm eingefügt werden. Ich muß aber bevor ich das mache sicher sein
//dass dieser Abschnitt fehlerfrei ist.Ich weiss nicht wie man in C++ Unterprogramme erstellt. Ich kenne es
//nur von AVR Assembler. Da schreibt man Label: geht mit rcall hinein und mit ret wieder heraus auf die
//letzte Adresse +1. Der Sinn dieses Programms ist, dass in der Zeit von 7.00 Uhr bis 21.00 Uhr in Abständen
// von 20 min das Unterprogramm (Funktionen) "Abfrage" läuft
int DCF77PIN2 ;
void setup()
{
pinMode(Motor, OUTPUT);
pinMode(Schieb1, OUTPUT);
pinMode(Stop, OUTPUT);
pinMode(Schieb2, OUTPUT);
pinMode(DCF77PIN2, INPUT);
}
void loop() {
digitalRead(DCF77PIN2);// hier muß ich noch prüfen ob dieser Befehl mir die Zeit vom DCF77 zeigt und ich das
//auch abfragen kann
// void Std void();
int Std;
if (Std <= 7) {
goto loop;
}
if (Std == 7) {
goto MIN;
if (Std <= 21) {
goto MIN;
if (Std <= 24) {
return loop;
}
if (Std == 24) {
return loop;
}
{ int min;
digitalRead(DCF77PIN2);
if (min == 0) {
goto Abfrage();
continue;
}
if (min == 20) {
goto Abfrage();
continue;
}
if (min == 40) {
goto Abfrage();
continue;
delay(50);
goto loop;
}
{
Motor = HIGH;
delay(10000);
Motor = LOW;
Schieb1 = HIGH;
delay(1000);
Schieb2 = LOW;
Stop = HIGH;
delay(1000);
Stop = LOW;
Schieb2 = HIGH;
delay(1000);
Schieb2 = LOW;
return;
}
}
[/code]
jetzt das korrigierte Programm.[code]
int Motor = 3;
int Schieb1 = 4;
int Stop = 5;
int Schieb2 = 6;
// das Ganze muß noch in das DCF77 Programm eingefügt werden. Ich muß aber bevor ich das mache sicher sein
//dass dieser Abschnitt fehlerfrei ist.Ich weiss nicht wie man in C++ Unterprogramme erstellt. Ich kenne es
//nur von AVR Assembler. Da schreibt man Label: geht mit rcall hinein und mit ret wieder heraus auf die
//letzte Adresse +1. Der Sinn dieses Programms ist, dass in der Zeit von 7.00 Uhr bis 21.00 Uhr in Abständen
// von 20 min das Unterprogramm (Funktionen) "Abfrage" läuft
void (Abfrage)void
{
Motor = HIGH;
delay(10000);
Motor = LOW;
Schieb1 = HIGH;
delay(1000);
Schieb2 = LOW;
Stop = HIGH;
delay(1000);
Stop = LOW;
Schieb2 = HIGH;
delay(1000);
Schieb2 = LOW;
return loop;
void (Std)void
int Std;
if (Std <= 7) {
loop;
}
if (Std == 7) {
MIN();
if (Std <= 21) {
MIN();
if (Std <= 24) {
return loop;
}
if (Std == 24) {
return loop;
}
void (MIN)void
{ int min;
digitalRead(DCF77PIN2);
if (min == 0) {
Abfrage();
continue;
}
if (min == 20) {
Abfrage();
continue;
}
if (min == 40) {
Abfrage();
continue;
delay(50);
return loop;
}
void loop() {
digitalRead(DCF77PIN2);// hier muß ich noch prüfen ob dieser Befehl mir die Zeit vom DCF77 zeigt und ich das
//auch abfragen kann
Std()
MIN()
}
}
Ich rate dir zu einem C++ Grundlagenkurs, oder Buch, oder Tutorial.
Da steht genau drin, wie eine Funktion zu schreiben ist.
Und auch wie man diese verwendet.
Eine Funktion macht aus Eingangsparametern einen Ergebniswert. Und hat evtl. (bei Puristen unerwünschte) Seiteneffekte.
Da es bei C/C++ gar keine Unterprogramme gibt (da stimme ich dir und combie zu) könnte man ja schauen, was diesem Begriff wohl am nächsten kommt.
Weder Funktionen noch Unterprogramme werden übrigens mit goto aufgerufen.
Und weil Funktionen so allgegenwärtig sind, hat man bei der Erfindung von C auf das Schlüsselwort gosub einfach verzichtet.