hello sir

43 views
Skip to first unread message

Alfito Desmon

unread,
Jun 9, 2024, 8:34:23 AM6/9/24
to accelstepper

I have trouble when I open the MIT App Inventor application and try to connect to Bluetooth. When I press the forward button, both stepper 1 and stepper 2 move, but their speed is very slow. When I use code with only Bluetooth connection (without RFID RC522 sensor code), the two steppers can move at the maximum speed of 1000.0.

My question is: Why does this happen?

Thank you.

#include "BluetoothSerial.h"
BluetoothSerial SerialBT;
#include <Adafruit_GFX.h>
#include <Adafruit_ST7789.h>
#include "font.h"
#include "icons.h"
#include <Arduino.h>
#include <Wire.h>
#define TFT_DC    2
#define TFT_RST   4
#define TFT_CS    15
#define color     0x25a6
#define color2    0x0000
Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);


#include <SPI.h>
#include <MFRC522.h>
#include <AccelStepper.h>

#define FULLSTEP 4
#define HALFSTEP 8

#define SS_PIN 5
#define RST_PIN 22

#define motorPin1  32     // IN1 on the ULN2003 driver 1
#define motorPin2  33     // IN2 on the ULN2003 driver 1
#define motorPin3  25     // IN3 on the ULN2003 driver 1
#define motorPin4  26     // IN4 on the ULN2003 driver 1

#define motorPin5  13     // IN1 on the ULN2003 driver 2
#define motorPin6  14     // IN2 on the ULN2003 driver 2
#define motorPin7  15    // IN3 on the ULN2003 driver 2
#define motorPin8  21    // IN4 on the ULN2003 driver 2

const float STEPS_PER_REV = 32;
const float GEAR_RED = 64;
const float STEPS_PER_OUT_REV = STEPS_PER_REV * GEAR_RED;

MFRC522 mfrc522(SS_PIN, RST_PIN);
AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);
AccelStepper stepper2(HALFSTEP, motorPin5, motorPin7, motorPin6, motorPin8);

AccelStepper LeftWheel(FULLSTEP, motorPin1, motorPin3, motorPin2, motorPin4);
AccelStepper RightWheel(FULLSTEP, motorPin5, motorPin7, motorPin6, motorPin8);

int wheelSpeed = 1000;
int dataIn;
bool movingForward = false;
bool movingBackward = false;

int StepsRequired;
int stepperSpeed = 1000;

void setup() {
  SerialBT.begin("ESP32-D1 MINI");
  Serial.begin(9600);
  tft.init(240, 240, SPI_MODE2);
  tft.setRotation(2);
  tft.fillScreen(ST77XX_BLACK);
  tft.drawBitmap(0, 88, aa, 128, 64, color);
  tft.drawBitmap(112, 88, bb, 128, 64, color);
  SPI.begin();
  mfrc522.PCD_Init();
  LeftWheel.setMaxSpeed(1000.0);
  LeftWheel.setSpeed(0);
  RightWheel.setMaxSpeed(1000.0);
  RightWheel.setSpeed(0);
}

void loop() {
  // Look for new cards

   if (SerialBT.available() > 0) {
    dataIn = SerialBT.read();
    Serial.print("Data received: ");
    Serial.println(dataIn);  // Debugging: print received data
    if (dataIn == 1) { // Move forward
      movingForward = !movingForward;
      movingBackward = false;
      if (movingForward) {
        moveForward();
      } else {
        stopMoving();
      }
    } else if (dataIn == 2) { // Move backward
      movingBackward = !movingBackward;
      movingForward = false;
      if (movingBackward) {
        moveBackward();
      } else {
        stopMoving();
      }
    } else if (dataIn == 3) { // Turn left
      rotateLeft();
    } else if (dataIn == 4) { // Turn right
      rotateRight();
    } else if (dataIn == 5) { // Stop
      stopMoving();
      movingForward = false;
      movingBackward = false;
    }
  }
  LeftWheel.runSpeed();
  RightWheel.runSpeed();
 
  if (!mfrc522.PICC_IsNewCardPresent()) {
    return;
  }

  // Select one of the cards
  if (!mfrc522.PICC_ReadCardSerial()) {
    return;
  }

  // Show UID on serial monitor
  Serial.print("UID tag: ");
  String content = "";
  for (byte i = 0; i < mfrc522.uid.size; i++) {
    Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
    Serial.print(mfrc522.uid.uidByte[i], HEX);
    content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
    content.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  Serial.println();

  // Check if the detected card is the authorized one
  content.toUpperCase();
  if (content.substring(1) == "53 02 CC 23 11 00 01") { // Change here the UID of the authorized card/cards
    Serial.println("Authorized access");
    Serial.println();
    delay(500);

    // Move both steppers 360 degrees
    StepsRequired = STEPS_PER_OUT_REV * 240 / 360;  // 360 degrees
    stepper1.setMaxSpeed(1000.0);
    stepper1.move(StepsRequired);
    stepper1.setSpeed(stepperSpeed);

    stepper2.setMaxSpeed(1000.0);
    stepper2.move(-StepsRequired);
    stepper2.setSpeed(stepperSpeed);

    // Wait for both steppers to reach the target position
    while (stepper1.distanceToGo() != 0 && stepper2.distanceToGo() != 0) {
      stepper1.runSpeedToPosition();
      stepper2.runSpeedToPosition();
    }
  }
  if (content.substring(1) == "53 06 D1 23 11 00 01") { // Change here the UID of the authorized card/cards
    Serial.println("Authorized access");
    Serial.println();
    delay(500);

    // Move both steppers 360 degrees
    StepsRequired = STEPS_PER_OUT_REV  * 240 / 360;  // 180degrees
    stepper1.setMaxSpeed(1000.0);
    stepper1.move(StepsRequired);
    stepper1.setSpeed(stepperSpeed);

    stepper2.setMaxSpeed(1000.0);
    stepper2.move(-StepsRequired);
    stepper2.setSpeed(stepperSpeed);

    // Wait for both steppers to reach the target position
    while (stepper1.distanceToGo() != 0 && stepper2.distanceToGo() != 0) {
      stepper1.runSpeedToPosition();
      stepper2.runSpeedToPosition();
    }
  }
  if (content.substring(1) == "53 38 4B 25 11 00 01") { // Change here the UID of the authorized card/cards
    Serial.println("Authorized access");
    Serial.println();
    delay(500);

    // Move both steppers 360 degrees
    StepsRequired = STEPS_PER_OUT_REV  * 240/360;  // 180degrees
    stepper1.setMaxSpeed(1000.0);
    stepper1.move(StepsRequired);
    stepper1.setSpeed(stepperSpeed);

    stepper2.setMaxSpeed(1000.0);
    stepper2.move(-StepsRequired);
    stepper2.setSpeed(stepperSpeed);

    // Wait for both steppers to reach the target position
    while (stepper1.distanceToGo() != 0 && stepper2.distanceToGo() != 0) {
      stepper1.runSpeedToPosition();
      stepper2.runSpeedToPosition();
    }
  }

    if (content.substring(1) == "53 BA D6 23 11 00 01") { // Change here the UID of the authorized card/cards lurus
    Serial.println("Authorized access");
    Serial.println();
    delay(500);

    // Move both steppers 360 degrees
    StepsRequired = STEPS_PER_OUT_REV  * 240/360;  // 180degrees
    stepper1.setMaxSpeed(1000.0);
    stepper1.move(StepsRequired);
    stepper1.setSpeed(stepperSpeed);

    stepper2.setMaxSpeed(1000.0);
    stepper2.move(-StepsRequired);
    stepper2.setSpeed(stepperSpeed);

    // Wait for both steppers to reach the target position
    while (stepper1.distanceToGo() != 0 && stepper2.distanceToGo() != 0) {
      stepper1.runSpeedToPosition();
      stepper2.runSpeedToPosition();
    }
    }
     if (content.substring(1) == "53 CF D9 23 11 00 01") { // Change here the UID of the authorized card/cards lurus
    Serial.println("Authorized access");
    Serial.println();
    delay(500);

    // Move both steppers 360 degrees
    StepsRequired = STEPS_PER_OUT_REV  * 240/360;  // 180degrees
    stepper1.setMaxSpeed(1000.0);
    stepper1.move(StepsRequired);
    stepper1.setSpeed(stepperSpeed);

    stepper2.setMaxSpeed(1000.0);
    stepper2.move(-StepsRequired);
    stepper2.setSpeed(stepperSpeed);

    // Wait for both steppers to reach the target position
    while (stepper1.distanceToGo() != 0 && stepper2.distanceToGo() != 0) {
      stepper1.runSpeedToPosition();
      stepper2.runSpeedToPosition();
    }
    }
      if (content.substring(1) == "53 02 DD 23 11 00 01") { // Change here the UID of the authorized card/cards lurus
    Serial.println("Authorized access");
    Serial.println();
    delay(500);

    // Move both steppers 360 degrees
    StepsRequired = STEPS_PER_OUT_REV  * 240/360;  // 180degrees
    stepper1.setMaxSpeed(1000.0);
    stepper1.move(StepsRequired);
    stepper1.setSpeed(stepperSpeed);

    stepper2.setMaxSpeed(1000.0);
    stepper2.move(-StepsRequired);
    stepper2.setSpeed(stepperSpeed);

    // Wait for both steppers to reach the target position
    while (stepper1.distanceToGo() != 0 && stepper2.distanceToGo() != 0) {
      stepper1.runSpeedToPosition();
      stepper2.runSpeedToPosition();
    }
    }
     if (content.substring(1) == "53 56 E0 23 11 00 01") { // Change here the UID of the authorized card/cards lurus
    Serial.println("Authorized access");
    Serial.println();
    delay(500);

    // Move both steppers 360 degrees
    StepsRequired = STEPS_PER_OUT_REV  * 240/360;  // 180degrees
    stepper1.setMaxSpeed(1000.0);
    stepper1.move(StepsRequired);
    stepper1.setSpeed(stepperSpeed);

    stepper2.setMaxSpeed(1000.0);
    stepper2.move(-StepsRequired);
    stepper2.setSpeed(stepperSpeed);

    // Wait for both steppers to reach the target position
    while (stepper1.distanceToGo() != 0 && stepper2.distanceToGo() != 0) {
      stepper1.runSpeedToPosition();
      stepper2.runSpeedToPosition();
    }
    }
   
   
     if (content.substring(1) == "53 6E CE 23 11 00 01") { // Change here the UID of the authorized card/cards lurus
    Serial.println("Authorized access");
    Serial.println();
    delay(500);

    // Move both steppers 360 degrees
    StepsRequired = STEPS_PER_OUT_REV  * 240/360;  // 180degrees
    stepper1.setMaxSpeed(1000.0);
    stepper1.move(StepsRequired);
    stepper1.setSpeed(stepperSpeed);

    stepper2.setMaxSpeed(1000.0);
    stepper2.move(-StepsRequired);
    stepper2.setSpeed(stepperSpeed);

    // Wait for both steppers to reach the target position
    while (stepper1.distanceToGo() != 0 && stepper2.distanceToGo() != 0) {
      stepper1.runSpeedToPosition();
      stepper2.runSpeedToPosition();
    }
    }
   
   if (content.substring(1) == "53 CC E3 23 11 00 01") //(kiri)
   { // Change here the UID of the authorized card/cards
    Serial.println("Authorized access");
    Serial.println();
    delay(500);

    // Move both steppers 360 degrees
    StepsRequired = STEPS_PER_OUT_REV * 310/360;  // 360 degrees
    stepper1.setMaxSpeed(1000.0);
    stepper1.move(StepsRequired);
    stepper1.setSpeed(stepperSpeed);

    stepper2.setMaxSpeed(1000.0);
    stepper2.move(StepsRequired);
    stepper2.setSpeed(stepperSpeed);

    // Wait for both steppers to reach the target position
    while (stepper1.distanceToGo() != 0 && stepper2.distanceToGo() != 0) {
      stepper1.runSpeedToPosition();
      stepper2.runSpeedToPosition();
    }
    StepsRequired = STEPS_PER_OUT_REV * 240 / 360;  // 360 degrees
    stepper1.setMaxSpeed(1000.0);
    stepper1.move(StepsRequired);
    stepper1.setSpeed(stepperSpeed);

    stepper2.setMaxSpeed(1000.0);
    stepper2.move(-StepsRequired);
    stepper2.setSpeed(stepperSpeed);

    // Wait for both steppers to reach the target position
    while (stepper1.distanceToGo() != 0 && stepper2.distanceToGo() != 0) {
      stepper1.runSpeedToPosition();
      stepper2.runSpeedToPosition();
  }
}
 if (content.substring(1) == "53 63 E7 23 11 00 01") //(kiri)
   { // Change here the UID of the authorized card/cards
    Serial.println("Authorized access");
    Serial.println();
    delay(500);

    // Move both steppers 360 degrees
    StepsRequired = STEPS_PER_OUT_REV * 310/360;  // 360 degrees
    stepper1.setMaxSpeed(1000.0);
    stepper1.move(StepsRequired);
    stepper1.setSpeed(stepperSpeed);

    stepper2.setMaxSpeed(1000.0);
    stepper2.move(StepsRequired);
    stepper2.setSpeed(stepperSpeed);

    // Wait for both steppers to reach the target position
    while (stepper1.distanceToGo() != 0 && stepper2.distanceToGo() != 0) {
      stepper1.runSpeedToPosition();
      stepper2.runSpeedToPosition();
    }
    StepsRequired = STEPS_PER_OUT_REV * 240 / 360;  // 360 degrees
    stepper1.setMaxSpeed(1000.0);
    stepper1.move(StepsRequired);
    stepper1.setSpeed(stepperSpeed);

    stepper2.setMaxSpeed(1000.0);
    stepper2.move(-StepsRequired);
    stepper2.setSpeed(stepperSpeed);

    // Wait for both steppers to reach the target position
    while (stepper1.distanceToGo() != 0 && stepper2.distanceToGo() != 0) {
      stepper1.runSpeedToPosition();
      stepper2.runSpeedToPosition();
  }
}
 if (content.substring(1) == "53 69 EA 23 11 00 01") //(kiri)
   { // Change here the UID of the authorized card/cards
    Serial.println("Authorized access");
    Serial.println();
    delay(500);

    // Move both steppers 360 degrees
    StepsRequired = STEPS_PER_OUT_REV * 310/360;  // 360 degrees
    stepper1.setMaxSpeed(1000.0);
    stepper1.move(StepsRequired);
    stepper1.setSpeed(stepperSpeed);

    stepper2.setMaxSpeed(1000.0);
    stepper2.move(StepsRequired);
    stepper2.setSpeed(stepperSpeed);

    // Wait for both steppers to reach the target position
    while (stepper1.distanceToGo() != 0 && stepper2.distanceToGo() != 0) {
      stepper1.runSpeedToPosition();
      stepper2.runSpeedToPosition();
    }
    StepsRequired = STEPS_PER_OUT_REV * 240 / 360;  // 360 degrees
    stepper1.setMaxSpeed(1000.0);
    stepper1.move(StepsRequired);
    stepper1.setSpeed(stepperSpeed);

    stepper2.setMaxSpeed(1000.0);
    stepper2.move(-StepsRequired);
    stepper2.setSpeed(stepperSpeed);

    // Wait for both steppers to reach the target position
    while (stepper1.distanceToGo() != 0 && stepper2.distanceToGo() != 0) {
      stepper1.runSpeedToPosition();
      stepper2.runSpeedToPosition();
  }
}
  if (content.substring(1) == "53 25 ED 23 11 00 01") //(kiri)
   { // Change here the UID of the authorized card/cards
    Serial.println("Authorized access");
    Serial.println();
    delay(500);

    // Move both steppers 360 degrees
    StepsRequired = STEPS_PER_OUT_REV * 310/360;  // 360 degrees
    stepper1.setMaxSpeed(1000.0);
    stepper1.move(StepsRequired);
    stepper1.setSpeed(stepperSpeed);

    stepper2.setMaxSpeed(1000.0);
    stepper2.move(StepsRequired);
    stepper2.setSpeed(stepperSpeed);

    // Wait for both steppers to reach the target position
    while (stepper1.distanceToGo() != 0 && stepper2.distanceToGo() != 0) {
      stepper1.runSpeedToPosition();
      stepper2.runSpeedToPosition();
    }
    StepsRequired = STEPS_PER_OUT_REV * 240 / 360;  // 360 degrees
    stepper1.setMaxSpeed(1000.0);
    stepper1.move(StepsRequired);
    stepper1.setSpeed(stepperSpeed);

    stepper2.setMaxSpeed(1000.0);
    stepper2.move(-StepsRequired);
    stepper2.setSpeed(stepperSpeed);

    // Wait for both steppers to reach the target position
    while (stepper1.distanceToGo() != 0 && stepper2.distanceToGo() != 0) {
      stepper1.runSpeedToPosition();
      stepper2.runSpeedToPosition();
 }
   }

   
}
void moveForward() {
  LeftWheel.setSpeed(wheelSpeed/2);
  RightWheel.setSpeed(wheelSpeed/2);
  Serial.print("Moving forward with speed: ");
  Serial.println(wheelSpeed);  // Debugging: print current speed
}

void moveBackward() {
  LeftWheel.setSpeed(-wheelSpeed/2);
  RightWheel.setSpeed(wheelSpeed/2);
  Serial.print("Moving backward with speed: ");
  Serial.println(wheelSpeed);  // Debugging: print current speed
}

void rotateLeft() {
  // Adjust the speed and steps as needed to achieve the desired rotation
  RightWheel.setSpeed(wheelSpeed /2);
  LeftWheel.setSpeed(-wheelSpeed / 2); // Example adjustment
  Serial.print("Rotating left with speed: ");
  Serial.println(wheelSpeed);  // Debugging: print current speed
}

void rotateRight() {
  // Adjust the speed and steps as needed to achieve the desired rotation
  RightWheel.setSpeed(wheelSpeed /2);
  LeftWheel.setSpeed(wheelSpeed / 2); // Example adjustment
  Serial.print("Rotating right with speed: ");
  Serial.println(wheelSpeed);  // Debugging: print current speed
}

void stopMoving() {
  LeftWheel.setSpeed(0);
  RightWheel.setSpeed(0);
  Serial.println("Stopping motors");  // Debugging: print stopping message
}




//93 67 8F 08
Reply all
Reply to author
Forward
0 new messages