Go Down

Topic: Button und switch case & Zähler (Read 588 times) previous topic - next topic

beginner34

Hallo an alle. Das Forum ist spitzte :D . 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! XD

Marco

pylon

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.

jurs


Ü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: [Select]

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.

Go Up
 

Quick Reply

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Warning: this topic has not been posted in for at least 120 days.
Unless you're sure you want to reply, please consider starting a new topic.

Note: this post will not display until it's been approved by a moderator.
Name:
Email:

shortcuts: alt+s submit/post or alt+p preview