// Drehscheibe TimeWaster, Frank Becker 2017
// Version 1.0
// UNO R3 Com6, Motor Shield v2.0
// For use with the Adafruit Motor Shield v2
// ----> http://www.adafruit.com/products/1438
#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_MS_PWMServoDriver.h"
#include <MobaTools.h>
// Create the motor shield object with the default I2C address
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
// Or, create it with a different I2C address (say for stacking)
// Adafruit_MotorShield AFMS = Adafruit_MotorShield(0x61);
// Connect a stepper motor with 200 steps per revolution (1.8 degree)
// to motor port #1 (M1 and M2)
Adafruit_StepperMotor *myMotor = AFMS.getStepper(200, 1);
const byte buttonFullTurnClockwise = 8 ; //Taster 180Grad Uhrzeigersinn
const byte buttonFullTurnCounterClockwise = 9 ; //Taster 180Grad gegen Uhrzeigersinn
const byte buttonStepClockwise = 10 ; //Taster Step Uhrzeigersinn
const byte buttonStepCounterClockwise = 11 ; //Taster Step gegen Uhrzeigersinn
const byte buttonRelease = 12 ; //Taster um Motor stromlos zu schaltem
byte buttonStatusFullTurnClockwise = 0 ;
byte buttonStatusFullTurnCounterClockwise = 0 ;
byte buttonStatusStepClockwise = 0 ;
byte buttonStatusStepCounterClockwise = 0 ;
byte buttonStatusRelease = 0 ;
byte i; //Zählvariable
void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println("Stepper test!");
pinMode(buttonFullTurnClockwise, INPUT);
pinMode(buttonFullTurnCounterClockwise, INPUT);
pinMode(buttonStepClockwise, INPUT);
pinMode(buttonStepCounterClockwise, INPUT);
pinMode(buttonRelease, INPUT);
AFMS.begin(); // create with the default frequency 1.6KHz
//AFMS.begin(1000); // OR with a different frequency, say 1KHz
myMotor->setSpeed(10); // original 10 rpm
}
void loop() {
buttonStatusFullTurnClockwise = digitalRead(buttonFullTurnClockwise);
buttonStatusFullTurnCounterClockwise = digitalRead(buttonFullTurnCounterClockwise);
buttonStatusStepClockwise = digitalRead(buttonStepClockwise);
buttonStatusStepCounterClockwise = digitalRead(buttonStepCounterClockwise);
buttonStatusRelease = digitalRead(buttonRelease);
if (buttonStatusFullTurnClockwise == LOW)
{
Serial.println("180 Grad Drehung (733 steps)im Uhrzeigersinn");
myMotor->setSpeed(1); // original 10 rpm
myMotor->step(10, FORWARD, MICROSTEP);
myMotor->setSpeed(10); // original 10 rpm
myMotor->step(10, FORWARD, MICROSTEP);
myMotor->setSpeed(30); // original 10 rpm
myMotor->step(10, FORWARD, MICROSTEP);
myMotor->setSpeed(40); // original 10 rpm
myMotor->step(10, FORWARD, MICROSTEP);
myMotor->setSpeed(255); // original 10 rpm
myMotor->step(653, FORWARD, MICROSTEP);
myMotor->setSpeed(40); // original 10 rpm
myMotor->step(10, FORWARD, MICROSTEP);
myMotor->setSpeed(30); // original 10 rpm
myMotor->step(10, FORWARD, MICROSTEP);
myMotor->setSpeed(10); // original 10 rpm
myMotor->step(10, FORWARD, MICROSTEP);
myMotor->setSpeed(1); // original 10 rpm
myMotor->step(15, FORWARD, MICROSTEP);
myMotor->step(8, BACKWARD, MICROSTEP);
myMotor->step(3, FORWARD, MICROSTEP);
}
else
{
if (buttonStatusFullTurnCounterClockwise == LOW)
{
Serial.println("180 Grad Drehung gegen Uhrzeigersinn");
myMotor->setSpeed(255); // original 10 rpm
myMotor->step(733, BACKWARD, MICROSTEP);
}
else
{
if (buttonStatusStepClockwise == LOW)
{
Serial.println("1 Step im Uhrzeigersinn");
myMotor->setSpeed(1); // original 10 rpm
myMotor->step(1, FORWARD, MICROSTEP);
delay(10);
}
else
{
if (buttonStatusStepCounterClockwise == LOW)
{
Serial.println("1 Step im Uhrzeigersinn");
myMotor->setSpeed(1); // original 10 rpm
myMotor->step(1, BACKWARD, MICROSTEP);
delay(10);
}
else
{
if (buttonStatusRelease == LOW)
{
myMotor->release();
}
}
}
}
}
}