Ceci est une ancienne révision du document !
#define ButonControl 4 #include <28BYJ48.h> NonBlockingMotor motor(4, 7, 5, 6); int degreRotate = 900; int degreRotateBack = 330; long f1(long x){ return x*motor.steps_per_rev/3600; } unsigned long currentTime = 0; unsigned long newTime = 0; void on_reached(long steps){ } // to get number of steps use println boolean dataBtn ; void setup() { // put your setup code here, to run once: // initialise step motor motor.init(); motor.set_time_between_pulses(2000); // recommended motor.set_conversion_function(f1); motor.set_on_destination_reached(on_reached); pinMode(ButonControl, INPUT_PULLUP);// push button pin as input Serial.begin(9600); } void loop() { dataBtn = !digitalRead(ButonControl); if(millis() % 20000 == 0){ motor.set_destination(degreRotate); motor.status = CW; // OR CCV to rotate back } if( dataBtn== 1) { motor.status = STOP; } motor.update(); // commit rotation if(millis() % 4000 == 0){ // this need because L293D Get realy hot so to prevent bourning the skheme :) waitModeMotor(); } } // motor get hot and for this we will need to make all the pins to LOW to avoid HOT void waitModeMotor(){ digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, LOW); }
////////////////////////////////////////////////////////////////// //©2011 bildr //Released under the MIT License - Please reuse change and share //Using the easy stepper with your arduino //use rotate and/or rotateDeg to controll stepper motor //speed is any number from .01 -> 1 with 1 being fastest - //Slower Speed == Stronger movement ///////////////////////////////////////////////////////////////// #define DIR_PIN 2 #define STEP_PIN 3 void setup() { pinMode(DIR_PIN, OUTPUT); pinMode(STEP_PIN, OUTPUT); } void loop(){ rotateDeg(360, 1); delay(1000); rotateDeg(-360, .1); //reverse delay(1000); //rotate(1600, .5); //delay(1000); //rotate(-1600, .25); //reverse //delay(1000); } void rotate(int steps, float speed){ //rotate a specific number of microsteps (8 microsteps per step) - (negitive for reverse movement) //speed is any number from .01 -> 1 with 1 being fastest - Slower is stronger int dir = (steps > 0)? HIGH:LOW; steps = abs(steps); digitalWrite(DIR_PIN,dir); float usDelay = (1/speed) * 70; for(int i=0; i < steps; i++){ digitalWrite(STEP_PIN, HIGH); delayMicroseconds(usDelay); digitalWrite(STEP_PIN, LOW); delayMicroseconds(usDelay); } } void rotateDeg(float deg, float speed){ //rotate a specific number of degrees (negitive for reverse movement) //speed is any number from .01 -> 1 with 1 being fastest - Slower is stronger int dir = (deg > 0)? HIGH:LOW; digitalWrite(DIR_PIN,dir); int steps = abs(deg)*(1/0.225); float usDelay = (1/speed) * 70; for(int i=0; i < steps; i++){ digitalWrite(STEP_PIN, HIGH); delayMicroseconds(usDelay); digitalWrite(STEP_PIN, LOW); delayMicroseconds(usDelay); } }