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
Constrain-Befehl -wie gehts richtig?
10.03.2016, 16:35 (Dieser Beitrag wurde zuletzt bearbeitet: 10.03.2016 17:20 von ardu_arne.)
Beitrag #1
Constrain-Befehl -wie gehts richtig?
Ein Hallo in die Runde,
gerne möchte ich mit einem Drehgeber etwas steuern. Der Drehgeberwert sollte immer zwischen 30 und 50 liegen.
Da dachte ich mir, dass dies mit dem constrain-Befehl funktioniert und habe daraus einen einfachen Testsketch gebastelt...aber nix ist. Der Monitor zeigt die vom Drehgeber gezählten Werte - ausgehend von 0 - nach plus und minus. Also das rauf und runterzählen tut, aber die Begrenzung der Werte in den gewünschten Bereich funktioniert nicht.
Code:
#include <Encoder.h>
Encoder Zaehler (5, 6);

void setup()  
  {
    Serial.begin(9600);
   }
void loop()
{
  int newZaehler=Zaehler.read();
  constrain(newZaehler,30,50);  
  Serial.println(newZaehler);
}
Was mache ich falsch?

Edit: Codebereich formatiert
Gruß Arne
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.03.2016, 17:22
Beitrag #2
RE: Constrain-Befehl -wie gehts richtig?
Hallo,

Code:
#include <Encoder.h>
Encoder Zaehler (5, 6);

void setup()  
  {
    Serial.begin(9600);
   }
void loop()
{
  int newZaehler=Zaehler.read();
  newZaehler = constrain(newZaehler,30,50);  
  Serial.println(newZaehler);
}

Gruß
Arne

ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.03.2016, 17:32
Beitrag #3
RE: Constrain-Befehl -wie gehts richtig?
(10.03.2016 17:22)ardu_arne schrieb:  Hallo,

Code:
#include <Encoder.h>
Encoder Zaehler (5, 6);

void setup()  
  {
    Serial.begin(9600);
   }
void loop()
{
  int newZaehler=Zaehler.read();
  newZaehler = constrain(newZaehler,30,50);  
  Serial.println(newZaehler);
}

Gruß
Arne
Hi Arne,
danke für die Antwort und es wird der Bereich abgedeckt -Zwischenziel erreicht, ABER:
offensichtlich wird im Hintergrund der "echte Wert" des Drehgebers weiter gezählt, denn wenn ich um 10 Schritte über die 50 hinausdrehe, muss ich auch wieder 11 Schritte zurück, um zur 49 zu gelangen. Ich will aber nicht 11 Schritte zurückdrehen müssen sondern nur einen. Wie bekomme ich den "im Hintergrund mitlaufenden Zähler" manipuliert?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.03.2016, 20:26
Beitrag #4
RE: Constrain-Befehl -wie gehts richtig?
Hallo,
ich kenne die Encoder Library leider nicht, weiß nicht wie die arbeitet und kann deshalb auch keine Lösung anbieten.
Ich glaube zwar nicht dass es etwas bringt, aber du könntest die Variable "newZaehler" global deklarieren.

Gruß
Arne

ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.03.2016, 11:49
Beitrag #5
RE: Constrain-Befehl -wie gehts richtig?
Hallo,

die fast immer mühselige Suche nach den Interna der hoffentlich richtigen Encoder-Lib sagt:

Zaehler.write(newZaehler);

sollte den internen Zähler neu setzen.

Gruß aus Berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.03.2016, 12:32
Beitrag #6
RE: Constrain-Befehl -wie gehts richtig?
Das war der richtige Tipp und ich verspreche in Zukunft die libs genauer zu studieren.

(14.03.2016 11:49)amithlon schrieb:  Zaehler.write(newZaehler);

sollte den internen Zähler neu setzen.

------------------------------------------------------------------------------------------
Ein Teufelskreis: Kaum macht man es richtig,funktionierts!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.03.2016, 14:09
Beitrag #7
RE: Constrain-Befehl -wie gehts richtig?
Hallo Nimes,

genau so ein Codeschnipsel brauche ich demnächst auch.

Kannste mir mal den kompletten Codeschnipsel posten?
Wo kommt das Zaehler.write(newZaehler); denn hin?

Gruß, Andy
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.03.2016, 15:39
Beitrag #8
RE: Constrain-Befehl -wie gehts richtig?
Hi Andy,
hier der Codeschnipsel:
PHP-Code:
int newZaehler;
#include <Encoder.h>
Encoder Zaehler (56);
void setup()  
      {
        
Serial.begin(9600);
       }
void loop()
    {
     
newZaehler=Zaehler.read();
   
     if(
newZaehler<30){Zaehler.write(30);}    
     if(
newZaehler>50){Zaehler.write(50);}
   
      
Serial.println(Zaehler.read());
      
Serial.println(newZaehler);
        
   } 
Ich hoffe dir hilft es ...und die korrekte Position der write-Funktion ist auch von Wichtigkeit!
Gutes Gelingen

------------------------------------------------------------------------------------------
Ein Teufelskreis: Kaum macht man es richtig,funktionierts!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
Question Rechnen in C - Was ist denn nun richtig? Stephan_56 17 1.233 27.03.2016 11:31
Letzter Beitrag: ardu_arne
  LCD schreibt mal richtig,mal Krickel? malsehen 14 994 21.03.2016 09:21
Letzter Beitrag: hotsystems
  Über Pin43 den Pin42 steuern, ist das so richtig? arduinofan 5 490 01.02.2016 21:01
Letzter Beitrag: ardu_arne
  Frage zu Befehl in UTFT-Lib: Screen 180° drehen? ? HaWe 8 1.775 12.09.2015 13:56
Letzter Beitrag: HaWe
  C-Code für eine substring-Funktion: richtig ? HaWe 1 671 27.05.2015 14:01
Letzter Beitrag: HaWe
  ? ShiftOut-Befehl richitg nutzen ? Samweis 3 1.289 29.03.2015 12:45
Letzter Beitrag: Thorsten Pferdekämper
  Eingang analog oder digital? Wie macht man es richtig? Gelegenheitsbastler 3 986 25.03.2015 15:45
Letzter Beitrag: Bitklopfer
  [gelöst:] A.Mega: Pin4 bei Programmstart richtig setzen HaWe 0 587 28.09.2014 09:53
Letzter Beitrag: HaWe
  Wird der "print"-Befehl auch ohne Zugriff über Konsole abgearbeitet? itsy 8 1.371 18.06.2014 17:28
Letzter Beitrag: rkuehle
  Stop Befehl während einer Void - Loop lezz89 13 12.754 17.01.2014 19:40
Letzter Beitrag: demokrit

Gehe zu:


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