Go Down

Topic: wie berechne ich 11 analoge tasten (Read 1 time) previous topic - next topic

noiasca

#15
Jan 04, 2019, 09:32 pm Last Edit: Jan 04, 2019, 09:33 pm by noiasca
hängst halt ein if runderhum wenn es dich stört:

Code: [Select]

if (buttonsPinValue<470 ||  buttonsPinValue >475)
{
    Serial.print("Taste: ");
    Serial.print(pressedButton);
    Serial.print('\t');
    Serial.println(buttonsPinValue);
}


*ungeprüft*
how to react on postings:
- post helped: provide your final sketch, say thank you & give karma.
- post not understood: Ask as long as you understand the post
- post is off topic (or you think it is): Stay to your topic. Ask again.
- else: Ask again.

RuDaIno

und wo muss ich dies einfügen, wenn ich es am schluss ergänzend zum Serial.print teil hinzufüge, schreibt es einfach "taste:" nicht mehr.
nun, wenn es nur ein optischer schönheitsfehler ist und es das arduino nicht unnötig beschäftigt, kann ich es auch so sein lassen wie es ist. im finalen zustand kann ich die werte eh nicht abfragen, dann soll es einfach die mp3 playlists starten.

Doc_Arduino

Hallo,

dem Arduino ist das egal. Nur dein Terminal wird immer beschrieben, dass ist unschön, reiner Schönheitsfehler, macht keinen Schaden, aber eben unschön. Deswegen ändern wir das noch ab so wie du das schon bei dir hattest, nur an der neuen Ausgabestelle. 0 Ausgabe wird unterdrückt bzw. rausgefiltert. Ob nun ungleich oder größer 0 ist egal. Den analogen Bereich für die "Taste 0" hatte ich komplett rausgenommen, weil der von dir nicht benötigt wurde. Deswegen gibts dafür auch keinen "case".

Das case switch ist hier im Grunde nur die lesbarere Form deines Codewurms der Bereichsabfragen mit if. Wenn du irgendwann enums verwendest wird du switch case lieben lernen.

Spiel damit rum, nimm paar breaks raus, ändere default, teste und habe deinen Spass. "Nebenbei" liest du in einem Buch was die Funktionen machen.

Apropo Terminal Schönheitsfehler. Wenn ich ich Baudraten von 250k arbeite und ohne Pause Daten ausgeben lasse, dann geht irgendwann das Terminal fest. Zeigt keine Reaktion mehr. Dann hilft nur den Java Prozess zu beenden.

Code: [Select]

byte CheckButtons()
{
  static unsigned long last_ms = 0;
  byte pressedButton = 0;
    
  if (millis() - last_ms > 30) {
    last_ms = millis();
    unsigned int buttonsPinValue = analogRead(buttonsPin);
  
    switch (buttonsPinValue) {
      case 824 ... 1023:  pressedButton = 6;
                          break;
      case  726 ... 823:  pressedButton = 5;
                          break;
      case  650 ... 725:  pressedButton = 4;
                          break;
      case  587 ... 649:  pressedButton = 3;
                          break;
      case  536 ... 586:  pressedButton = 2;
                          break;
      case  493 ... 535:  pressedButton = 1;
                          break;
      case  401 ... 450:  pressedButton = 11;
                          break;
      case  341 ... 400:  pressedButton = 10;
                          break;
      case  268 ... 340:  pressedButton = 9;
                          break;
      case  179 ... 267:  pressedButton = 8;
                          break;
      case    0 ... 178:  pressedButton = 7;
                          break;
      default:  break;
    }

    if (pressedButton != 0) {
      Serial.print("Taste: ");
      Serial.print(pressedButton);
      Serial.print('\t');
      Serial.println(buttonsPinValue);
    }
  }
  
  return pressedButton;
}

Wenn es sich nicht vermeiden lässt kann ich mir deinen Sketch anschauen. Versprechungen mache ich jedoch keine in der Form ob ich Änderungen vornehme oder nur Hinweise gebe.
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

Go Up