Advertisement
Nusa_Techno

stepper_2

Jul 4th, 2024
686
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.56 KB | Source Code | 0 0
  1. // Pinout for Arduino Uno
  2. const int stepPin = 2;    // STEP pin pada driver TB6600 (misalnya pin 2)
  3. const int dirPin = 3;     // DIR pin pada driver TB6600 (misalnya pin 3)
  4. const int enablePin = 4;  // ENABLE pin pada driver TB6600 (misalnya pin 4)
  5. const int limitSwitch1 = 5; // Pin untuk limit switch 1 (misalnya pin 5)
  6. const int limitSwitch2 = 6; // Pin untuk limit switch 2 (misalnya pin 6)
  7. const int startButton = 7;  // Pin untuk push button (misalnya pin 7)
  8.  
  9. // Stepper motor properties
  10. const int stepsPerRevolution = 200; // Jumlah langkah per putaran stepper motor
  11. const int stepDelay = 500; // Delay antara setiap langkah (microseconds)
  12.  
  13. bool motorMoving = false; // Flag untuk menandakan apakah motor sedang bergerak
  14.  
  15. void setup() {
  16.   // Setup pin mode
  17.   pinMode(stepPin, OUTPUT);
  18.   pinMode(dirPin, OUTPUT);
  19.   pinMode(enablePin, OUTPUT);
  20.   pinMode(limitSwitch1, INPUT_PULLUP); // Menggunakan pull-up internal
  21.   pinMode(limitSwitch2, INPUT_PULLUP); // Menggunakan pull-up internal
  22.   pinMode(startButton, INPUT_PULLUP);  // Menggunakan pull-up internal
  23.  
  24.   // Inisialisasi awal
  25.   digitalWrite(enablePin, LOW); // Disable driver TB6600
  26.  
  27.   Serial.begin(9600);
  28. }
  29.  
  30. void loop() {
  31.   // Baca tombol start
  32.   if (digitalRead(startButton) == LOW && !motorMoving) { // Tombol ditekan dan motor tidak sedang bergerak
  33.     moveStepperRight(); // Mulai gerakan ke kanan
  34.     motorMoving = true; // Set motorMoving menjadi true
  35.   }
  36.  
  37.   // Cek limit switch saat motor bergerak
  38.   if (motorMoving) {
  39.     if (digitalRead(limitSwitch2) == LOW) { // Jika limit switch kanan terkena
  40.       delay(2000); // Tunggu 2 detik (opsional)
  41.       moveStepperLeft(); // Kembali ke posisi awal
  42.     }
  43.   }
  44. }
  45.  
  46. void moveStepperRight() {
  47.   digitalWrite(enablePin, LOW); // Aktifkan driver TB6600
  48.   digitalWrite(dirPin, HIGH); // Atur arah gerakan ke kanan
  49.   for (int i = 0; i < stepsPerRevolution; i++) {
  50.     digitalWrite(stepPin, HIGH);
  51.     delayMicroseconds(stepDelay);
  52.     digitalWrite(stepPin, LOW);
  53.     delayMicroseconds(stepDelay);
  54.   }
  55.   digitalWrite(enablePin, HIGH); // Matikan driver TB6600
  56. }
  57.  
  58. void moveStepperLeft() {
  59.   digitalWrite(enablePin, LOW); // Aktifkan driver TB6600
  60.   digitalWrite(dirPin, LOW); // Atur arah gerakan ke kiri
  61.   for (int i = 0; i < stepsPerRevolution; i++) {
  62.     digitalWrite(stepPin, HIGH);
  63.     delayMicroseconds(stepDelay);
  64.     digitalWrite(stepPin, LOW);
  65.     delayMicroseconds(stepDelay);
  66.   }
  67.   digitalWrite(enablePin, HIGH); // Matikan driver TB6600
  68.   motorMoving = false; // Set motorMoving menjadi false setelah selesai bergerak ke kiri
  69. }
  70.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement