Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- ##########################################################################
- ## ARDUINO SOURCES ##
- ##########################################################################
- */
- /*
- ___| _) | _) _) ___|
- \___ \ | | | __| | | | __ `__ \ | _ \ __| __ \
- | | | | ( | | | | | | | ( | | | |
- _____/ _| _| _| \___| _| \__,_| _| _| _| \____| \___/ _| .__/
- _|
- Code source libre de droit. Si vous utilisez mon code, merci à vous d'en préciser la source.
- @Date : 28/09/2011
- @Auteur : Silicium Corp
- */
- #include "StepperMotor.h"
- //===============================================================
- StepperMotor::StepperMotor(int pps, int* pinArduino)
- {
- for (int i = 0; i < 4; i++)
- {
- pinMotor[i] = pinArduino[i];
- }
- for (int j = 0; j < 4; j++)
- {
- pinMode(pinMotor[j], OUTPUT);
- }
- setMotorSpeed(pps);
- init();
- }
- //===============================================================
- void StepperMotor::init()
- {
- elapsedPulse = 0;
- stopMarker = 0;
- workInProgress = false;
- isLaunch = false;
- way = FORWARD;
- nextPulse = B00001000;
- timing.setCycleTime(coreSpeed);
- timing.run();
- }
- //===============================================================
- void StepperMotor::pulse()
- {
- if (workInProgress)
- {
- if (isLaunch)
- {
- if(timing.isOutOfDate())
- {
- electrikChoc();
- elapsedPulse++;
- }
- }
- else
- {
- if (elapsedPulse <= stopMarker)
- {
- if(timing.isOutOfDate())
- {
- electrikChoc();
- elapsedPulse++;
- }
- }
- else
- {
- workInProgress = false;
- }
- }
- }
- }
- //===============================================================
- void StepperMotor::electrikChoc()
- {
- for (int i = 0; i < 4; i++)
- {
- digitalWrite(pinMotor[i], (nextPulse>>(3 - i))&0x01);
- }
- updateNextPulse();
- }
- //===============================================================
- void StepperMotor::updateNextPulse()
- {
- if (way == FORWARD)
- {
- nextPulse >>= 1;
- }
- else
- {
- nextPulse <<= 1;
- }
- if (nextPulse == B00000000)
- {
- nextPulse = B00001000;
- }
- else if (nextPulse == B00010000)
- {
- nextPulse = B00000001;
- }
- }
- //===============================================================
- void StepperMotor::launch()
- {
- isLaunch = true;
- workInProgress = true;
- }
- //===============================================================
- void StepperMotor::stopNow()
- {
- workInProgress = false;
- isLaunch = false;
- }
- //===============================================================
- void StepperMotor::setMotorSpeed(int pps)
- {
- motorSpeed = pps;
- coreSpeed = 1000 / pps;
- timing.setCycleTime(coreSpeed);
- }
- //===============================================================
- void StepperMotor::setStepOrder(int nbStep)
- {
- stopMarker = elapsedPulse + nbStep;
- workInProgress = true;
- isLaunch = false;
- }
- //===============================================================
- void StepperMotor::setWay(boolean sense)
- {
- way = sense;
- }
- //===============================================================
- boolean StepperMotor::getWay()
- {
- return(way);
- }
- //===============================================================
- boolean StepperMotor::getIsLauch()
- {
- return(isLaunch);
- }
- //===============================================================
- boolean StepperMotor::getWorking()
- {
- return(workInProgress);
- }
- //===============================================================
- int StepperMotor::getMotorSpeed()
- {
- return(motorSpeed);
- }
- //===============================================================
- int StepperMotor::getElapsedPulse()
- {
- return(elapsedPulse);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement