Ich habe mit dem programmieren neu angefangen und ein Projekt überlegt welches momentan leider nicht funktioniert.
Projekt:
Ich habe eine Led an pin 13 angeschlossen und einen Druckschalter benutzt, welcher über Pin 2 eine Ausgabe an meinen Arduino sendet.
Mein Ziel ist es, dass meine LED n mal blinkt, wenn ich meinen Druckschalter n-mal betätige.
Ich dachte ich wäre bereits fertig, doch als ich meinen Code auf den Arduino lud, passierte nichts:D
Ich hoffe ihr könnt mir weiterhelfen.
Im Anhang ist meine Schaltung zu sehen.
Mit freundlichen Grüßen
Lucas
Code:
int InputPin = 2;
int LEDPin = 13;
int i = 0;
void setup()
{
Serial.begin(9600);
pinMode(InputPin,INPUT);
pinMode(LEDPin,OUTPUT);
}
void loop()
{
int SchalterZustand = digitalRead(InputPin);
if(SchalterZustand = HIGH)
{
i++;
}
while(i>0);
{
digitalWrite(LEDPin,HIGH);
delay(500);
digitalWrite(LEDPin,LOW);
delay(500);
i--;
}
}
Setze deinen Sketch bitte in Code-Tags, Schaltfläche </> oben links im Editorfenster.
Dann ist dieser für alle besser lesbar. Das kannst du auch nachträglich noch machen.
Auch ist in deinem Fall wichtig, den Taster zu entprellen.
Das geht per Hardware oder per Software.
Ohne diese Entprellung wirst du nie ein funktionierendes Ergebnis erhalten.
Hallo
Bau Mal ein serial.print(schalterzustand) hinter das einlesen des Schalters damit du sehen kannst ob sich der Pegel überhaupt ändert . Ich glaube die Schaltung stimmt nicht
Heinz
Rentner:
Hallo
Bau Mal ein serial.print(schalterzustand) hinter das einlesen des Schalters damit du sehen kannst ob sich der Pegel überhaupt ändert . Ich glaube die Schaltung stimmt nicht
Heinz
Ich habe dies getan und erhalte im Seriellen Monitor eine 0, wenn er nicht betätigt, und eine 1, wenn er betätigt wird. Dies funktioniert auch.
Außerdem habe ich nach meiner If-Schleife ebenfalls ein Serial.print(i) eingefügt und stelle nun fest, dass mein i wächst, wenn mein Schalter nicht getätigt wird. Habe ich dem Arduino aber nicht versucht zu sagen, dass i nur dann erhöht werden soll, wenn mein SchalterZustand High ist, also 1?
Hallo,
Eigendlich soll dein i ja um 1 größer werden wenn der Taster von 0 auf 1 wechselt und nicht während der gesamten Zeit.
Du brauchst also eine Flanken Erkennung für die pos Flanke.
Aber der ganz Skatch hat sein Problem er fängt ja bereits an mit der Bearbeitung der LeD wenn du eventuell noch hoch zahlen willst.
Zudem werden die LED nur bearbeitet wenn der Taster ein ist.
Dann während des dekay ist der Uno am am schlafen nix geht mehr . Damit kannst du auch während der Zeit keine Taster mehr erkennen.
Du musst die Struktur noch Mal überdenken
Mach erst Mal mit einer Flanke zahlen bis 5 und wenn der Zähler bei 5 angekommen ist lässt du 5 Mal blinken
Dazu siehst du dir dann das Beispiel blink without delay an , wenn du das verstanden hast ist das sicher das was du haben wolltest .