Variablen mit Encoder????

Hallo zusammen, ich hätte da mal eine Frage. :slight_smile:
Ich möchte Werte von einem Encoder( Alps ( 1, 2, 3, 4......)) in Variablen speichern und zwar in mehreren Variablen ( oder Array??) und diese möchte ich mit einem Tastendruck bestätigen und gleichzeitig den Encoderwert wieder auf null setzen.
Meine Idee wäre jetzt, Encoderwert wird an A übergeben und Taste 1 wird drückt, Encoderwert wird wieder null. Jetzt wird Encoder erneut gedreht und Wert würde jetzt wieder an A übergeben aber das soll er nicht, sondern er soll an B übergeben werden. Würde es gehen, wenn ich A != B und Taste 1 drücken vergleiche? Ich benötige ca. 5 Zeitwerte ( zB: 5s , 10s, 43s,... ) die ich mit dem Encoder zähle, sie dienen zB. als Delay Zeiten. ( wurde Taste 1 gedrückt und ist A > 0 ,dann Wert = B ??????????? Encoderwert = 0 ; )
Würde das funktionieren? auch mit einem Array? oder sind Variablen besser? Ich hoffe meine Idee ist soweit klar?? :slight_smile:

Arduino Uno, AS 6,

Tschau Marco

Array mit index. Bei jedem Tastendruck (entprellen!!) den index des Arrays erhöhen.

tastendruck:
   Encoderwert in Array[index] abspeichern
   Encoderwert auf 0 stellen
   indes ++

Grüße Uwe

Danke Uwe, werde ich mal versuchen. Kann ich das Array aus anderen Funktionen heraus aufrufen und auslesen? oder muß ich es übergeben wie eine Variable?? :slight_smile:

Gruß Marco

Wenn das Array eine globale Variable ist dann ist sie in allen Funktionen gültig.
Grüße Uwe

Am einfachsten du machst das Array als globale Variable.

Alternativ kannst du Arrays auch als Paramter übergeben, da Arrays in C nur Pointer auf das erste Element sind.

void loop()
{
      int test[] = { 1, 2, 3 };     //Vorsicht. Hier wird das Array bei jedem Durchlauf neu initialisiere. Das ist so wahrscheinlich nicht gewünscht
     
      func(test);
}

void func(int* test)
{
     test[0]++;
}

Du kannst noch die Größe des Arrays als 2. Parameter übergeben falls nötig.

Man kann das Array “static” deklarieren, dann wird es nur bei ersten Aufruf initialisiert und behält danach den neuen Wert bei.

Danke für die schnelle Hilfe! :slight_smile: :slight_smile: :slight_smile: :slight_smile: :slight_smile: :slight_smile:

Gruß Marco