Forum: Mikrocontroller und Digitale Elektronik 2 Codes zusammenfügen


von Daniel M. (diy_daniel)


Lesenswert?

Guten Abend,
meine Frage bezieht sich auf folgenden Code.

wieso wird void setup2()& void loop2() nicht ausgeführt.

beschreibeung des Ziels:
-ein Relais soll permanent an aus wechseln.
-während ein endoder werte zählt.

int encoder0PinA = 3;
int encoder0PinB = 4;

int messungPin1 = LOW;
int messungPin1Alt = LOW;

int encoderWert = 0;

void setup() {
  pinMode(encoder0PinA, INPUT_PULLUP);
  pinMode(encoder0PinB, INPUT_PULLUP);
  Serial.begin(115200);
}

void loop() {
  messungPin1 = digitalRead(encoder0PinA);
  if ((messungPin1 == HIGH) && (messungPin1Alt == LOW)) {
    if (digitalRead(encoder0PinB) == LOW) {
      encoderWert--;
    } else {
      encoderWert++;
    }
    Serial.println(encoderWert);
  }
  messungPin1Alt = messungPin1;
}
void setup2(){
pinMode(6 ,OUTPUT);
}
void loop2() {
digitalWrite(6, HIGH); //An dieser Stelle würde das Relais einsschalten

delay(1000);//...eine Sekunde warten

digitalWrite(6, LOW); //Und wieder ausschalten

delay(1000); //...und eine Sekunde warten.

}

void setup2()
void loop2()

von Oliver S. (oliverso)


Lesenswert?

Gegenfrage: warum sollten die ausgeführt werden?

Oliver

von Joe F. (easylife)


Lesenswert?

Weil deine Arduino IDE nur diesen Code hier hinzufügt:
1
main()
2
{
3
  setup();
4
5
  while(1)
6
    loop();
7
}

und da kommt dein "setup2" und "loop2" nicht vor.

von Paul S. (paul360)


Lesenswert?

> wieso wird void setup2()& void loop2() nicht ausgeführt.

setup und loop sind festgelegte Funktionsnamen mit ebendiesen 
Bestimmungen.
Der Code wird compiliert und nicht interpretiert.
Du gehst wahrscheinlich von einer Scriptsprache aus, die Top-Down 
interpretiert wird. Da wuerde der Interpreter ggfls. auch ueber setup2 
und loop2 laufen.
Der Compiler wird die "Aufrufe" unten wohl einfach verwerfen bzw. als 
leere Funktionsdefinitionen interpretieren.
Schreib die noetige Funktionalitaet einfach in die vorhandenen setup und 
loop rein.

von Wolfgang (Gast)


Lesenswert?

Joe F. schrieb:
> Weil deine Arduino IDE nur diesen Code hier hinzufügt:

Ein bißchen anders sieht der schon aus, sonst würde z.B. der Timer für 
millis() nicht laufen.

von Sebastian S. (amateur)


Lesenswert?

Es scheint immer mehr zum guten Stiel zu gehören, dass man nur den Code 
postet, der einem in den Kram passt.

Der obige Ansatz sollte schon einen ganzen Sack voll Fehlermeldungen 
produzieren und auch deshalb nicht funktionieren.

Oder wie gesagt: Da fehlt was!

von Experte (Gast)


Lesenswert?

Mach es so:

1
void setup1()
2
{
3
  ...
4
}
5
6
void loop1()
7
{
8
  ...
9
}
10
11
void setup2()
12
{
13
  ...
14
}
15
16
void look2()
17
{
18
  ...
19
}
20
21
void setup()
22
{
23
  setup1();
24
  setup2();
25
}
26
27
void look()
28
{
29
  loop1();
30
  loop2();
31
}

von Experte (Gast)


Lesenswert?

Experte schrieb:
> void look2()

Meep...
1
void loop2()

...natürlich.

von Michael U. (amiga)


Lesenswert?

Hallo,

@Experte (Gast): wird sicher auch lustig, schon wegen der
delay(1000);//...eine Sekunde warten
die da drin sind. :-)

Gruß aus Berlin
Michael

von Dyson (Gast)


Lesenswert?

Wolfgang schrieb:
> Ein bißchen anders sieht der schon aus, sonst würde z.B. der Timer für
> millis() nicht laufen.

Was niemanden interessiert und hier völlig unwichtig ist. Aber 
Hauptsache,  von Wolfgang (Gast) weiß wieder etwas besser.

von Michael U. (amiga)


Lesenswert?

Hallo,

da hat der TO nach bestem Wissen einfach 2 Sketche aneinander gefügt.
War zuwenig wissen.
Er hätte jetzt schauen könne, wie in Ablauf bei einen Programm und auch 
bei der Arduino-Version abläuft.
Offenbar hat niemand Lust, ihm grunds#tzliche Fragen "was ist Programm 
und wie läuft es ab" zu erklären.
Selbst ich nicht, obwohl ich manchmal ziemlich Aufwand treibe, um 
jemandem bei einem Problem zu helfen.

Ist ja auch ein generelles Problem wenn man programmieren will.
Ist nichtmal Arduino spezifisch, ein c-Programm, wo ich einfach hinter 
die main() eine 2. kopiere und die in main2() umbenenne, wird auch 
nichts anderes machen.

PS: vom TO hört man erfahrungsgemaäß bei derartigen Fragestellungen dann 
auch nie wieder was...

Gruß aus Berlin
Michael

von Wolfgang (Gast)


Lesenswert?

Dyson schrieb:
> Was niemanden interessiert und hier völlig unwichtig ist.

Man kann es auch deutlicher formulieren: Der von der Arduino IDE 
automatisch eingebundene Code sieht eben nicht so aus, wie von Joe F. 
behauptet.

Der Code zeigt das Prinzip, soweit es den Aufruf von Setup() und Loop() 
betrifft - nicht mehr und nicht weniger.

Joe F. schrieb:
> Weil deine Arduino IDE nur diesen Code hier hinzufügt:

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
Noch kein Account? Hier anmelden.