Go Down

Topic: einen Taster mehrfach verwenden? (Read 628 times) previous topic - next topic

buffalo64

Hallo

Ich habe eine Frage zur mehrfachen Verwendung eines Tasters:

Ich möchte mit einem Taster einen Ablauf starten. Danach möchte ich diesen Taster anders verwenden, respektive um damit das Display umzuschalten (solange der Taster gedrückt ist, wird am Display etwas anderes angezeigt). Oder geht das nicht und bei jedem Tasterdruck wird der ursprüngliche Ablauf neu gestartet?

Ist dies überhaupt möglich bzw. falls ja, wie muss ich dies anlegen bzw. wonach suchen? Solange ich die Suchbegriffe "Taster" und "mehrfach" verwende, finde ich Lösungen zum Entprellen.

LG
Friedrich

combie

Du möchtest einen einfachen "endlichen Automaten" bauen.

> Das größte Problem, ist die Wahl der richtigen Gedanken <
Frei nach Dale Carnegie

HotSystems

Ja, das ist möglich, wenn du dir in einer Variablen merkst, das der Ablauf schon gestartet wurde und du anschließend andere Funktionen starten möchtest.
Dabei ist natürlich auch ein entprellen nötig.
Du musst aber auch dabei berücksichtigen, dass dein Ablauf irgend wann durchgelaufen ist und wieder neu gestartet werden muss, da muss zuvor die Merker-Variable auch wieder gelöscht werden.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

buffalo64

Ok, danke, hilft mir vorerst weiter.

@Dieter: das ist egal, denn nach dem kompletten Durchlauf ist die Sache erledigt und es wird mit dem Hauptschalter komplett abgeschaltet.

Da fällt mir in diesem Zusammenhang noch ein: ich möchte auch einen Aus-taster (Not-aus) einbauen. Soll ich diesen überhaupt über einen Port abfragen oder ist es einfacher, diesen als Reset auszuführen, da bei einem manuellen Abschalten ohnehin neu gestartet werden soll/ muss?

LG
Friedrich

Tommy56

Ein Notaus sollte immer unabhängig vom Prozessor funktionieren, also rein in Hardware realisiert sein z.B: Stromversorgung unterbrechen.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

Rentner

Hallo,

schau dir mal die "one Buton" Lib an

Taster kurz drücken
Taster 2x kurz drücken
Taster Lang drücken

damit hast Du 3 Funktionen auf einemTaster , die Lib ist leicht verwendbar und Beispiele sind auch dabei.
 

buffalo64

@Tommy: da habe ich mich wohl etwas unglücklich ausgedrückt. Wie ein "richtiger" Not-Aus angeschlossen wird, weiß ich natürlich, auch, dass es ein Öffner sein muss wegen der Drahtbruchsicherheit. Ich möchte einfach nur in den Ablauf dahingehend eingreifen können, dass ich ihn stoppe und zum Anfang zurückkehre, nicht einfach nur pausieren. Darum die Frage, ob ich diesen Taster beim Reset anschließe. Außerdem habe ich noch einen Hauptschalter ca. 4cm daneben, falls Not am Mann ist. Richtlinien zur elektrotechnischen Sicherheit werden natürlich eingehalten.     

@Rentner: danke, aber das wäre mit Kanonen auf Spatzen schließen, soviel benötige ich nicht.

LG
Friedrich                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 

Tommy56

Allgemein gilt: Reset im Programm auszulösen soll nur von schlechter Programmierung ablenken.

Du kannst (fast) alle Abläufe auch gesteuert wieder auf einen definierten Zustand setzen.
Dazu musst Du das Problem aber konkret analysieren. Die allgemeinen Bemerkungen, die Du bisher abgegeben hast, genügen dazu nicht.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

combie

Notaus:
Quote
dass ich ihn stoppe und zum Anfang zurückkehre,
Ein Notaus sollte die Anlage stoppen.
Alle Aktoren von der Steuerung abwerfen.
Die Anlage muss in einen sicheren Zustand fallen.
Gerne per Federspeicher oder Schwerkraft.

Ein "zum Anfang zurückkehren" wäre eine Aktivität, im Notaus Zustand.
Das verbietet sich in der Regel.


Man muss also wirklich und ernsthaft entscheiden, ob der Taster ein Notaus sein soll, oder ein einfaches Bedienelement der Steuerung.
In beiden Fällen hat das Bedienelement nichts am Resetpin zu suchen.


Quote
Allgemein gilt: Reset im Programm auszulösen soll nur von schlechter Programmierung ablenken.
In den meisten Fällen sicherlich richtig.
Auch wenn ich es anders formulieren würde.


> Das größte Problem, ist die Wahl der richtigen Gedanken <
Frei nach Dale Carnegie

buffalo64

Ok, ich hab's kapiert. Dachte nur, dass dies einfach ist und keinen Port belegt. Ist somit vergessen.

Nochmal: Notaus brauche ich nicht, da es keine sicherheitsrelevanten Probleme geben wird/ kann. Hatte mich nur unglücklich ausgedrückt.

LG
Friedrich

combie

Quote
Notaus brauche ich nicht,
Also ein normales Bedienelement....

Dann:
Ich wiederhole mich gerne, für dich.
Du möchtest einen einfachen "endlichen Automaten" bauen.
> Das größte Problem, ist die Wahl der richtigen Gedanken <
Frei nach Dale Carnegie

buffalo64

...
Dann:
Ich wiederhole mich gerne, für dich.

Danke schön, dann sehe ich mir die Tutorials von agmue mal durch, die sind mir gerade ins Auge gehüpft...

agmue

Danke schön, dann sehe ich mir die Tutorials von agmue mal durch, die sind mir gerade ins Auge gehüpft...
Die sind schon etwas angestaubt, ich habe sie immer entsprechend meines Kenntnisstandes geschrieben. Mit "agmue anleitung" als Suche im Forum zu finden. Bitte auch die Links zu anderen Autoren beachten, die haben es manchmal besser gemacht.
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

buffalo64

Die sind schon etwas angestaubt, ......
Passt schon,  ich auch   ;)

buffalo64

Ich habe es jetzt mit If-Abfragen und einer Schleife gelöst. Millis brauche ich dann aber an anderer Stelle auch, so wie jetzt ist für mich übersichtlich.
Kann man das so machen oder ist das programmtechnisch "schlecht"?
Code: [Select]
[code]
bool Run = 0;                           
int START = 7;
int Rot = 9;
int Gelb = 10;
int Gruen = 11;


void setup() {
  pinMode (Rot, OUTPUT);
  pinMode (Gelb, OUTPUT);
  pinMode (Gruen, OUTPUT);
  pinMode (START, INPUT_PULLUP);

  Serial.begin(9600);

}

void loop()
{
  Serial.println(Run);
 

  if (digitalRead(START) == LOW){
    Run = 1;
  }

  if (Run == 1){
   
    for (int i = 0; i < 1001; i++) {
      Serial.println(i);
      Serial.println();

      digitalWrite(Gelb, HIGH);
      digitalWrite(Gruen, HIGH);
      digitalWrite(Rot, LOW);


      if (digitalRead(START) == LOW) {
          digitalWrite(Gruen, LOW);
          digitalWrite(Rot, HIGH);
      }
 
      if (i == 1000)
      {
          Run = 0;
      }

    }
  }
  else {
    digitalWrite(Gelb, LOW);
    digitalWrite(Rot, LOW);
    digitalWrite(Gruen, LOW);
  }

 
}






[/code]

Go Up