- // Arduino 驱动步进电机小实例,这种两相四线,这种常见的步进电机,和四条线的接法
- #define IN1 8
- #define IN2 9
- #define IN3 10
- #define IN4 11
- int Steps = 0;
- boolean Direction = true;// gre
- unsigned long last_time;
- unsigned long currentMillis ;
- int steps_left=4095;
- long time;
- void setup()
- {
- Serial.begin(115200);
- pinMode(IN1, OUTPUT);
- pinMode(IN2, OUTPUT);
- pinMode(IN3, OUTPUT);
- pinMode(IN4, OUTPUT);
- // delay(1000);
- }
- void loop()
- {
- while(steps_left>0)
- {
- currentMillis = micros();
- if(currentMillis-last_time>=1000){
- stepper(1);
- time=time+micros()-last_time;
- last_time=micros();
- steps_left--;
- }
- }
- Serial.println(time);
- Serial.println("Wait...!");
- delay(2000);
- Direction=!Direction;
- steps_left=4095;
- }
- void stepper(int xw)
- {
- for (int x=0;x<xw;x++){
- switch(Steps){
- case 0:
- digitalWrite(IN1, LOW);
- digitalWrite(IN2, LOW);
- digitalWrite(IN3, LOW);
- digitalWrite(IN4, HIGH);
- break;
- case 1:
- digitalWrite(IN1, LOW);
- digitalWrite(IN2, LOW);
- digitalWrite(IN3, HIGH);
- digitalWrite(IN4, HIGH);
- break;
- case 2:
- digitalWrite(IN1, LOW);
- digitalWrite(IN2, LOW);
- digitalWrite(IN3, HIGH);
- digitalWrite(IN4, LOW);
- break;
- case 3:
- digitalWrite(IN1, LOW);
- digitalWrite(IN2, HIGH);
- digitalWrite(IN3, HIGH);
- digitalWrite(IN4, LOW);
- break;
- case 4:
- digitalWrite(IN1, LOW);
- digitalWrite(IN2, HIGH);
- digitalWrite(IN3, LOW);
- digitalWrite(IN4, LOW);
- break;
- case 5:
- digitalWrite(IN1, HIGH);
- digitalWrite(IN2, HIGH);
- digitalWrite(IN3, LOW);
- digitalWrite(IN4, LOW);
- break;
- case 6:
- digitalWrite(IN1, HIGH);
- digitalWrite(IN2, LOW);
- digitalWrite(IN3, LOW);
- digitalWrite(IN4, LOW);
- break;
- case 7:
- digitalWrite(IN1, HIGH);
- digitalWrite(IN2, LOW);
- digitalWrite(IN3, LOW);
- digitalWrite(IN4, HIGH);
- break;
- default:
- digitalWrite(IN1, LOW);
- digitalWrite(IN2, LOW);
- digitalWrite(IN3, LOW);
- digitalWrite(IN4, LOW);
- break;
- }
- SetDirection();
- }
- }
- void SetDirection()
- {
- if(Direction==1){
- Steps++;
- }
- if(Direction==0){
- Steps--;
- }
- if(Steps>7){
- Steps=0;
- }
- if(Steps<0){
- Steps=7;
- }
- }
复制代码 |