Advertisement
MagicWinnie

Untitled

Dec 27th, 2018
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //Made by L22_Amoebas
  2. #define KV 9 //Концевой выключатель
  3. #define EN 8
  4. #define X_DIR 5
  5. #define X_STP 2
  6. //Количество точек + 1
  7. const int len=6;
  8. int j,m,p,q;
  9. int points[len]={0,10,35,5,75,24};
  10. int steps[len];
  11. void setup() {
  12.   Serial.begin(9600);
  13.   pinMode(EN, OUTPUT);
  14.   pinMode(X_DIR, OUTPUT);
  15.   pinMode(X_STP, OUTPUT);
  16.   pinMode(KV,INPUT_PULLUP);
  17.   digitalWrite(EN, LOW);
  18.   //Подсчет шагов в массив для данных точек
  19.   for (j=0;j<len;j++){
  20.     steps[j]=points[j]*5;
  21.   }
  22.   //Калибровка
  23.   cal();
  24.   digitalWrite(X_DIR, 1);
  25. }
  26. void loop() {
  27.   xMove();
  28. }
  29. void xMove(){
  30.   for (j=1;j<len;j++){
  31.     p=steps[j]-steps[j-1];
  32.     if (p<0){
  33.       digitalWrite(X_DIR, 0);
  34.       p=abs(p);
  35.     }
  36.     for (q=0;q<p;q++) {
  37.       digitalWrite(X_STP, LOW);
  38.       delayMicroseconds(10);
  39.       digitalWrite(X_STP, HIGH);
  40.       delayMicroseconds(3000);
  41.     }
  42.     digitalWrite(X_DIR, 1);
  43.     delay(2000);
  44.   }
  45. }
  46. void cal(){
  47.   int butt;
  48.   digitalWrite(X_DIR, 0);
  49.   while(true){
  50.     digitalWrite(X_STP, LOW);
  51.     delayMicroseconds(10);
  52.     digitalWrite(X_STP, HIGH);
  53.     delayMicroseconds(2000);
  54.     butt=digitalRead(KV);
  55.     if (butt==0){
  56.       break;
  57.     }
  58.   }
  59.   delay(100);
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement