Go Down

Topic: Fehler (Read 1 time) previous topic - next topic

dekat

hi ich bin noch neuling und versuche mich derzeit an einfachen code `s nur häng ich jetzt schon ne weile an einem code fest!

kann mir eine sagen wo hier mein fehler liegt ? were klasse wenn ihn jemand findet und mir erklären könnte was ich ich zukunft anders machen muss ?

Code: [Select]
int led[4] = { 10,11,12,13};
int oldVal = 0;
int counter = 0;
int taster = 2;
void setup() {
 for (int i = 0; i<4; i++) {
 pinMode(led[i], OUTPUT);
 }
 void setLED(int ledNr) {
   for (int i = 0;i<4;i++) {
     if (i == ledNr) {
       digitalWrite(led[i], HIGH);
   }
   else {
     digitalWrite(led[i], LOW);
   }
 }
}
int setCounter(int counter) {
 if (counter == 3 {
   counter = 0;
 }
 else {
   counter++;
 }
 return counter;
}
void loop()
{
 int val = digitalRead(taster);
 if (val != oldVal && val == HIGH) {
   counter = setCounter();
   setLED(counter);
   delay(10);
 }
 oldVal = val;
}


lg dekat

uwefed

Bitte ein bißchen Einsatz. Einfach den Code posten und sagen "da ist ein Fehler" geht nicht. Bitte erklähre was nicht geht und wie das Programm funktionieren sollte.
Grüße Uwe

Joghurt

#2
Nov 18, 2010, 09:37 pm Last Edit: Nov 18, 2010, 09:39 pm by Joghurt Reason: 1
Schätze, Du hast ein paar Klammerfehler: Nach der ersten FOR-Schleife fehlt eine "}", und nach dem "counter == 3" fehlt eine ")".

Oh, und beim "setCounter()"-Aufruf im loop() fehlt ein Parameter.

Lifthanger

#3
Nov 18, 2010, 09:40 pm Last Edit: Nov 18, 2010, 09:41 pm by Lifthanger Reason: 1
hi,

sind 3 fehler die ich gefunden habe:

- void setup wird nicht geschlossen bevor du mit void setLed anfängst.
- irgendwo hat ne runde Klammer zu gefehlt
- und du rufst deine Funktion setCounter ohne Argument auf obwohl sie eins verlangt.

So kompiliert es:
Code: [Select]
int led[4] = { 10,11,12,13};
int oldVal = 0;
int counter = 0;
int taster = 2;
void setup() {
 for (int i = 0; i<4; i++) {
 pinMode(led[i], OUTPUT);
 }
}
 void setLED(int ledNr) {
   for (int i = 0;i<4;i++) {
     if (i == ledNr) {
       digitalWrite(led[i], HIGH);
   }
   else {
     digitalWrite(led[i], LOW);
   }
 }
}
int setCounter(int counter) {
 if (counter == 3 ){
   counter = 0;
 }
 else {
   counter++;
 }
 return counter;
}
void loop()
{
 int val = digitalRead(taster);
 if (val != oldVal && val == HIGH) {
   counter = setCounter(counter);
   setLED(counter);
   delay(10);
 }
 oldVal = val;
}


ich glaube so war es auch gedacht.

Jan

edit: doh, war zu spät

edit2: und Uwe hat recht, mir war nur grad langweilig.

Joghurt

Quote
edit2: und Uwe hat recht, mir war nur grad langweilig.

Dito.  ;D

dekat


- void setup wird nicht geschlossen bevor du mit void setLed anfängst.
- irgendwo hat ne runde Klammer zu gefehlt

das kann net sein habe den code jetzt 1 zu 1 aus dem buch übertragen und da fehlt keine klammer

und zum lesten das war wohl mein fehler danke ^^

uwefed

#6
Nov 18, 2010, 11:43 pm Last Edit: Nov 18, 2010, 11:48 pm by uwefed Reason: 1
@Lifthanger und Joghurt
Und ich war zu faul zu versuchen das Programm zu analysieren.  ;)

@dekat
Auch in Büchern sind Fehler; Murphys läßt grüßen.

Wenn Du mit dem Kursor im IDE eine Klammer markierst, siehst Du die dazugehörige Klammer angezeigt. So kannst Du sehen wo eine Klammer auf - bzw zu geht.

Beim Abschreiben verfehlt man sich schon mal und läßt was aus ecc.

Grüße Uwe

Lifthanger

genau, in dem Fall steht das falsch im Buch. Wenn du eine Funktion innerhalb einer anderen deklarierst, dann platzt dem Compiler leider der Kopf. :)

tut es denn jetzt was es sollte?

Webmeister

Dekat hat mich per PM kontaktiert, da er der Annahme war, dass ich der Autor dieses Codes bin.

Ich bin aber der Autor vom Buch "Arduino Praxiseinstieg". Soweit ich prüfen konnte, stammt der in diesem Thread besprochene Code aus dem O'Reilly-Buch "Arduino Physical Computing...".

Ich habe Dekat empfohlen den Code von der Buchwebsite runterzuladen.
http://arduinobuch.wordpress.com/downloads/

Gruss
Thomas

Webmeister

Quote
sind 3 fehler die ich gefunden habe:


Genau, mit den von Lifthanger erwähnten Korrekturen, ist der Code compilierbar.

uwefed

Auf die Interseite des Verlags zu schauen ist einen gute Idee; oft kann man da die Beispielprogramme gerunterladen und auch Fehlerkorrekturen finden.
Grüße Uwe

Megaionstorm

Die Kommentare  unter den Downloadlinks sprechen Bände für sich:
http://arduinobuch.wordpress.com/downloads/
Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Go Up