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.

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 ?

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.

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
Brick Welcher FTP Client um mehrere Dateien auf den Server zu schieben. derAllgaeuer 27 1.028 Gestern 21:27
Letzter Beitrag: Bitklopfer
Lightbulb mehrere Funktionen mit Schalter mechastef 5 343 18.08.2017 21:24
Letzter Beitrag: mechastef
  Taster an Interrupt - Prellen geschickter vermeiden als millis() zu prüfen? Flap 19 1.380 04.08.2017 08:10
Letzter Beitrag: Binary1
  Servo mit einem Taster und 433mhz steuern Thor Wallhall 63 2.334 29.07.2017 11:02
Letzter Beitrag: Thor Wallhall
  Taster als Schalter -> Blinker bino29 8 540 22.06.2017 07:21
Letzter Beitrag: hotsystems
Smile Motorsteuerung mit Taster Eggi123 11 719 26.02.2017 15:48
Letzter Beitrag: MicroBahner
  Arduino-UNO LED über Taster digital zum leuchten zu bringen IvKriz 9 592 18.02.2017 08:33
Letzter Beitrag: renid55
  Hilfe bei Taster huber5093 11 571 14.02.2017 19:26
Letzter Beitrag: Tommy56
  Mehrere HX711 mit einem Arduino Uno be14b029 5 529 08.02.2017 18:09
Letzter Beitrag: Binatone
  8 Taster an einem Pin Kitt 9 737 04.02.2017 18:51
Letzter Beitrag: ardu_arne

Gehe zu:


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