Adafruit Motor Shield v2.3 Stacking Adressierung

Hallo Zusammen.
Ich steht gerade sehr an und hoffe das ihr mir helfen könnt.

Ich hab mehrere Adafruit Motor Shield v2.3 gestapelt und spreche damit schrittmotoren an.
das 0 und 1 Board funktionieren gut und ich konnte sie Ansprechen.

das Board 2 jedoch nicht könnte es daran liegen das ich es falsch adressiert habe laut Herstellte:

Board 0: Address = 0x60 Offset = binary 0000 (no jumpers required)
Board 1: Address = 0x61 Offset = binary 0001 (bridge A0 as in the photo above)
Board 2: Address = 0x62 Offset = binary 0010 (bridge A1, to the left of A0)
Board 3: Address = 0x63 Offset = binary 0011 (bridge A0 & A1, two rightmost jumpers)
Board 4: Address = 0x64 Offset = binary 0100 (bridge A2, middle jumper)
Hersteller beschreibung

So wie auf dem Foto hab ich das adressiert und das müsste eigentlich Board 2 Adresse 0X62 sein.

Verwende einen I2C-Scanner wie z. B. den Arduino MultiSpeed I2C Scanner, der zeigt Dir die Adressen an.

Hallo
Löte die Lötstelle nochmal nach.

das hab ich schon gemacht hat nix geholfen

Wenn du mehrere Boards hast, tausche doch einfach mal die Adressen.
Evtl. ist das eine Board nicht auf dieser Adresse funktionsfähig/defekt.

Hab ihn durchlaufen lassen

18:09:56.820 -> Scanning...
18:09:56.867 -> I2C device found at address 0x60 !
18:09:56.867 -> I2C device found at address 0x61 !
18:09:56.867 -> I2C device found at address 0x62 !
18:09:56.867 -> I2C device found at address 0x70 !
18:09:56.867 -> done

Also da und an der richtigen Adresse müsst es es sein.

hab ich mich im code verschrieben?

// Nich Veränderbare Variablen
int VarDurchlauf = 0;  // in welchem Durchlauf man ist
int VarPogrammende = 1; // Wenn durchlauf Info angezeicht dann Wert 1

#include <Wire.h>
#include <Adafruit_MotorShield.h>

// Create the motor shield object with a different I2C address (say for stacking)
Adafruit_MotorShield AFMS2(0x62); // Brigge A1, to the loft of 61 (A0)
Adafruit_MotorShield AFMS1(0x61); // Rightmost jumper closed
Adafruit_MotorShield AFMS0(0x60); // Default address, no jumpers

// Connect a stepper motor with 200 steps per revolution (1.8 degree)
// to motor port #1(M1 and M2)  #2(M3 and M4) 
Adafruit_StepperMotor *Stepper1 = AFMS0.getStepper(200, 1); // Bewegung Säge
Adafruit_StepperMotor *Stepper2 = AFMS0.getStepper(200, 2); // Bewegung Holzhalterung
Adafruit_StepperMotor *Stepper3 = AFMS1.getStepper(200, 1); // Bewegung Bohrer
Adafruit_StepperMotor *Stepper4 = AFMS2.getStepper(200, 2); // Bewegung Vorschub



void setup() {

  Serial.begin(9600);           // set up Serial library at 9600 bps

  pinMode(Starttaste,INPUT_PULLUP);

  AFMS0.begin();  // create with the default frequency 1.6KHz
  AFMS1.begin();
  //AFMS.begin(1000);  // OR with a different frequency, say 1KHz
  
  Stepper1->setSpeed(3200);  // 3200 rpm, Bewegung Säge
  Stepper2->setSpeed(80);  // 80 rpm, Bewegung Holzhalterung
  Stepper3->setSpeed(200);  // , Bewegung Bohrer
  Stepper4->setSpeed(200);  // , Bewegung Vorschub
  

  VarDurchlauf = VarAnzahl;
  delay(2000);
  Serial.println("Zum Starten Programm Vorschub Taste Drücken");
}

void loop() {
  
if (digitalRead(Starttaste)==LOW){
    Serial.println(" ");
    Serial.println(" ");
    Serial.println(" ");
    Serial.println("Programm Vorschub Startet");
    VarDurchlauf = 0;
    VarPogrammende = 0;
  }
  delay(10);


if (VarDurchlauf < VarAnzahl){

  VarDurchlauf++;
  char buf[100];
  sprintf(buf, "%d Durchlauf", VarDurchlauf);
  Serial.println("");
  Serial.println(buf);


  // Vorschub
  Serial.println("Vorschub 800 Schritte 4cm");
  Stepper4->step(800, BACKWARD, DOUBLE);
//delay(2000);

    // Bohropf senken
  Serial.println("Bohropf senken");
  Stepper3->step(100, BACKWARD, DOUBLE); //senken

    // Bohropf heben
  Serial.println("Bohropf heben");
  Stepper3->step(100, FORWARD, DOUBLE); // heben

//delay(2000);

  // Rückschub
  Serial.println("Rückschub 800 Schritte 4cm");
  Stepper4->step(800, FORWARD, DOUBLE);

  
    
  } else {
      if (VarPogrammende == 0) {
        Serial.println(" ");
        Serial.println("gewünschter Durchlauf erreicht");
        Serial.println("zum Starten Taste drücken");
        VarPogrammende = 1;
        }
  }

}

ich glaub der fehler ist

AFMS0.begin();  // create with the default frequency 1.6KHz
  AFMS1.begin();

da sollte noch der AFMS2 rein

Hallo
es fehlt ein

 AFMS2.begin();

Ja das war es! Danke für die Hilfe!!

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.