Mobatools Stepper stört pwm

Hallo, ich habe folgendes Problem: ich habe auf Pin9 ein pwm-Signal für eine DC-Motorsteuerung. Auf Pin3,4,5,6 habe einen Schrittmotor, der auch funktioniert. Soblad ich die Schrittmotor Funktionen verwende (Stepper1.attach(3,4,5,6); Stepper1.setSpeed(100):wink: verschwindet das Pwm-Signal auf Pin9. (Arduino-Nano mit ATMega328P)
Was kann das Problem sein?

//Test045 FT-Spulenwickelmaschine
//--------------------------------
#include <MobaTools.h>
// Lichtschranken
const int LichtschrankeLinksPin = A2;
const int LichtschrankeRechtsPin = A3;
#define LINKS_DUNKEL (LichtschrankeLinks < 100)
#define RECHTS_DUNKEL (LichtschrankeRechts < 100)
int LichtschrankeLinks;
int LichtschrankeRechts;

//Stepper für Fadenführung
int stepsPerRevolution1 = 2048;
MoToStepper Stepper1(stepsPerRevolution1);          // HALFSTEP ist default
#define LINKS 0
#define RECHTS 1

// DC-Motor für das Aufrollen
const int DCMotor1In1Pin = 7;
const int DCMotor1In2Pin = 8;
const int DCMotor1En1Pin = 9;//pwm
#define MOTOR1_STOP     DC_Motor(0, RECHTS);
#define MOTOR1_VOR      DC_Motor(4095, RECHTS);
#define MOTOR1_ZURUECK  DC_Motor(4095, LINKS);

bool stepper_rechts = true;

//-------------------------------------------------------
void setup() {
  Serial.begin(9600);
  Serial.println("Begin");
  Stepper1.attach(3,4,5,6);// Anschluß an digitalen Ausgängen; Treiber IN1,IN2,IN3,IN4
  Stepper1.setSpeed(100);     // = 100 U/Min
  pinMode(DCMotor1In1Pin,OUTPUT);
  pinMode(DCMotor1In2Pin,OUTPUT);
  pinMode(DCMotor1En1Pin,OUTPUT);
}
//-----------------------------------------------
void DC_Motor(int DCspeed, byte DCdir) {
  if(DCdir == RECHTS){
    digitalWrite(DCMotor1In1Pin,HIGH);
    digitalWrite(DCMotor1In2Pin,LOW);
  }
  else{ //links
    digitalWrite(DCMotor1In1Pin,LOW);
    digitalWrite(DCMotor1In2Pin,HIGH); 
  }
  analogWrite(DCMotor1En1Pin, DCspeed);
}
//-----------------------------------------------
void loop() {
  LichtschrankeLinks = analogRead(LichtschrankeLinksPin);
  LichtschrankeRechts = analogRead(LichtschrankeRechtsPin);
  Serial.print("Links=");
  if(LINKS_DUNKEL)  Serial.print("DUNKEL"); else Serial.print("HELL");
  Serial.print(" Rechts=");
  if(RECHTS_DUNKEL)  Serial.println("DUNKEL"); else Serial.println("HELL");
  
  if(LINKS_DUNKEL)stepper_rechts=true;
  if(RECHTS_DUNKEL)stepper_rechts=false;

  if(stepper_rechts==true)
    Stepper1.doSteps(stepsPerRevolution1*2);
  else
    Stepper1.doSteps(-stepsPerRevolution1*2);

//  DC_Motor(200,LINKS);


  delay(1000);
analogWrite(9, 128);


}

In der Doku lese ich:

Die MobaTools verwenden intensiv den Timer1 des Arduino (AVR). D.h. Alle anderen Libraries oder Funktionen, die ebenfalls den Timer1 verwenden, können nicht gleichzeitig genutzt werden.
Dies betrifft z.B. die Standard-ServoLib und analogWrite an den Pins 9+10.

Also ja, das ist so.

Danke für die schnelle Antwort.
Würde dann
Stepper1.attach(3,4,5,9);`
und für meine pwm Pin 6 verwende, funktionieren ?

Denke schon, probiere es aus :slightly_smiling_face:

Danke, es funktioniert.

Danke für die Rückmeldung.

Du könntest das Thema als gelöst markieren.

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