Поворотный стол для 3D макросъемки на Arduino

Поворотный стол для 3D макросъемки, платформа от старого HDD, несколько деталей от струйного принтера и шаговый двигатель 28BYJ48 с драйвером «EasyDriver» на A3967.
Код из видео

 

Пример работы

 

код

#define STEP A1
#define DIR A2
#define circle 72000  // шагов на оборот
#define SpeedStep 400 // скорость движка
#define shotPin 12 // пин на затвор
#define led 13

void setup() {
  Serial.begin(9600);
  pinMode(STEP, OUTPUT);
  pinMode(DIR, OUTPUT);
  pinMode(led, OUTPUT);
  pinMode(shotPin, OUTPUT);
}

void stepper(unsigned int Step, int Speed, boolean Set) {
  digitalWrite(DIR, Set);    
  for (int i = 0; i < Step; i++){
     digitalWrite(STEP, HIGH);
     delayMicroseconds(Speed);
     digitalWrite(STEP, LOW);
     delayMicroseconds(Speed);
  }   
}

void loop(){
    if (Serial.available() > 0){  
      int val = Serial.parseInt();  
      unsigned int st = circle / val;
      
      Serial.println("start");
Serial.println(st);
      
      for (int i = 1; i <= val; i++){   
        stepper(st, SpeedStep, 1);  // крутим движек
        Serial.print("shot: ");
        Serial.println(i);
        
        delay(500);  // дергаем затвор камеры
        digitalWrite(shotPin, HIGH);    
        delay(200);              
        digitalWrite(shotPin, LOW); 
        delay(1000);         
      }
      Serial.println("END");
      Serial.flush();
    }
    
  digitalWrite(led, HIGH);  //показываем готовность.
  delay(1);              
  digitalWrite(led, LOW);     
  delay(100); 
 
}