ich habe mal zum Verständnis einen einfachen Sketch für den 28BYJ-48 und Uln2003 eingestellt:
Code: Alles auswählen
/* Demo zum Anschluß eines unipolaren Stepmotors 28BYJ-48
mit Verwendung einer Beschleunigungs- und Bremsrampe
MobaTools installiert sein !!!
Achtung: alle Taster auf Minus / GND PIN --- Taster --- Minus
individuell einstellbar §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§
*/
#include <MobaTools.h>
//----- individuelle Definitionen -------------------------------------------------- //
const byte LinksPin = A1; // rot / Taster - Schließer / 4 steps nach links
const byte RechtsPin = A2; // grün / Taster - Schließer / 4 steps nach rechts
const byte RefPin = A3; // grau / Taster - Schließer / RefPunkt setzen - RefLED leuchtet
const byte Drehung_AUF = 8 ; // weiß / Taster - Schließer /
const byte Drehung_AB = 9 ; // lila / Taster - Schließer /
MoToStepper Step1(4096); // 4076 steps per full revolution (in half step mode).
MoToTimer delayTime;
//----- Taster einrichten-------- -------------------------------------------------- //
enum { Button1 = 0, Button2, Button3, Button4, Button5 } ; // Den Tasternamen die Indizes 0...3 zuordnen
const byte buttonPins[] = { LinksPin, RechtsPin, RefPin, Drehung_AUF, Drehung_AB } ; // muss als byte definiert sein, damit ein enfaches sizeof funktioniert
MoToButtons button( buttonPins, sizeof(buttonPins), 20, 500 ); // entprellt die Taster
void setup() {
Step1.attach( 4, 5, 6, 7 ); // Anschluß an digitalen Ausgängen / Pin
// Treiber IN1,IN2,IN3,IN4 // Treiberplatinhe
// 5 Volt ( + - ) für Treiberplatine und Steppermotor am Arduino, besser wäre eine eigenene Stromversorgung
// ---------------------------------------------------------------------- //
Step1.setSpeed( 240 ); // 60 120 240 §§§§§§§§§§§§§§§§§§§§ veränderbare Geschwindigkeit §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§
// = 6 U/Min = 12 U/Min = 24 U/Min
Step1.setRampLen(200); // Beschleunigung- und Abbremsen vor dem Stillstand
Step1.setZero(); // Referenzpunkt für Steppermotor setzen
}
// ---------------------------------------------------------------------- //
void loop() {
button.processButtons(); // Taster einlesen und bearbeiten
// --------------------------- Referenzpunkt setzen------------------------------------------ //
if (button.pressed(Button1) ) { // Taster Links gedrückt
Step1.doSteps( 4 ); // Stepper dreht 1x links
}
if ( button.released(Button1) ) { // Taster links losgelassen
Step1.rotate(0); // Stepper stoppt
}
if (button.pressed(Button2) ) { // Taster Rechts gedrückt
Step1.doSteps( -4 ); // Stepper dreht 1x rechts
}
if ( button.released(Button2) ) { // Taster Rechts losgelassen
Step1.rotate(0); // Stepper stoppt
}
if (button.pressed(Button3) ) { // Taster Ref gedrückt
Step1.setZero(); // Referenzpunkt gesetzt
}
// --------------------------- Drehung ------------------------------------------------ //
if (button.pressed(Button4) ) { // Taster4 gedrückt
Step1. doSteps(4076); // §§§§§§§§§§§§§§§§§§§§§§§§§§§§ 4076 entspricht 1 Umdrehung §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§
} //
if (button.pressed(Button5) ) { // Taster5 gedrückt:
Step1.doSteps(-4076); //
}
// --------------------------- Ende loop ---------------------------------------------------- //
}
Servus - Wolfgang