Advertisement
Guest User

Untitled

a guest
Feb 25th, 2015
282
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.37 KB | None | 0 0
  1.  
  2. #include <SPI.h>;
  3.  
  4. const int stp = 9;
  5. const int dir = 10;
  6. const int slaveSelectPin = 11; // Chip selection pin ,must be high when register is written
  7. const int nSleep = 6; // pin which wakes up the board
  8.  
  9. float StepsPerRev = 200;
  10. float microStep = 8;
  11. float roundPerMinute = 60;
  12. int P = (roundPerMinute * microStep * StepsPerRev)/(60); // steps per second
  13. int D = (1000000/(2*P)); // delay time for steps, 1 000 000 = 1 second in microsecond
  14.  
  15. void setup()
  16. {
  17.   pinMode(nSleep, OUTPUT); // pin for the nSleep which wakes up the board
  18.   pinMode(slaveSelectPin, OUTPUT); // SCS
  19.   pinMode(stp, OUTPUT);
  20.   pinMode(dir, OUTPUT);
  21.  
  22.  
  23.   digitalWrite(nSleep, HIGH); // HIGH wakes up board
  24.  
  25.   SPI.setBitOrder(MSBFIRST);
  26.   SPI.begin();
  27.  
  28.     // CTRL Register
  29.   digitalWrite(slaveSelectPin, HIGH); // slave select(SCS) has to be high in order to write register
  30.   SPI.transfer(0x0f); //
  31.   SPI.transfer(0x19); // 8 microsteps
  32.   delay(15);
  33.   digitalWrite(slaveSelectPin, LOW);
  34.   delay(150);
  35.  
  36.   // TORQUE Register
  37.   digitalWrite(slaveSelectPin, HIGH);
  38.   SPI.transfer(0x10);
  39.   SPI.transfer(0xba);
  40.   delay(15);
  41.   digitalWrite(slaveSelectPin, LOW);
  42.   delay(150);
  43.  
  44.   // OFF Register
  45.   digitalWrite(slaveSelectPin, HIGH);
  46.   SPI.transfer(0x20);
  47.   SPI.transfer(0x30);
  48.   delay(15);
  49.   digitalWrite(slaveSelectPin, LOW);
  50.   delay(150);
  51.  
  52.   // BLANK Register
  53.   digitalWrite(slaveSelectPin, HIGH);
  54.   SPI.transfer(0x31);
  55.   SPI.transfer(0x08);
  56.   delay(15);
  57.   digitalWrite(slaveSelectPin, LOW);
  58.   delay(150);
  59.  
  60.   // DECAY Register
  61.   digitalWrite(slaveSelectPin, HIGH);
  62.   SPI.transfer(0x43);
  63.   SPI.transfer(0x10);
  64.   delay(15);
  65.   digitalWrite(slaveSelectPin, LOW);
  66.   delay(150);
  67.  
  68.   // STALL Register
  69.   digitalWrite(slaveSelectPin, HIGH);
  70.   SPI.transfer(0x5f);
  71.   SPI.transfer(0x40);
  72.   delay(15);
  73.   digitalWrite(slaveSelectPin, LOW);
  74.   delay(150);
  75.  
  76.   // Drive Register
  77.   digitalWrite(slaveSelectPin, HIGH);
  78.   SPI.transfer(0x60);
  79.   SPI.transfer(0x55);
  80.   delay(15);
  81.   digitalWrite(slaveSelectPin, LOW);
  82.   delay(150);
  83.  
  84.   // STATUS Register
  85.   digitalWrite(slaveSelectPin, HIGH);
  86.   SPI.transfer(0x70);
  87.   SPI.transfer(0x80);
  88.   delay(15);
  89.   digitalWrite(slaveSelectPin, LOW);
  90.   delay(150);
  91.  
  92.  
  93.   digitalWrite(dir, LOW);
  94.   digitalWrite(stp, LOW);
  95.  
  96. }
  97.  
  98. void loop()
  99. {
  100. digitalWrite(stp,HIGH);
  101. delayMicroseconds(D);
  102. digitalWrite(stp,LOW);
  103. delayMicroseconds(D);
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement