Schrittmotor über Fernbedienung steuern

Hallo zusammen,

ich hänge hier an einem Projekt an dem ich (als Newbie) nicht weiterkomme, aber die richtigen Asse wahrscheinlich den Code im Schlaf können.

Also, ich will einen Schrittmotor mit der IR-Fernbedienung steuern.

Ich hab schon den Code soweit dass ich den SM mit ner Taste z.B. um 1000 Schritte vor oder zurückdrehen kann.
Nun würde ich aber gerne auf den Tasten die Schrittzahl eingeben, z.B. 2-0-4-8-> drücken, dass der Motor 2048 Schritte vor macht bzw. 2-0-4-8-< für die Schritte rückwärts.
Keine Ahnung wie ich das anstellen soll, bin noch relativ neu was C+ angeht…

#include "Stepper.h"
#include "IRremote.h"


#define STEPS  32   
int  Steps2Take; 
int receiver = 6; 


Stepper small_stepper(STEPS, 8, 10, 9, 11);
IRrecv irrecv(receiver);    
decode_results results;     
void setup()
{ 
  irrecv.enableIRIn(); 
}

void loop()
{
if (irrecv.decode(&results)) 

  {
    switch(results.value)

    {

      case 0xFF629D: 
                      small_stepper.setSpeed(500); 
                      Steps2Take  =  2048;  
                      small_stepper.step(Steps2Take);
                      delay(2000); 
                      break;

      case 0xFFA857: 
                      small_stepper.setSpeed(500);
                      Steps2Take  =  -2048;  
                      small_stepper.step(Steps2Take);
                      delay(2000); 
                      break;
                      
    }
    
      irrecv.resume();
  }  


}

Hier mal der Code bislang der läuft, aber ich weiß nicht, wie ich mehrere Zahlen hintereinander eingeben kann, wie z.B. 2048 Schritte

NormanIGB:
Nun würde ich aber gerne auf den Tasten die Schrittzahl eingeben, z.B. 2-0-4-8-> drücken, dass der Motor 2048 Schritte vor macht bzw. 2-0-4-8-< für die Schritte rückwärts.

Zunächst alle Zifferntasten dekodieren. Dann ungefähr so (ungetestet):

case 0xFFnnnn:  // Taste 2
  schritte = schritte * 10 + 2;
  break;
...
Steps2Take  =  schritte;
small_stepper.step(Steps2Take);
schritte = 0;
...
Steps2Take  =  -schritte;
small_stepper.step(Steps2Take);
schritte = 0;

Nun, das eigentliche Problem, dass sich mir stellt, ist dass ich die Eingabe mehrstelliger Zahlen nicht implementieren kann, mir fällt dazu kein Code ein.....
Ich kann die Zahlen 1-9 einprogrammieren, ab 10 hörts dann auf....

Wenn du nicht anzeigst, was du bisher empfangen hast, wird das nichts.
Neben den Abschluss-Tasten > und < brauchst du mindestens eine ‘Clear’ Taste.

int Zahl;
switch (received_key) {
case CLEAR: Zahl = 0; break;
case KEY_0:
...
case KEY_9: Zahl = Zahl*10 + getDigit(received_key); break;
case KEY_R: doStepper(Zahl); /* evtl */ Zahl = 0;  break;
case KEY_L: doStepper(-Zahl); break;
}
display(Zahl);

NormanIGB:
Nun, das eigentliche Problem, dass sich mir stellt, ist dass ich die Eingabe mehrstelliger Zahlen nicht implementieren kann, mir fällt dazu kein Code ein.....

Die Beiträge #2 und #4 zeigen, wie es geht, ich beziehe mich auf #2:

  • schritte = 0
  • Taste 2: schritte = 2
  • Taste 0: schritte = 20
  • Taste 4: schritte = 204
  • Taste 8: schritte = 2048
  • Taste >: Motor dreht; schritte = 0

Verstehst Du den Ablauf?