Hallo,
um mal mit meinen Anfänger-Arduino-Kenntnissen weiterzukommen habe ich mir ein Buch gekauft, welches ich nun Seite für Seite abarbeite. Es handelt sich um das Buch
MUSIK MIT DEM ARDUINO UND MIDI vom FRANZIS-VERLAG
Leider scheint das Buch an einigen Stellen fehlerhaft zu sein, denn die enthaltenen Hinweise und Codes funktionieren manchmal nicht. Auf Seite 72 z.B. steht ein Beispielcode, um ein Lauflicht mit einem kurzen Tasterdruck an-, später dann mit nochmaligem kurzen Tasterdruck wieder auszuschalten.
Hier der Code (zur besseren Übersicht habe ich alle Anmerkungen entfernt, nur die Befehlszeilen belassen):
Code:
const int LED_PINS[] = {2, 3, 4, 5};
const int PUSH_BUTTON = 6;
int buttonStateOld = 0;
bool buttonFlag = false;
void setup()
{
for (int a=0; a<4; a++)
{
pinMode(LED_PINS[a], OUTPUT);
}
pinMode(PUSH_BUTTON, INPUT);
}
void loop()
{
if (buttonState != buttonStateOld)
{
if(buttonState == HIGH)
{
if(buttonFlag == false)
{
buttonFlag = true;
}
else
{
buttonFlag = false;
}
}
buttonStateOld = buttonState;
}
if(buttonFlag == true)
{
for(int a=0; a<4; a++)
{
digitalWrite(LED_PINS[a], HIGH);
delay(200);
}
for(int a=0; a<4; a++)
{
digitalWrite(LED_PINS[a], LOW);
delay(200);
}
}
}
Unter "void loop" gibt es gleich den "if"-Befehl:
Code:
if (buttonState != buttonStateOld)
Allerdings wurde im FRANZIS-Buch der "buttonState" als Variable im Definitions-Bereich des Codes nicht deklariert, was folgerichtig zu einer Fehlermeldung führt. Lediglich "buttonStateOld" wird dort deklariert.
Das FRANZIS-Buch ist - sagen wir mal - in seinen Hinweisen und Hilfestellungen durchwachsen. Einerseits genau das, was ich vorhabe (MIDI- bzw. HUI-Controller mit dem Arduino bauen), aber die Befehle und Werte, die zum Einsatz kommen, werden teilweise nicht einmal erklärt. Bei meiner Google-Suche komme ich dann manchmal auch nicht weiter, so wie in diesem Fall. Kann mir von Euch hier bitte jemand helfen?
Ich habe zunächst versucht, im Definitions-Bereich zusätzlich die Zeile für "int buttonState = " einzufügen und mit einem Wert zu versehen, aber da komme ich nicht weiter. Bei "int buttonStateOld =" steht: 0
Was genau bedeutet eigentlich dort diese Null? Sie ist ja nicht dasselbe, wie die Zahlen bei "const int", wo 2, 3, 4 usw. den zugehörigen PIN des Arduino definieren. Die Null gibt ja hier keine PIN-Nr. an. Bedeutet "0" bei "int buttonStateOld" dasselbe wie LOW, und daraus folgernd müsste "1" dasselbe wie HIGH bedeuten? Oder wofür steht dort der Wert "0"?
Ich habe es für "int buttonState =" versucht mit folgenden Werten:
0
1
255
true
false
aber alles ohne Erfolg. Zwar wird nun bei der Überprüfung des Codes in allen Varianten kein Fehler mehr angezeigt, aber funktionieren tut es trotzdem nicht. Fakt ist, dass "buttonState" definiert werden muss. Aber mit welchem Wert bzw. Befehl? Und "warum" mit welchem Wert bzw. Befehl?
Kann mir von Euch jemand hier bitte helfen? Gern auch www-Links, die ich bisher möglicherweise noch nicht entdeckt habe?
Andi
Lesezeichen