I know I can make the motor move backwards and forwards with buttons but I don't want it to move at full speed. I want it to increment in very small amounts to where it can be adjusted very small amounts at a time. I should also be able to hold the button so it moves continuously. I also have a motor with an encoder on it. Maybe there is a way to use the numbers on the encoder to increment? so press the CW button and now the motor wants to move till the encoder reaches +10 from where it was at? I understand what I want to do, just need help getting there. Thanks
HERE IS THE CODE I FIGURED OUT THAT MAKES MY DC MOTOR INCREMENT CW AND CCW
#define MOTOR_DIRECTION_PIN 2
#define MOTOR_SPEED_PIN 3
#define MOTOR_DIRECTION_CW LOW
#define MOTOR_DIRECTION_CCW HIGH
void setup()
{
//button inputs
//pullup so we do not need to include a physical resistor
pinMode(12, INPUT_PULLUP);
pinMode(13, INPUT_PULLUP);
pinMode(MOTOR_DIRECTION_PIN, OUTPUT);
pinMode(MOTOR_SPEED_PIN, OUTPUT);
Serial.begin(9600);
Serial.println("test");
}
void loop()
{
int pushedButtonOne = digitalRead(12);
int pushedButtonTwo = digitalRead(13);
if(pushedButtonOne == LOW)
{
Serial.println("Button number 1 has been pushed");
digitalWrite(MOTOR_DIRECTION_PIN, MOTOR_DIRECTION_CCW);
analogWrite(MOTOR_SPEED_PIN, 50);
delay(7);
analogWrite(MOTOR_SPEED_PIN, 0);
}
else if(pushedButtonTwo == LOW)
{
Serial.println("Button number 2 has been pushed");
digitalWrite(MOTOR_DIRECTION_PIN, MOTOR_DIRECTION_CW);
analogWrite(MOTOR_SPEED_PIN, 50);
delay(7);
analogWrite(MOTOR_SPEED_PIN, 0);
}
else
{
Serial.println("nothing has been pushed");
}
//delay(100);
}