mehrere Schrittmotoren (28BYJ-48) nutzen Anfänger (Gelöst)

Servus

wie kann ich mehrere Schrittmotoren (4 Stück) an einem Arduino anschließen sprich wie muss ich das in dem Code machen?

Die Pins für den ersten gibt mir ja das Programm vor, aber wie kann/ muss ich ihm nun sagen das ich mehrere Motoren nutzen möchte

Ablauf:

Roboterarm -> Ansteuerung über Fernbedienung (IR) -> Tastendruck auf Fernbedienung -> Motor 1 dreht sich -> druck auf andere Taste der Fernbedienung -> motor 2 dreht sich

hier mein Programm (Beta)

#include <IRremote.h>


#include <Stepper.h>

//www.elegoo.com
//2016.12.12


/*----- Variables, Pins -----*/
#define STEPS  32   // Anzahl der Schritte pro Umdrehung der Innenwelle
int  Steps2Take;  // 2048 = 1 umdrehung
int receiver = 12; // Signal Pin des IR-Empfängers an Arduino Digital Pin 6

/*-----( Declare objects )-----*/
// Einrichten der richtigen Sequenzierung für Motor Driver Pins
// In1, In2, In3, In4 In der Reihenfolge 1-3-2-4

Stepper small_stepper(STEPS, 8, 10, 9, 11);
IRrecv irrecv(receiver);    // Erstellen Instanz von 'irrecv'
decode_results results;     // Erstellen Instanz von 'decode_results'

unsigned long lastCode; 		// Define variable to store last code received mein code


void setup()
{ 
  irrecv.enableIRIn(); // Startet den Empfänger
  
  // serial init.
   Serial.begin(9600);
   Serial.println("Start");
    
}



void loop()
{
  if (irrecv.decode(&results)) //Haben wir ein IR-Signal erhalten?
  {
    Serial.print("Taste: ");
    Serial.print(results.value);
    Serial.print(" / hex: ");
    Serial.println(results.value, HEX);
    
    // hier ich
      
    switch(results.value)
    {
      case 0xFFFFFFFF: // wiederholen
          break;
      case 16754775: // VOL - Taste gedrückt 0xFFA857
          Steps2Take  =  50;  // CW drehen
          break;
      
      case 16736925: // VOL+ Taste gedrückt
          Steps2Take  =  -50;  // CCW drehen
          break;  
    }
  
    small_stepper.setSpeed(200); //Max scheint 500 zu sein
    small_stepper.step(Steps2Take);  



    
      irrecv.resume(); // Erhalten den nächsten Wert
      
               // schaltet alles aus wenn nicht bleibt motor aktiv/haltemoment??? Temperatur 
                
                digitalWrite(8, LOW); 
                 digitalWrite(9, LOW);
                 digitalWrite(10, LOW);
                 digitalWrite(11, LOW);      
                
  }  


}/* --end main loop -- */

Mein Problem ist das ich keine Ahnung hab wie ich dem Arduino beibringen kann das ich mehrere Motoren hab

vielleicht hat einer von euch einen passenden link oder einen Beispielcode für einen Anfänger wie mich

Danke

In dieser Zeile legst Du die Pinbeleging fest:

Stepper small_stepper(STEPS, 8, 10, 9, 11);

Da könntest Du 4 Zeilen draus machen:

Stepper small_stepper1(STEPS, 8, 10, 9, 11);
Stepper small_stepper2(STEPS, x, y,z, a);  // andere Pins
...

Da die Standard-Stepperlib blockiert, kann es da aber Probleme mit IR und mehreren Motoren geben.
Du solltest Dir besser die Accelstepper-Lib snschauen.

Gruß Tommy

ok vielen dank, was meinst du mit "blockiert"

Hi

Solange ein Motor dreht, wird NICHTS Anderes gemacht.
Wenn Du pro erkanntem IR-Befehl nur einen Schritt machst, wird Das kaum auffallen, wenn Du aber komplexere Befehle senden willst oder während ein Motor bereist dreht, einen anderen Motor ansteuern willst, klappt Das nicht - da Deine verwendete Stepper-Lib das Programm so lange anhält, bis der Befehl ausgeführt wurde - da kannst Du auf der Fernbedienung drücken, wie Du willst - die IR-Empfangs-Routiene kommt nicht dran, um Das zu sehen.

MfG

Ich habe keine Stepper.h - bei mir sind die Files alle klein geschrieben - welche Lib benutzt Du?
(allerdings benutze ich auch Linux, wo Groß- und Kleinschreibung in File-Namen unterschieden wird, bei mir ist die Stepper.h was Anderes, als eine stepper.h).

damit kann ich leben vielleicht in der zweiten Version,

vielen Dank

wie kann/ muss ich diesen Beitrag als erledigt markieren?