INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Zwei Richtungen mit einem Taster
16.06.2020, 14:17
Beitrag #1
Zwei Richtungen mit einem Taster
Hallo Alles zusammen,
ich bin noch recht unerfahren was die Programmierung eines Arduinos angeht und hätte da eine Frage:
Ich habe einen Motor mit einem Wechsel-Relais und einen Taster.
der Motor soll sich in Richtung1 drehen bis ich den Taster einmal drücke, dann soll er kurz warten und sich dann in Richtung2 drehen, bis ich den Taster wieder drücke, dann soll er kurz warten und sich wieder in Richtung1 drehen und dass ganze wieder von vorne.
ich habe es mit den If-else Funktionen nicht hinbekommen, welche eignen sich da eher dafür??

Schonmal vielen Dank für die Hilfe
Gruß Fox
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.06.2020, 14:44 (Dieser Beitrag wurde zuletzt bearbeitet: 16.06.2020 15:35 von Tommy56.)
Beitrag #2
RE: Zwei Richtungen mit einem Taster
(16.06.2020 14:17)FoxFactoy schrieb:  ich habe es mit den If-else Funktionen nicht hinbekommen, welche eignen sich da eher dafür??
Die if/else-Entscheidung eignet sich schon dazu oder auch die switch/case.
Du solltest erst mal lernen, mit dem Taster umzugehen (Stichworte: Flankenerkennung und entprellen). Dafür hat die IDE gute Beispiele.
Dann brauchst Du 4 Zustände: Vorwärts/Halt1/Rückwärts/Halt2, also ein klassischer Fall für einen endlichen Automaten (FiniteStateMachine).

Gruß Tommy

Edit: Zur Vereinfachung kannst Du die internen PullUp-widerstände zuschalten und den Taster gegen GND schalten.

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.06.2020, 16:07
Beitrag #3
RE: Zwei Richtungen mit einem Taster
(16.06.2020 14:17)FoxFactoy schrieb:  ich habe es mit den If-else Funktionen nicht hinbekommen, welche eignen sich da eher dafür??

Dann zeige doch mal, was du genau gemacht hast. Dann können wir auch besser helfen.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.06.2020, 16:41
Beitrag #4
RE: Zwei Richtungen mit einem Taster
Hallo,

Wie Tommy schon sagte: 4 Zustände -> 4 Variablen um den Zustand zu speichern.
Plus XX Zeiten -> XX Variablen für die Zeiten ( Laufzeit, warten vor Umschaltung , usw. )

Und Dieter sagte ja auch schon: ohne Sketch kaum Hilfe möglich.

Aber Sketch Bitte in Codetags ( # ).

Gruß, Markus

Immer in Stress
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.06.2020, 18:16
Beitrag #5
RE: Zwei Richtungen mit einem Taster
Also dass wäre der Sketch, den ich bis jetzt habe:
Code:
int switchState = 0;

void setup() {
  pinMode(2, INPUT);  //Taster
  pinMode(3, OUTPUT); //Direction Relais
  pinMode(4, OUTPUT); //OnOff Relais
  digitalWrite(4, LOW); //Motor aus
  digitalWrite(3, LOW); //Richtung1
}
void loop () {
  switchState = digitalRead(2);
  digitalWrite(4, HIGH);          //Motor (Richtung1) läuft bis
  if (switchState == HIGH) {  //ich den Taster drücke
    digitalWrite(4, LOW);        //Motor ausschalten
    digitalWrite(3, HIGH);       //Richtung ändern (Richtung2)
    delay(5000);                   //Warte 5 sekunden
    digitalWrite(4, HIGH);     //Motor an (Richtung2)
    delay(3000);                 //Warte 3 sekunden
  }
}
also der motor dreht und auf knopf druck dreht er wieder zurück, aber wieder von Richtung2 auf Richtung1 komme ich nicht weiter, weil wenn ich nochmal if (switchState == HIGH) einfüge, dann geht es gar nicht.
Mit 4 Variablen meint ihr am Anfang nicht nur int SwitchState = 0; sondern auch noch andere.
Wie gesagt ich befasse mich erst seit ein paar Tagen mit dem Arduino. Huh
Gruß Simon
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.06.2020, 20:02
Beitrag #6
RE: Zwei Richtungen mit einem Taster
Du musst in den zusätzlichen Variablen, auch Statusvariable genannt, speichern, welchen Status deine Schaltung gerade eingenommen hat.

Also z.B. vorwaerts = true, oder stop = true, oder rueckwaerts = true.
Wenn du diesen Status dann jeweils abfragst, kannst du darauf reagieren und die Variablen wenn nötig jeweils ändern.

Richtig angeordnet, macht der Sketch dann was er soll.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.06.2020, 22:14
Beitrag #7
RE: Zwei Richtungen mit einem Taster
Hallo,

Also:
Lade dir Bitte erst mal hier oben die Code-Referenz runter.

Danach ließ nochmal unsere Beiträge von Tommy, Dieter und mir genau durch.

Versuche deine Fragen mit der Code Referenz zu beantworten.

Schaue dir mal die Video Tutorials von unserem Mitglid " Der Hobbyelektroniker " an.

Mit den Basics kannst du dein Problem lösen.
Solltest du dann immer noch nicht weiter kommen, kannste nochmal nachfragen.

Gruß, Markus

Immer in Stress
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.06.2020, 10:27
Beitrag #8
RE: Zwei Richtungen mit einem Taster
Also ich habe jetzt ein paar tutorials vom Hobbyelektroniker geschaut und die Code Referenz hatte ich auch schon davor.
Ich habe das ganze jetzt mal so gemacht, dass der Wert von SwitchState nach dem ersten Wechsel wieder zurückgesetzt wird:
Code:
const int Taster = A5;
const int Richtung = A4;
const int OnOff = A3;

int switchState = 0;

void setup() {
  Serial.begin(9600);
  pinMode(Taster, INPUT);  //Taster
  pinMode(Richtung, OUTPUT); //Direction Relais
  pinMode(OnOff, OUTPUT); //OnOff Relais
  digitalWrite(OnOff, LOW);
  digitalWrite(Richtung, LOW);
  Serial.println("System bereit!");
  digitalWrite(OnOff, HIGH);
  Serial.println("Seilbahn in Richtung 1 an");
}
void loop () {
  switchState = digitalRead(Taster);
if (switchState == HIGH) {
Serial.println("Taster gedrückt1");
digitalWrite(OnOff, LOW);
digitalWrite(Richtung, HIGH);
Serial.println("Warte");
delay(3000);
digitalWrite(OnOff, HIGH);
Serial.println("Seilbahn in Richtung 2 an");
delay(2000);
Serial.println("Erster Wechsel vollzogen");
}

switchState = 0;

if (switchState == HIGH) {
Serial.println("Taster gedrückt2");
digitalWrite(OnOff, LOW);
digitalWrite(Richtung, LOW);
Serial.println("Warte");
delay(3000);
digitalWrite(OnOff, HIGH);
Serial.println("Seilbahn in Richtung 1 an");
delay(2000);
Serial.println("Zweiter Wechsel vollzogen");
}

switchState = 0;
}
Falls ihr euch wundert, dass ich hier analoge Eingänge als digitale Verwende auf den digitalen Eingängen meines UNO hängt gerade mein lcd Display und ich habe keine Lust das abzustöpseln.
Das Programm funktioniert schon fast so, wie ich das will, außer dass der Arduino immer nur den ersten Wechsel macht, wenn ich drücke.
Hab ich da einen Fehler gemacht oder funktioniert das so gar nicht??
Gruß Simon
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Zwei Arduinos via Bluetooth koppeln schaarva 19 1.412 25.06.2020 14:34
Letzter Beitrag: schaarva
  Arduno + Ethernet-Shield: HTML-Seite mit Taster für einmalige Auslösung RivaDynamite 1 147 22.06.2020 20:50
Letzter Beitrag: Tommy56
  Betätigung d. Sensors soll Steuerung abschalten und nur über Taster einschalten Floydi 12 746 26.04.2020 07:47
Letzter Beitrag: MicroBahner
  Funk Fernbedienung Taster Abfrage kurz oder lange gedrückt Michi_exe 15 727 16.04.2020 17:19
Letzter Beitrag: Tommy56
  8 Bool zu einem (Transport-) Byte? SpaghettiCode 4 413 13.04.2020 23:29
Letzter Beitrag: Corvus
  Stepper Motor mit zwei Taster bedienen / Fehler ohne Fehlermeldung Milano 6 611 21.03.2020 16:06
Letzter Beitrag: MicroBahner
Question "Bobbycar LED" - 2 Fragen (Mehrere Taster: Unterprog. Abbrechen / Einfacher "Code" ?) KlausGuenther 13 1.122 19.03.2020 14:09
Letzter Beitrag: Tommy56
  E293D Motor Shield mit Taster bedienen Milano 17 1.128 16.03.2020 20:34
Letzter Beitrag: Milano
  sketch mit 2 anstatt einem joystick ardutobias 0 337 14.03.2020 23:54
Letzter Beitrag: ardutobias
  Stepper Steuerung mit Taster und Endschalter Milano 10 1.131 27.02.2020 14:34
Letzter Beitrag: hotsystems

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste