Citaat van: antonv op woensdag 17 februari 2021, 23:35:40
Dus gaan de 4 motoraansluitingen rechtstreeks naar 4 outputs van de Arduino, zonder gebruik te maken van een motorshield?
Dat interesseert mij
Inderdaad, rechtstreeks op de Arduino Nano. De stepper heeft ganse nacht gedraaid en werkt nog steeds prima.
De code is vrij eenvoudig:
#define stepper_A1 2 // rood
#define stepper_A2 3 // zwart
#define stepper_B1 4 // bruin
#define stepper_B2 5 // geel
long highspeed = 8000;
long slowspeed = 16000;
long distance = 100;
long vs = 0;
void setup()
{
pinMode(stepper_A1, OUTPUT);
pinMode(stepper_A2, OUTPUT);
pinMode(stepper_B1, OUTPUT);
pinMode(stepper_B2, OUTPUT);
}
void loop()
{
// left
vs = 0;
for (long i = 0; i < distance; i++) {
if (i < 40){vs = map (i, 0,40, slowspeed,highspeed);}
if (distance - i < 40) {vs = map (i, distance -i,distance, highspeed,slowspeed);}
step1(vs);step2(vs);step3(vs);step4(vs);
}
delay(1500);
// right
vs = 0;
for (long i = 0; i < distance; i++) {
if (i < 40){vs = map (i, 0,40, slowspeed,highspeed);}
if (distance - i < 40) {vs = map (i, distance -i,distance, highspeed,slowspeed);}
step1(vs);step4(vs);step3(vs);step2(vs);
}
delay(1500);
}
void step1(long vs){ //A+B+
digitalWrite(stepper_A1, 1); digitalWrite(stepper_A2, 0); digitalWrite(stepper_B1, 1); digitalWrite(stepper_B2, 0);
delayMicroseconds(vs);}
void step2(long vs){ //A+B-
digitalWrite(stepper_A1, 1); digitalWrite(stepper_A2, 0); digitalWrite(stepper_B1, 0); digitalWrite(stepper_B2, 1);
delayMicroseconds(vs);}
void step3(long vs){ //A-B-
digitalWrite(stepper_A1, 0); digitalWrite(stepper_A2, 1); digitalWrite(stepper_B1, 0); digitalWrite(stepper_B2, 1);
delayMicroseconds(vs);}
void step4(long vs){ //A-B+
digitalWrite(stepper_A1, 0); digitalWrite(stepper_A2, 1); digitalWrite(stepper_B1, 1); digitalWrite(stepper_B2, 0);
delayMicroseconds(vs);}