Motorsteuerung per Taster

Hallo!
Ich möchte im Rahmen eines Schulprojektes einen Motor per Knopfdruck steuern. Dabei soll der Motor bei Knopfdruck einfach 2,5 Sekunden in eine Richtung laufen und danach wieder aus gehen.

Verkabelt habe ich die ganze Sache nach dieser Anleitung:

Den Taster nach Schritt 10: Ein Taster als „digitaler Spannungsteiler“
Den Motor nach Schritt 13

Mein Programm sieht bisher so aus:

int drehzahl = 9;
int drehrichtung1 = 12;
int Button = 2;
int Buttonstate = 0;

void setup()
{
 pinMode(drehrichtung1, OUTPUT);
 pinMode(Button, INPUT);
}

void loop()
{
 Buttonstate = digitalRead(Button);
 if (Buttonstate==HIGH)
 {
 digitalWrite(drehrichtung1, HIGH);
 analogWrite(drehzahl, 255);
 delay(2500);
 digitalWrite(drehrichtung1, LOW);
 }
 else
 {
 digitalWrite(drehrichtung1, LOW);
 }
}

Das ganze funktioniert nicht ganz wie gewollt und bei Tastendruck passiert gar nichts. Entferne ich den Taster dreht sich der Motor ganz normal ohne Ende...
Wo liegt der bzw. liegen die Fehler?

Vermutlich verwendest du einen falschen Taster und keinen Pulldown/Pullup-Widerstand.
Dein Taster scheint ein Öffner und kein Schließer zu sein, oder du hast den falsch angeschlossen.
Zeige mal dein Schaltbild.

Also wenn du die Motorsteuerung in den Link nachgebaut hast, mit diesem Motortreiber IC, dann brauchst die zwei Pinns um den Motor einzuschalten.
Die Laufrichtung 1 ist Pin12 High - Pin13 LOW - und Pin9 das Tempo.
Die Laufrichtung 2 ist Pin12 LOW - Pin13 High - und Pin9 das Tempo.

In deinem Programm bedienst du aber nur Pin12 mit High.

Dein Taster ist da nicht beschrieben wie du ihn anschließen sollst.

So habe ich den Taster angeschlossen: (----> Bild im Anhang)

Franz54:
Also wenn du die Motorsteuerung in den Link nachgebaut hast, mit diesem Motortreiber IC, dann brauchst die zwei Pinns um den Motor einzuschalten.
Die Laufrichtung 1 ist Pin12 High - Pin13 LOW - und Pin9 das Tempo.
Die Laufrichtung 2 ist Pin12 LOW - Pin13 High - und Pin9 das Tempo.

In deinem Programm bedienst du aber nur Pin12 mit High.

Wie müsste ich mein Programm dann also abändern?

Dann ist offenbar dein Taster falsch angeschlossen und gibt egal ob du drückst oder nicht, immer dem Minus (GND) auf die Leitung zum Pin2. Wenn du den Taster weg nimmst, dann gibt der Widerstand Plus auf Pin2.

Kugelsalat:
Wie müsste ich mein Programm dann also abändern?

Pin13 auch als "Output" einrichten also wie Pin12 und wenn der Motor laufen soll auf Pin13 immer das Gegepotential zum Pin12 ausgeben. Wenn der Motor stehen soll beide Pins 12+13 das gleiche Potential. 

int drehzahl = 9;
int drehrichtung1 = 12;
int drehrichtung2 = 13;
int Button = 2;
int Buttonstate = 0;

void setup()
{
 pinMode(drehrichtung1, OUTPUT);
 pinMode(drehrichtung2, OUTPUT);
 pinMode(Button, INPUT);
}

void loop()
{
 Buttonstate = digitalRead(Button);
 if (Buttonstate==HIGH)
 {
 digitalWrite(drehrichtung1, HIGH);
 digitalWrite(drehrichtung2, LOW);
 analogWrite(drehzahl, 255);
 delay(2500);
 digitalWrite(drehrichtung1, LOW);
 }
 else
 {
 digitalWrite(drehrichtung1, LOW);
 digitalWrite(drehrichtung2, LOW);
 }
}

Wenn es dann noch nicht klappt,
dreh mal den Taster um 90°... auf dem Steckbrett -
egal ob gegen oder mit dem Uhrzeigersinn.
Ändert sich dann was?

Stefan

Habe es jetzt so versucht: (Hoffe ich habe das richtig verstanden… ^^)

int drehzahl = 9;
int drehrichtung1 = 12;
int drehrichtung2 = 13;
int Button = 2;
int Buttonstate = 0;

void setup()
{
 pinMode(drehrichtung1, OUTPUT);
 pinMode(drehrichtung2, OUTPUT);
 pinMode(Button, INPUT);
}

void loop()
{
 Buttonstate = digitalRead(Button);
 if (Buttonstate==HIGH)
 {
 digitalWrite(drehrichtung1, HIGH);
 analogWrite(drehzahl, 255);
 digitalWrite(drehrichtung2, LOW);
 delay(2500);
 digitalWrite(drehrichtung1, LOW);
 digitalWrite(drehrichtung2, LOW);
 }
 else
 {
 digitalWrite(drehrichtung1, LOW);
 digitalWrite(drehrichtung2, LOW);
 }
}

Funktioniert dennoch nicht, leider…

Hallo,
ForenMitglieder- die mehr als 10 Beiträge- und weniger als 20 Beiträge verfaßt haben-

SIND DAZU VERPFLICHTET- IHRE SKETCHE IN CodeTag´s (Editor </>) zu setzen.
Gruß und Spaß
Andreas

Kugelsalat:
So habe ich den Taster angeschlossen: (----> Bild im Anhang)

Danke…
Aber auf dem Bild ist nichts zu erkennen.
Und ein Schaltbild ist es nicht.

Auch wenn Andreas es schon geschrieben hat, hier noch mal zur Verdeutlichung:

Verwende dazu die Schaltfläche </> oben links im Editorfenster.
Das kannst du auch nachträglich machen.
Dazu den Sketch markieren und die Schaltfläche klicken.

Damit wird dieser für alle besser lesbar.

HotSystems:
Danke…
Aber auf dem Bild ist nichts zu erkennen.

… Was genau ist nicht erkenntlich? ^^ Sorry… bin komplett unerfahren hier -.-

Hallo,
Beispiel-Bild mit Taster :smiley:
Gruß und Spaß
Andreas
Taster.png

Kugelsalat:
Habe es jetzt so versucht: ...

Funktioniert dennoch nicht, leider...

Was passiert jetzt, wenn Du den Taster entfernst?
Hast du ihn bereits gedreht?

Mavh mal ein Foto von OBEN

Stefan

Kugelsalat:
... Was genau ist nicht erkenntlich? ^^ Sorry... bin komplett unerfahren hier -.-

Ohh...nichts ist erkenntlich.

Da ist ein grüner "Knopf", mehr nicht. Was wichtig ist, lässt du weg.
Wie ist der angeschlossen, wo liegt + und GND, wo ist er am Arduino angeschlossen.

StefanBoth:
Was passiert jetzt, wenn Du den Taster entfernst?
Hast du ihn bereits gedreht?

Wenn ich den Taster entferne, dreht sich der Motor ganz einfach so…
Wenn ich ihn um 90° drehen will, passt er nicht mehr auf die Steckplatine…^^

… habe leider nicht so schöne kurze Kabel… nur ein riesiges Kabelgewirr :frowning:

Kannst du mit einem Vielfachmessgerät umgehen ?

Wenn ja, miss doch mal, welche Kontakte tatsächlich die “Schließer” sind.
Dann brauchst du nicht ewig probieren.

Normalerweise sind immer 2x2 Pins miteinander verbunden (Kurzschluss).

Wenn ich ihn um 90° drehen will, passt er nicht mehr auf die Steckplatine...^^

Ich bin ein wenig verzweifelt....

O.k... anders.

Bitte entferne den Taster komplett.
Dann nimmst du den MINUS Draht und steckst
ihn kurz in die Reihe Nr. 6

Tut sich dann etwas ?

Stefan

Hallo,
drehe den Taster mal um 90 Grad und setze ihn auf die Zeile "e" und "f"
Dann ist man sicher, das nichts schief geht.
Gruß und Spaß
Andreas

Und nochmals, liefere ein Schaltbild und deine Fehler werden deutlicher.