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()
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.
> 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.
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.
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!
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 | }
|
Hallo, @Experte (Gast): wird sicher auch lustig, schon wegen der delay(1000);//...eine Sekunde warten die da drin sind. :-) Gruß aus Berlin Michael
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.