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) 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);
}