Mein Problem der Ausgang Pin 10 schaltet nicht.
Vergleiche bitte mal Deinen Code genauestens mit dem von mir geposteten Programmgerüst!
(Posted on: December 17, 2012, 08:12:21 PM)
In meinem Beispielcode steht am Ende eine ganz kurze loop-Funktion mit Funktionsaufrufen.
Das sollte bei Dir am Ende auch der Fall sein.
Dazu müßtest Du tatsächlich Funktionen deklarieren.
Und auch tatsächlich Funktionen von der Loop aus aufrufen.
Beides machst Du mit Deinem Code NICHT.
Du tust teilweise nur so als ob Du Funktionen deklarierst.
Das sind aber leere Funktionen.
Und der Code steht immer noch in der Loop statt in einer Funktion außerhalb der Loop.
Bitte schaue es Dir nochmal hier an:
http://arduino.cc/en/Reference/FunctionDeclarationIch versuche mal, Dir die Fehler anhand des dort vorgestellten Sketches mit der Multiplikationsfunktion aufzuzeigen:
void setup(){
Serial.begin(9600);
}
// hier Anfang loop-Funktion
void loop() {
int i = 2;
int j = 3;
int k;
// in der nachfolgenden Zeile steht der Funktionsaufruf:
k = myMultiplyFunction(i, j); // k now contains 6
Serial.println(k);
delay(500);
}
// hier Ende loop-Funktion
// hier Anfang Funktionsdeklaration
int myMultiplyFunction(int x, int y){
int result;
result = x * y;
return result;
}
// hier Ende Funktionsdeklaration
Als erstes sollte Dir auffallen:
Am Ende einer FunktionsDEKLARATION steht NICHT ein Semikolon!
Sondern am Ende einer Funktionsdeklaration steht eine öffnende geschweifte Klammer und dann folgt der Block an Anweisungen, die von der Funktion ausgeführt werden sollen.
int myMultiplyFunction(int x, int y){
// hier stehen die Anweisungen der Funktion
}
Sowas hier als Deklaration mit Semikolon am Ende:
int myMultiplyFunction(int x, int y);
bedeutet: Deklariere eine leere Funktion ohne Anweisungen und ohne Anweisungsblock. Die Funktionsdeklaration ist nach dem Semikolon zuende. Alles danach geschriebene gehört dann nicht mehr zu dieser Leer-Funktion. Das ist gar nix.
Als zweites sollte Dir auffallen:
Diese Deklaration einer Funktion steht NICHT INNERHALB DER LOOP!
Deklariere eine Funktion außerhalb der Loop, sie steht dann entweder oberhalb oder unterhalb der Loop.
Aber nicht mitten in die Loop reingequetscht.
In die Loop hinein gehören AUFRUFE DER FUNKTION.
Eine Funktion wird aufgerufen, indem Du sowas ähnliches wie die Deklaration hinschreibst, vorneweg steht kein Datentyp (wie void oder int) und nach den Parametern kommt dann am Ende das Semikolon statt einer geschweiften Klammer.
Das wäre ein Funktionsaufruf:
myMultiplyFunction(ErsterWert, ZweiterWert);
Und Funktionen mit Rückgabewert kannst Du an eine (vorher deklarierte) Variable zuweisen:
Ergebnis=myMultiplyFunction(ErsterWert, ZweiterWert);
Erkenne und verstehe den Unterschied zwischen sowas (Funktions-DEKLARATION):
int myMultiplyFunction(int x, int y){
// hier stehen die Anweisungen der Funktion
}
und sowas (Funktionsaufruf):
Ergebnis=myMultiplyFunction(ErsterWert, ZweiterWert);
Ohne die Grundlagen von Funktionsdeklarationen und Funktionsaufrufen verstanden zu haben, kannst Du keine vernünftig strukturierten Programme schreiben, die dann auch noch funktionieren sollen.