Hallo,
ich habe gestern meine ersten Experimente mit dem Arduino Nano angefangen. Soweit habe ich bisher noch keine Erfahrungen mit Elektronik gesammelt und kenne daher nur die absoluten Basics. Zum Testen habe ich eine Platine mit Switches verwendet, die alle direkt an GND angeschlossen sind. Dadurch kann ich den Status dann ja nicht über den Digitalpin auslesen, da ja dann kein Strom fließt, wenn ich das richtig verstaanden habe? - Zumindest hats nicht geklappt ^^
Zum auslesen habe ich folgendes Sketch geschrieben:
const int forwardSwitch = A4;
const int backSwitch = A3;
const int dpiDec = A2;
const int dpiInc = A1;
const int ledPin = 13;
int clockTime = millis();
void setup()
{
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
Serial.println("Starting");
}
void loop()
{
int curTime = millis();
if(curTime - clockTime >= 50)
{
int buttonStates[4];
buttonStates[0] = analogRead(forwardSwitch);
buttonStates[1] = analogRead(backSwitch);
buttonStates[2] = analogRead(dpiDec);
buttonStates[3] = analogRead(dpiInc);
boolean ledState = false;
for(int i = 0; i < 4; i++)
{
if(buttonStates[i] == 0) {
ledState = true;
Serial.print(i);
Serial.println(" is HIGH");
}
}
if(ledState) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
clockTime = millis();
}
}
Damit habe ich jetzt allerdings das Problem, das wenn ich die Zustände zu schnell abfrage, dass ich Falsche Werte von den anderen Switches bekomme. Also wenn ich z.B. alle 20ms abfrage und Switch 1 gedrückt habe, bekomme ich ab und zu von Switch 2 ebenfalls die Meldung das dieser gedrückt sei, was jedoch nicht stimmt... Ohne Delay Spinnen die werte dann komplett. Woran liegt das?
