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
mehrere Taster entprellen
19.10.2016, 20:02
Beitrag #1
mehrere Taster entprellen
hi all,

ich möchte mehre Taster entpellen.
Komme nicht drauf.

Mein Code ist nur ein Test zum testen, ich will mit mehrere Taster und Schalter nur unterschiedliche Pins von Low auf High und von High auf Low schalten.

Mit einen klappt das ja wunderbar, aber wie mache ich das mit mehren Tastern?
Code:
const int schalterPin = 11;
const int buttonPin = 12;    // the number of the pushbutton pin
const int ledPin_1on = 2;      // the number of the LED pin
const int ledPin_1off = 1;

// Variables will change:
int ledState = HIGH;         // the current state of the output pin
int buttonState;             // the current reading from the input pin
int lastButtonState = LOW;   // the previous reading from the input pin

unsigned long lastDebounceTime = 0;  
unsigned long debounceDelay = 50;  

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(schalterPin,INPUT);
  pinMode(schalterPin, HIGH);
  pinMode(ledPin_1on, OUTPUT);
  pinMode(ledPin_1off, OUTPUT);
  digitalWrite(buttonPin, HIGH);

  // set initial LED state
  digitalWrite(ledPin_1on,ledState);
}

void loop() {
  // read the state of the switch into a local variable:
  int reading = digitalRead(buttonPin);

  if (reading != lastButtonState) {
        lastDebounceTime = millis();
  }
  if ((millis() - lastDebounceTime) > debounceDelay) {
    if (reading != buttonState) {
      buttonState = reading;
      if (buttonState == HIGH) {
        ledState = !ledState;
        digitalWrite(ledPin_1on, ledState);
        digitalWrite(ledPin_1off, !ledState);
      }
    }
  }
  lastButtonState = reading;
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.10.2016, 20:28
Beitrag #2
RE: mehrere Taster entprellen
Warum nimmst du nicht die Library "Bounce" ?
Ich habe die zwar bisher noch nicht eingesetzt, aber die könnte dein Problem lösen.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.10.2016, 21:45 (Dieser Beitrag wurde zuletzt bearbeitet: 19.10.2016 21:45 von Mathias.)
Beitrag #3
RE: mehrere Taster entprellen
Hardware-Seitig entprellen wäre auch noch eine Lösung:
[Bild: Taste.png]
Quelle: http://www.mikrocontroller.net/attachmen.../Taste.png

Somit kann man den Code um einiges einfacher gestallten.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.10.2016, 21:51
Beitrag #4
RE: mehrere Taster entprellen
Bounce schau ich mir morgen früh mal an.

Hardware ist kein Problem. Habe das bisher immer so gemacht. Möchte jetzt mal die Software Variante testen...

Wenn ich die hingekommen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.10.2016, 19:44 (Dieser Beitrag wurde zuletzt bearbeitet: 21.10.2016 19:45 von Kitt.)
Beitrag #5
RE: mehrere Taster entprellen
[/code]Danke für meine Tipps.

Mein Sketch läuft jetzt zwar aber er braucht teilweise relativ lang.

Wie kann ich das denn optimieren?

Code:
#include <Bounce2.h>

//Schalter & Taster
#define schalter_1 12
#define button_1 13
//LEDSc
#define LED_PIN_1on 1
#define LED_PIN_1off 2
#define LED_PIN_2on 4
#define LED_PIN_2off 3
int ledState = HIGH;


Bounce debouncer1 = Bounce();
Bounce debouncer2 = Bounce();
void setup() {
  
  // Setup the button with an internal pull-up :
  pinMode(schalter_1,INPUT_PULLUP);
  pinMode(button_1,INPUT);
  // After setting up the button, setup the Bounce instance :
  debouncer1.attach(schalter_1);
  debouncer1.interval(5);

  debouncer2.attach(button_1);
  debouncer2.attach(5);
  // Setup the LED :
  pinMode(LED_PIN_1on,OUTPUT);
  pinMode(LED_PIN_1off,OUTPUT);
  pinMode(LED_PIN_2on,OUTPUT);
  pincMode(LED_PIN_2off,OUTPUT);
  
  digitalWrite(LED_PIN_1on,HIGH);
  digitalWrite(LED_PIN_2on,HIGH);
}

void loop() {

  // Update Bounce
   debouncer1.update();
   debouncer2.update();
   // Tasterabfragen

   //Schalter1
   if ( debouncer1.fell() ) {
     digitalWrite(LED_PIN_1on, HIGH);
     digitalWrite(LED_PIN_1off, LOW);
   }
   if (debouncer1.rose()){
    digitalWrite(LED_PIN_1on, LOW);
    digitalWrite(LED_PIN_1off, HIGH);
   }
    // Schalter 1 Ende
   // Button1
   if (debouncer2.rose() ) {
      
     ledState = !ledState;
     digitalWrite(LED_PIN_2on,ledState);
     digitalWrite(LED_PIN_2off,!ledState);
     }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.10.2016, 21:08
Beitrag #6
RE: mehrere Taster entprellen
Was meinst du damit "der Sketch läuft lang" ?
Wo und an welcher Stelle und wie hast du das festgestellt ?

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.10.2016, 21:25
Beitrag #7
RE: mehrere Taster entprellen
Schalter klappt wunderbar


Aber der Taster reagiert nicht jeden Tastendruck oder manchmal braucht er bestimmt 1-2 Sekunden bis er die LED wechselt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.10.2016, 21:37
Beitrag #8
RE: mehrere Taster entprellen
2 Dinge die mir bei deinem Sketch auffallen:
Du verwendest für den Button-Pin kein Pullup, warum ?
Du hast an Pin 1 eine Led angeschlossen, das kann Probleme mit der Seriellen Schnittstelle bzw. USB geben.
Pin 0 und Pin 1 sollten beim Uno nicht verwendet werden.
Evtl. ist dein Problem schon damit gelöst.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Taster schalten LEDs mit Schieberegister Sonne 3 321 26.03.2018 20:08
Letzter Beitrag: hotsystems
  LCD Menü per taster Herberto 3 377 21.02.2018 17:56
Letzter Beitrag: Herberto
  LCD Menü per taster Luppi 5 3.524 18.02.2018 12:44
Letzter Beitrag: ardu_arne
  Temperatur mit Taster um +1 erhöhen T100 7 511 09.02.2018 04:58
Letzter Beitrag: T100
  Mehrere Ausgänge mit einem Befehl auf High oder Low setzen dahans 1 582 10.01.2018 12:48
Letzter Beitrag: Tommy56
  led mit taster moankopf 11 860 25.12.2017 23:34
Letzter Beitrag: Chopp
  Ampelschaltung mehrere Befehle möglichst gleichzeitig Jan5663 15 921 15.12.2017 15:46
Letzter Beitrag: Chopp
  Wie Programmiere ich mehrere if-Abfragen? Mr.Purz 7 871 12.12.2017 21:25
Letzter Beitrag: Tommy56
  Taster 1 mal drücken = LED 2 mal blinken oder aufblitzen gordolino 19 2.326 03.11.2017 15:14
Letzter Beitrag: ardu_arne
Question Mehrere HX711 an einem Arduino Nano Lambacher 59 4.562 17.10.2017 09:34
Letzter Beitrag: Tommy56

Gehe zu:


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