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 als Schalter -> Blinker bino29 8 170 Heute 07:21
Letzter Beitrag: hotsystems
Smile Motorsteuerung mit Taster Eggi123 11 592 26.02.2017 15:48
Letzter Beitrag: MicroBahner
  Arduino-UNO LED über Taster digital zum leuchten zu bringen IvKriz 9 477 18.02.2017 08:33
Letzter Beitrag: renid55
  Hilfe bei Taster huber5093 11 478 14.02.2017 19:26
Letzter Beitrag: Tommy56
  Mehrere HX711 mit einem Arduino Uno be14b029 5 398 08.02.2017 18:09
Letzter Beitrag: Binatone
  8 Taster an einem Pin Kitt 9 638 04.02.2017 18:51
Letzter Beitrag: ardu_arne
  Mehrere Servos gleichzeitig steuern (Hexapod) scritch 7 515 25.01.2017 08:18
Letzter Beitrag: scritch
  Led Impuls beim Taster betätigen clemens5555 11 633 17.01.2017 20:00
Letzter Beitrag: renid55
  Über drei Taster zwei externe Timer steuern Sidamo 23 830 09.01.2017 20:12
Letzter Beitrag: Tommy56
  Led mit taster ausschalten Frankeg 17 1.002 07.01.2017 21:17
Letzter Beitrag: renid55

Gehe zu:


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