SO THIS IS THE EXAMPLE MOTOR CODE:
AND ID LIKE TO APPLY BUTTON CODE TO ACTIVATE THE EXAMPLE MOTOR CODE from “for (int i = 0; i <= 400; i++)
”(Full Throttle) to “for (int i = 400; i >= 0; i--)
” (Full Stop), VIA BUTTON BY HOLDING THE BUTTON. THEN RELEASING THE BUTTON TO ACTIVATE “for (int i = 0; i >= -400; i--)
” (full reverse) to “for (int i = -400; i <= 0; i++)
” (full stop).
#include "DualVNH5019MotorShield.h"
DualVNH5019MotorShield md;
void stopIfFault()
{
if (md.getM1Fault())
{
Serial.println("M1 fault");
while(1);
}
if (md.getM2Fault())
{
Serial.println("M2 fault");
while(1);
}
}
void setup()
{
Serial.begin(115200);
Serial.println("Dual VNH5019 Motor Shield");
md.init();
}
void loop()
{
for (int i = 0; i <= 400; i++)
{
md.setM1Speed(i);
stopIfFault();
if (i%200 == 100)
{
Serial.print("M1 current: ");
Serial.println(md.getM1CurrentMilliamps());
}
delay(2);
}
for (int i = 400; i >= 0; i--)
{
md.setM1Speed(i);
stopIfFault();
if (i%200 == 100)
{
Serial.print("M1 current: ");
Serial.println(md.getM1CurrentMilliamps());
}
delay(2);
}
//(RELEASE OF BUTTON CODE HERE)
for (int i = 0; i >= -400; i--)
{
md.setM1Speed(i);
stopIfFault();
if (i%200 == 100)
{
Serial.print("M1 current: ");
Serial.println(md.getM1CurrentMilliamps());
}
delay(2);
}
for (int i = -400; i <= 0; i++)
{
md.setM1Speed(i);
stopIfFault();
if (i%200 == 100)
{
Serial.print("M1 current: ");
Serial.println(md.getM1CurrentMilliamps());
}
delay(2);
}
Question:
how do i stop the motor at a certain distance? should i use this code instead:
And if so how do i apply it?
// first, include the library :)
#include <CheapStepper.h>
// next, declare the stepper
// and connect pins 8,9,10,11 to IN1,IN2,IN3,IN4 on ULN2003 board
CheapStepper stepper (8,9,10,11);
// let's create a boolean variable to save the direction of our rotation
boolean moveClockwise = true;
void setup() {
// let's set a custom speed of 20rpm (the default is ~16.25rpm)
stepper.setRpm(20);
/* Note: CheapStepper library assumes you are powering your 28BYJ-48 stepper
* using an external 5V power supply (>100mA) for RPM calculations
* -- don't try to power the stepper directly from the Arduino
*
* accepted RPM range: 6RPM (may overheat) - 24RPM (may skip)
* ideal range: 10RPM (safe, high torque) - 22RPM (fast, low torque)
*/
// now let's set up a serial connection and print some stepper info to the console
Serial.begin(9600); Serial.println();
Serial.print(stepper.getRpm()); // get the RPM of the stepper
Serial.print(" rpm = delay of ");
Serial.print(stepper.getDelay()); // get delay between steps for set RPM
Serial.print(" microseconds between steps");
Serial.println();
// stepper.setTotalSteps(4076);
/* you can uncomment the above line if you think your motor
* is geared 63.68395:1 (measured) rather than 64:1 (advertised)
* which would make the total steps 4076 (rather than default 4096)
* for more info see: http://forum.arduino.cc/index.php?topic=71964.15
*/
}
void loop() {
// let's do a clockwise move first
moveClockwise = true;
// let's move the stepper clockwise to position 2048
// which is 180 degrees, a half-turn (if using default of 4096 total steps)
stepper.moveTo (moveClockwise, 2048);
// now let's print the stepper position to the console
Serial.print("step position: ");
Serial.print(stepper.getStep()); // get the current step position
Serial.print(" / 4096");
Serial.println();
// now let's wait one second
delay(1000); // wait a sec
// and now let's move another 90 degrees (a quarter-turn) clockwise
stepper.moveDegrees (moveClockwise, 90);
// stepper.moveDegreesCW (90); <--- another way to do a clockwise 90 degree turn
// let's print the stepper position to the console again
Serial.print("step position: ");
Serial.print(stepper.getStep());
Serial.print(" / 4096");
Serial.println();
// and wait another second
delay(1000);
// ok, now let's reverse directions (to counter-clockwise)
moveClockwise = false;
// and move back to the start position (0 degree)
stepper.moveToDegree (moveClockwise, 0);
// moveClockwise is now false, so move counter-clockwise back to start
// let's print the position to the console once again
Serial.print("step position: ");
Serial.print(stepper.getStep());
Serial.print(" / 4096");
Serial.println();
// and wait another second before starting loop() over
delay(1000);
}