Pages: [1]   Go Down
Author Topic: Button und switch case & Zähler  (Read 571 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 11
Posts: 149
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo an alle. Das Forum ist spitzte smiley-grin . Werde mich hier nun öfters aufhalten!!
Meine Frage: ist es möglich mit einem Button gleich zwei counter zu zählen? Der eine soll das drücken des Buttons zählen und damit switch case ( 3 x case). Wenn in einer case Anweisung möchte ich mit dem gleichem Button und einem anderen counter, das drücken des Buttons zählen. Ohne das der erste counter dadurch weiter gezählt wird. Also Knopf drücken ( anzahl merken) , wechsel in case1, jetzt drücken und zustand merken.
Ich hoffe das die Erklärung verständlich ist?   smiley-red
Wenn es schon eine Anleitung gibt, vielleicht einen Link?
Über die Suche bekomme nur englische Seiten, ich möchte aber nur deutsche Seiten( kann man das in der Suche festlegen?)
 
Besten Dank! smiley-lol

Marco
Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 111
Posts: 5242
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wie willst Du unterscheiden, ob der nächste Tastendruck für den ersten Zähler gilt, oder ob er nun schon den zweiten Zählen nehmen soll. Rein theoretisch könntest Du das über die Zeit machen, aber super anwenderfreundlich scheint mir das nicht.

Zur Suche: Du kannst bei der Suche das Board auswählen, in welchem gesucht werden soll. Wenn Du dort nur "Deutsch" anwählst, kriegst Du auch nur deutsche Resultate.
Logged

Germany S-H
Offline Offline
Faraday Member
**
Karma: 172
Posts: 3237
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Über die Suche bekomme nur englische Seiten, ich möchte aber nur deutsche Seiten( kann man das in der Suche festlegen?)

Ja, kann man.

Wenn Du eingeloggt bist, klicke ganz oben in der Login-Leiste auf Search, dann kommt eine erweiterte Suchfunktion, in der Du das/die zu durchsuchende/n Unterforum/en anklicken kannst unter " Choose a board to search in, or search all".

Die Frage mit Deinem Button klingt für mich sehr merkwürdig.
Vielleicht meinst Du ja einfach sowas:

Code:
void setup() {
 Serial.begin(9600);
}

#define BUTTONPIN 2
#define DEBOUNCETIME 10

boolean buttonPressed()
{
  // einen "high active" geschalteten Button an BUTTONPIN abfragen
  // liefert "true" nach Statusänderung von nicht gerdrückt zu gedrückt
  // liefert false sonst
  static boolean buttonFired;
  static long buttonDownSince;
  boolean State=digitalRead(BUTTONPIN);
  if (State==LOW) 
  { // this button is not pressed at this time
    buttonFired=false;
    buttonDownSince=0;
  }
  else if (State==HIGH && buttonDownSince==0)
  { // button is pressed but DEBOUNCETIME did not yet started counting
    buttonFired=false;
    buttonDownSince=millis();
  }
  if (State==HIGH && millis()-buttonDownSince>=DEBOUNCETIME && buttonFired==false)
  { // button is pressed and DEBOUNCETIME passed, so fire the button
    buttonFired=true;
    return(true); // return pin number of button
  } 
  return(false); // no button fired this time, return invalid pin number
}

boolean gedrueckt;
int counter0,counter1,counter2,counterDefault,fallUnterscheidung=2;
void loop()
{
  gedrueckt=buttonPressed();
  if (gedrueckt)
  {
    switch(fallUnterscheidung)
    {
      case 0: counter0++;break;
      case 1: counter1++;break;
      case 2:counter2++;break;
      default: counterDefault++;break;
    }
  }
}

Falls das irgendwie zeitkritisch ist mit dem Drücken und der Zuordnung der Tastendrücke: Die o.g. buttonPressed Funktion liefert "true" erst NACH Ablauf der Debounce-Zeit, also z.B. 10 Millisekunden.
Logged

Pages: [1]   Go Up
Jump to: