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
Dauer des Tastendrucks erkennen - wie?
05.12.2015, 13:32
Beitrag #1
Dauer des Tastendrucks erkennen - wie?
Hallo,

ich möchte einen Taster für mehrere Aktionen nutzen. Damit die Aktionen nicht durch zufälligen Druck auf den Taster ausgelöst wird, sollen sie wie folgt ausgelöst werden:

2 Sekunden drücken - ein Pin geht auf HIGH
4 Sekunden drücken - ein anderer Pin geht auf HIGH
6 Sekunden drücken - beide Pins gehen auf LOW

Ich habe es testweise erst mal mit drei Sekunden probiert, komme aber nicht weiter. Das Problem ist, dass ein mehrmaliges Drücken das Ereignis genau so auslöst, wie ein dreisekündiges Drücken.

Gehe ich das Problem falsch an? Gibt es vielleicht eine bessere Lösung als "millis"?


Code:
const int ledPin =  1;      // the number of the LED pin
const int buttonPin = 2;    // the number of the pushbutton pin

int ledState = LOW;             // ledState used to set the LED


unsigned long previousMillis = 0;        // will store last time LED was updated
const long interval = 3000;           // interval at which to blink (milliseconds)

void setup() {
  // set the digital pin as output:
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT);
}

void loop()
{
  unsigned long currentMillis = millis();
  int reading = digitalRead(buttonPin);

    if (reading == HIGH){
      
  if(currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;

    
      ledState = HIGH;



  }
}

if (ledState == HIGH) {
  digitalWrite(ledPin, HIGH);
}
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.12.2015, 14:15 (Dieser Beitrag wurde zuletzt bearbeitet: 05.12.2015 14:16 von hotsystems.)
Beitrag #2
RE: Dauer des Tastendrucks erkennen - wie?
Millis ist hier schon ok, aber du solltest das mit einer "while-Schleife" abfragen.

Z.B.:
Code:
long millis_alt = millis;

while ((millis_alt + 2000) < millis) {

}
Das sollte für 2 Sekunden funktionieren, aber nicht getestet.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.12.2015, 16:50
Beitrag #3
RE: Dauer des Tastendrucks erkennen - wie?
Hi,
und nicht vergessen... Taster prellen auch...also ohne das im Code zu berücksichtigen wird es nichts...

...nur mal so als Denkanstoß...

lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.12.2015, 10:01
Beitrag #4
RE: Dauer des Tastendrucks erkennen - wie?
Moin

Habe Grade diesen Code versucht dar ich mich für so einen Lösung interessiere, aber bei mir geht gleich die LedPin auf "HIGH" ohne die 3000 millis delay.

Mit freundliche grüßen
Andreas
--
Es tut mir Leid dass ich nicht immer oder direkt ihre Antwort verstehe, durch Konzentration Probleme ist es für mich leichter zu lehren durch "Learning by seeing" bitte um Verständnis.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.12.2015, 10:26
Beitrag #5
RE: Dauer des Tastendrucks erkennen - wie?
Zitat:Konfuzius sagt:
Du sollst keinen fremden Code benutzen, ohne zu wissen, was Du da machst

Konfuzius hat recht. Cool

Aber ich bin Grade mit Arduino angefangen und versuche mich mit verschneide Codes schlau zu machen

Benutze einen Arduino Uno und Arduino IDE

Code:
const int ledPin =  13;      // the number of the LED pin
const int buttonPin = 2;    // the number of the pushbutton pin

int ledState = LOW;             // ledState used to set the LED

unsigned long previousMillis = 0;        // will store last time LED was updated
const long interval = 3000;           // interval at which to blink (milliseconds)
void setup() {
  // set the digital pin as output:
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT);
}

void loop()
{
  unsigned long currentMillis = millis();
  int reading = digitalRead(buttonPin);

  if (reading == HIGH)
{
    if (currentMillis - previousMillis >= interval)
{
      previousMillis = currentMillis;
      ledState = HIGH;
    }
  }

  if (ledState == HIGH)
{
    digitalWrite(ledPin, HIGH);
  }
  else
  {
digitalWrite(ledPin, LOW);
  }
}


Ich versuch nichts zu klauen, aber nur mit die Beispielen zu lehren.Blush

Mit freundliche grüßen
Andreas
--
Es tut mir Leid dass ich nicht immer oder direkt ihre Antwort verstehe, durch Konzentration Probleme ist es für mich leichter zu lehren durch "Learning by seeing" bitte um Verständnis.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.12.2015, 10:43
Beitrag #6
RE: Dauer des Tastendrucks erkennen - wie?
Nein nur ein widerstand von GND nach Pin 2.

Mit freundliche grüßen
Andreas
--
Es tut mir Leid dass ich nicht immer oder direkt ihre Antwort verstehe, durch Konzentration Probleme ist es für mich leichter zu lehren durch "Learning by seeing" bitte um Verständnis.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.12.2015, 12:05
Beitrag #7
RE: Dauer des Tastendrucks erkennen - wie?
(07.12.2015 10:26)Atwist schrieb:  
Zitat:Konfuzius sagt:
Du sollst keinen fremden Code benutzen, ohne zu wissen, was Du da machst

Konfuzius hat recht. Cool

Aber ich bin Grade mit Arduino angefangen und versuche mich mit verschneide Codes schlau zu machen

Benutze einen Arduino Uno und Arduino IDE
Warum versuchst du es nicht mit Beispielen aus der IDE (Taster und LED)?
Die funktionieren sicher und da kannst du besser dran über, als an einem Sketch der nicht funktioniert.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.12.2015, 12:44
Beitrag #8
RE: Dauer des Tastendrucks erkennen - wie?
Ja okay danke für die Hinweis

Mit freundliche grüßen
Andreas
--
Es tut mir Leid dass ich nicht immer oder direkt ihre Antwort verstehe, durch Konzentration Probleme ist es für mich leichter zu lehren durch "Learning by seeing" bitte um Verständnis.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Telefon-Nummer erkennen - Schaltung auslösen harryba 4 250 13.10.2016 10:12
Letzter Beitrag: hotsystems
  SoftwareSerial Baudrate automatisch korrekt erkennen - geht das? Gelegenheitsbastler 5 528 21.04.2016 12:32
Letzter Beitrag: SkobyMobil
  Objekt mehrfach erkennen Zerebrator 1 441 02.08.2014 12:25
Letzter Beitrag: Bitklopfer
  Automatisches Erkennen verschiedener USB-Eingabegeräte DbAd 7 2.459 30.10.2013 17:33
Letzter Beitrag: rkuehle

Gehe zu:


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