Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Pinout for Arduino Uno
- const int stepPin = 2; // STEP pin pada driver TB6600 (misalnya pin 2)
- const int dirPin = 3; // DIR pin pada driver TB6600 (misalnya pin 3)
- const int enablePin = 4; // ENABLE pin pada driver TB6600 (misalnya pin 4)
- const int limitSwitch1 = 5; // Pin untuk limit switch 1 (misalnya pin 5)
- const int limitSwitch2 = 6; // Pin untuk limit switch 2 (misalnya pin 6)
- const int startButton = 7; // Pin untuk push button (misalnya pin 7)
- // Stepper motor properties
- const int stepsPerRevolution = 200; // Jumlah langkah per putaran stepper motor
- const int stepDelay = 500; // Delay antara setiap langkah (microseconds)
- bool motorMoving = false; // Flag untuk menandakan apakah motor sedang bergerak
- void setup() {
- // Setup pin mode
- pinMode(stepPin, OUTPUT);
- pinMode(dirPin, OUTPUT);
- pinMode(enablePin, OUTPUT);
- pinMode(limitSwitch1, INPUT_PULLUP); // Menggunakan pull-up internal
- pinMode(limitSwitch2, INPUT_PULLUP); // Menggunakan pull-up internal
- pinMode(startButton, INPUT_PULLUP); // Menggunakan pull-up internal
- // Inisialisasi awal
- digitalWrite(enablePin, LOW); // Disable driver TB6600
- Serial.begin(9600);
- }
- void loop() {
- // Baca tombol start
- if (digitalRead(startButton) == LOW && !motorMoving) { // Tombol ditekan dan motor tidak sedang bergerak
- moveStepperRight(); // Mulai gerakan ke kanan
- motorMoving = true; // Set motorMoving menjadi true
- }
- // Cek limit switch saat motor bergerak
- if (motorMoving) {
- if (digitalRead(limitSwitch2) == LOW) { // Jika limit switch kanan terkena
- delay(2000); // Tunggu 2 detik (opsional)
- moveStepperLeft(); // Kembali ke posisi awal
- }
- }
- }
- void moveStepperRight() {
- digitalWrite(enablePin, LOW); // Aktifkan driver TB6600
- digitalWrite(dirPin, HIGH); // Atur arah gerakan ke kanan
- for (int i = 0; i < stepsPerRevolution; i++) {
- digitalWrite(stepPin, HIGH);
- delayMicroseconds(stepDelay);
- digitalWrite(stepPin, LOW);
- delayMicroseconds(stepDelay);
- }
- digitalWrite(enablePin, HIGH); // Matikan driver TB6600
- }
- void moveStepperLeft() {
- digitalWrite(enablePin, LOW); // Aktifkan driver TB6600
- digitalWrite(dirPin, LOW); // Atur arah gerakan ke kiri
- for (int i = 0; i < stepsPerRevolution; i++) {
- digitalWrite(stepPin, HIGH);
- delayMicroseconds(stepDelay);
- digitalWrite(stepPin, LOW);
- delayMicroseconds(stepDelay);
- }
- digitalWrite(enablePin, HIGH); // Matikan driver TB6600
- motorMoving = false; // Set motorMoving menjadi false setelah selesai bergerak ke kiri
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement