Thursday, 13 March 2014

Manual Control stepper motor using EASYDRIVE + ARDUINO

Salam,OK, nih ade tutorial acannne nak control stepper motor secare manual... Bile abam zairi suruh tunjuk skit. so sini video die abam zairi


Untuk control stepper motor ni kene ade

  1. Stepper motor (mane2 tak kisah tapi yang aku jual memang bole masuk)
  2. Arduino board (Mega, UNO, Mini @ Nano.. yang lain maybe boleh)
  3. Easy Driver  (aku ade jual gak)
  4. Breadboard/ Circuit board pon boleh
  5. Jumper wire 
  6. Tactile switch, yang switch aku tekan tu la ( ade jual jugak, tgk store aku)


Dan ini codenya...
//Basic code by MSIDRIS for Manual control stepper motor
// Using Easy driver and Arduino uno..

int delays;  
const int ManPosY = 4; //Manual input from switch to control + direction
const int ManNegY = 5; //Manual input from switch to control - direction
const int DirY = 8; 
const int LocY = 9; 
float buttonPushCounterPosy,buttonPushCounterNegy = 0;// counter for the number of button presses
int buttonStatex = 0;  
int buttonStatePosy, buttonStateNegy,buttonStatePosx = 0; // current state of the button
int lastButtonStatePosy,lastButtonStateNegy = 0;

void setup() { 
Serial.begin(9600);  
  pinMode(ManPosY, INPUT); //override y +ve
  pinMode(ManNegY, INPUT); //override y -ve
  pinMode(DirY, OUTPUT);     
  pinMode(LocY, OUTPUT);
  digitalWrite(DirY, LOW);
  digitalWrite(LocY, LOW);
}

void loop() {
  buttonStatePosy = digitalRead(ManPosY);
  buttonStateNegy = digitalRead(ManNegY);
  
  if ((digitalRead(ManPosY)==HIGH)){
   buttonPushCounterPosy++;
   delay(200); 
     while(round(buttonPushCounterPosy/2-round(buttonPushCounterPosy/2))!=0){
     if (digitalRead(ManPosY)==HIGH){buttonPushCounterPosy++;}
     delays=100;
     digitalWrite(DirY,LOW) ;
     digitalWrite(LocY, HIGH);delayMicroseconds(delays);          
     digitalWrite(LocY, LOW);delayMicroseconds(delays);
     }
    delay(200);}
     
   if ((digitalRead(ManNegY)==HIGH)){
   buttonPushCounterNegy++;
   delay(200); 
     while(round(buttonPushCounterNegy/2-round(buttonPushCounterNegy/2))!=0){
      if (digitalRead(ManNegY)==HIGH){buttonPushCounterNegy++;}
     delays=100;
     digitalWrite(DirY,HIGH) ;
     digitalWrite(LocY, HIGH);delayMicroseconds(delays);          
     digitalWrite(LocY, LOW);delayMicroseconds(delays);
     }
    delay(200);}
}
tekan sekali untuk jalan dan tekan sekali lagi untuk stop...

No comments:

Post a Comment