Forum: Mikrocontroller und Digitale Elektronik Arduino FlipFlop Schaltung ein/aus schalten


von Sebastian P. (sebastian_p37)


Lesenswert?

Hallo zusammen,

ich habe gerade eine FlipFlop Schaltung aufgebaut, die ich mittels eines 
Tasters ein und ausschalten möchte.

Das einschalten mit einer endlosschleife geht. Nun möchte ich den code 
soweit erweitern, dass ich die Schaltung mit dem gleichen Taster wieder 
ausschalten kann.

Und komme nicht darauf, wie ich den code entsprechend erweitern soll.

Nun möchte ich gerne einen Tipp bekommen und bitte keine Lösung ;-)
Mag gerne selber drauf kommen.

Schon mal danke im voraus :-)

Der Code:

int ledPin1=11;
  int ledPin2=12;
  int buttonPin=3;
  int i;

  void setup(){
    pinMode(ledPin1,OUTPUT);
    pinMode(ledPin2,OUTPUT);
    pinMode(buttonPin,INPUT);
  }

  void loop()
  {


    if (digitalRead(buttonPin)==HIGH)
    {
      for (i=0;i<100;i--)
      {
        digitalWrite(ledPin1,HIGH);
        digitalWrite(ledPin2,LOW);
        delay(300);
        digitalWrite(ledPin1,LOW);
        digitalWrite(ledPin2,HIGH);
        delay(300);
    }
    }
  }

von Wilhelm F. (Gast)


Lesenswert?

Sebastian P. schrieb:

> Nun möchte ich gerne einen Tipp bekommen und bitte keine Lösung ;-)
> Mag gerne selber drauf kommen.

Es gibt da verschiedenes, wie man je nach Fall eine Entprellung macht. 
In deinem Fall vielleicht ein Timer-Interrupt, worin die Entprellung 
bearbeitet wird. Man speichert dann dort die Tastenzustände in Bits oder 
Bytes, Speicherzellen, wie auch immer.

von Sebastian P. (sebastian_p37)


Lesenswert?

Danke.
Guter Tip

Ich google mal hier im Forum und melde mich nochmal ;-)

von Sebastian P. (sebastian_p37)


Lesenswert?

So, hab zu dem Thema was gefunden aber kann das gedanklich nicht 
umsetzten :-(

Nun bitte ich um Hilfe für eine Lösung hihi ;-)

Und es wäre nett es ein wenig zu kommentieren, damit ich den Sinn bzw. 
die Gedankenschritte verstehe.

Danke im voraus :-)

von PittyJ (Gast)


Lesenswert?

Wie wäre es mit einer Variablen. (Beschreibung gibt es in jedem besseren 
C-Buch).
Damit könnte man sich einen Zustand merken, und abhängig davon 
unterschiedliche Aktionen ausführen. Das würde wieder mit einem if() 
gehen.

von Wilhelm F. (Gast)


Lesenswert?

Sebastian P. schrieb:

> Danke.
> Guter Tip
>
> Ich google mal hier im Forum und melde mich nochmal ;-)

Es gibt hier anscheinend in der Codesammlung und auch sonst 
Beschreibungen zur Entprellung. Da könntest du über die Forensuche mit 
Stichworten noch mal suchen.

Ich selbst machte mit µC in den Anfangsjahren auch Designfehler, und 
entprellte Tasten direkt in der Main-Schleife. Die Tasten wurden aber 
dort direkt physikalisch auf Prellung untersucht, das ist eine Sache von 
einer Milisekunde, und dank Assemblercode gab es auch nie zeitliche 
Stockungen. Moderner würde ich eine Tastenfilterung mit dem 
Timer-Interrupt machen, in Zeitabständen, die unter der menschlichen 
Reaktionszeit liegen, z.B. mit 50Hz. Da hat man mit der direkten 
Prellung nichts zu tun.

Für einen anderen Fall benötigte ich wiederum die Tastenprellung direkt. 
Z.B. Software-Single-Step auf einem 8085 oder 8051. Das Programm mußte 
da an Ort und Stelle stehen bleiben, und irgendwas an LEDs oder seriell 
aus geben. Das geht über Filterung mit Timern gar nicht, die Taste muß 
in einer Code-Sequenz direkt entprellt werden.

Also es gibt viele Wege, mögest du den besten finden.

von Sebastian P. (sebastian_p37)


Lesenswert?

hmmm ok,

aber wie lasse ich sonst auf Knopfdruck die LEDs blinken ? Bzw. kann mit 
dem gleichen Taster die LEDs wieder ausschalten ?

Das mit dem entprellen ist mir jetzt noch etwas zu hoch ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.