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
Question Mehrere HX711 an einem Arduino Nano Lambacher 59 1.417 17.10.2017 09:34
Letzter Beitrag: Tommy56
  Taster: Wechselschaltung Nordlicht 33 1.730 18.09.2017 09:35
Letzter Beitrag: MicroBahner
Lightbulb mehrere Funktionen mit Schalter mechastef 7 720 21.08.2017 22:34
Letzter Beitrag: SkobyMobil
Brick Welcher FTP Client um mehrere Dateien auf den Server zu schieben. derAllgaeuer 26 1.796 19.08.2017 21:27
Letzter Beitrag: Bitklopfer
  Taster an Interrupt - Prellen geschickter vermeiden als millis() zu prüfen? Flap 19 1.975 04.08.2017 08:10
Letzter Beitrag: Binary1
  Servo mit einem Taster und 433mhz steuern Thor Wallhall 63 2.880 29.07.2017 11:02
Letzter Beitrag: Thor Wallhall
  Taster als Schalter -> Blinker bino29 8 764 22.06.2017 07:21
Letzter Beitrag: hotsystems
Smile Motorsteuerung mit Taster Eggi123 11 879 26.02.2017 15:48
Letzter Beitrag: MicroBahner
  Arduino-UNO LED über Taster digital zum leuchten zu bringen IvKriz 9 738 18.02.2017 08:33
Letzter Beitrag: renid55
  Hilfe bei Taster huber5093 11 731 14.02.2017 19:26
Letzter Beitrag: Tommy56

Gehe zu:


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