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
  Taster für mehrere Funktionen matthias3579 5 353 16.08.2016 16:00
Letzter Beitrag: StephanBuerger
  Steuern von 4 Servo mittels eines Taster und eines Potis Jackie09 17 758 16.07.2016 11:43
Letzter Beitrag: Binatone
  Mehrere Wertabfragen blebbens 5 374 18.06.2016 22:58
Letzter Beitrag: Scheams
  2 und mehrere Led´s mit Fernbedienung AN / AUS + Blinkfunktion Golffahrer 22 944 07.06.2016 11:31
Letzter Beitrag: hotsystems
  Schwellwert mit Taster ändern malsehen 16 1.415 12.04.2016 20:11
Letzter Beitrag: malsehen
  Mehrere Abläufe gleichteitig mit "Millis" MarkusSpielt 3 670 11.04.2016 18:23
Letzter Beitrag: MarkusSpielt
  3 Schrittmotoren, 2 LED's 1 Taster cichla 0 394 31.03.2016 15:21
Letzter Beitrag: cichla
  Arduino Alarmanlage mit Taster erweitern Vengance 0 525 22.03.2016 17:54
Letzter Beitrag: Vengance
  Taster abfragen Rudi 3 692 25.02.2016 14:03
Letzter Beitrag: hotsystems
  Mehrere MCP23017 dynamisch verwenden itsy 5 620 14.02.2016 13:22
Letzter Beitrag: itsy

Gehe zu:


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