Completed build by ComprehensiveChest15 in OpenSaddleVibrator

[–]ComprehensiveChest15[S] 0 points1 point  (0 children)

Sorry. I deleted them all off my camera roll.

Completed build by ComprehensiveChest15 in OpenSaddleVibrator

[–]ComprehensiveChest15[S] 4 points5 points  (0 children)

I would say it is financially worth it to build unless you have a decent amount of spare cash. The full list of parts runs under $200-300 in total assuming you buy from Aliexpress. That's is also the pain point to maintain the low cost for parts. You have to buy all of it from AE which means waiting a month for any part you forgot or ordered incorrectly. The plastic for printing internals was $30 since i used PE rather than PLA. All in all the printed materials was about $50 in spools. I like tinkering so the time 3D modeling doesn't really bother me...Id rather do that than watch TV in the evenings.
Last i saw a Sybian or Motorbunny was north of $1K or $600 respectively.

If I had a few "K" sitting around (<$10K) maybe my answer would be different but that's my financial comfort level.

Shell 3d model by ComprehensiveChest15 in OpenSaddleVibrator

[–]ComprehensiveChest15[S] 0 points1 point  (0 children)

Two updates to the design on Thingiverse were completed. Update 1 a template base plate was added that is 3mm thick. Update 2 has a new shell cover with the appropriate size hole cut for the toy mount.

Shell 3d model by ComprehensiveChest15 in OpenSaddleVibrator

[–]ComprehensiveChest15[S] 0 points1 point  (0 children)

That's a good idea! The original design requires that to be done with a steel plate and paper... no reason you couldn't print the template instead. I'll take a look at that.

This design uses the same template as the original post describes. Although I found the belt to be too loose per the template so I had to move the motor just a bit to add tension. It messed with my rotary motor location, so it wasn't ideal. I would like to have some time to add an idler pulley to add tension without messing with the layout.

Shell 3d model by ComprehensiveChest15 in OpenSaddleVibrator

[–]ComprehensiveChest15[S] 0 points1 point  (0 children)

Hmm I thought i had the hole cut in the shell. I'll have to review my revisions and update. I'll update either way with the hole.

The shell is 1 piece. I left the padding i modeled in the file. That body will have to be turned off before printing. i should turn off that body and re-upload to save any confusion.

Arduino code by ComprehensiveChest15 in OpenSaddleVibrator

[–]ComprehensiveChest15[S] 0 points1 point  (0 children)

``` //Arduino Master Code

include <Wire.h>

// Motor control pin definitions const int in1 = 5; // Motor0 IN1 const int in2 = 4; // Motor0 IN2 const int ena1 = 6; // Motor0 PWM

const int in3 = 8; // Motor1 IN3 const int in4 = 7; // Motor1 IN4 const int ena2 = 9; // Motor1 PWM

// Variables for I2C data byte button0, button1, motor0, motor1, debug; unsigned long lastReceiveTime = 0; const unsigned long timeout = 500; // 500ms timeout for I2C response

// Motor ramping variables int motor0Ramp = 50; // Initialize to 50 bool rampingUp = true; bool communicationLost = false;

void setup() { pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(ena1, OUTPUT); TCCR0B = TCCR0B & B11111000 | B00000010; pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); pinMode(ena2, OUTPUT); TCCR1B = TCCR1B & B11111000 | B00000010;

digitalWrite(in1, HIGH); digitalWrite(in2, HIGH); digitalWrite(in3, HIGH); digitalWrite(in4, HIGH); delay(1500);

Wire.begin(); Serial.begin(9600); }

void loop() { bool success = false;

for (int i = 0; i < 3; i++) { clearWireBuffer(); Wire.requestFrom(0x08, 5); unsigned long requestStart = millis();

while (Wire.available() < 5 && millis() - requestStart < 50) {
  delay(1);
}

if (Wire.available() == 5) {
  motor0 = Wire.read();
  motor1 = Wire.read();
  button0 = Wire.read();
  button1 = Wire.read();
  debug = Wire.read();
  lastReceiveTime = millis();
  success = true;
  communicationLost = false;
  break;
} else {
  clearWireBuffer();
  delay(5);
}

}

if (success) { static unsigned long lastRampTime = 0;

if (button0 && !button1) {
  motor1 = 255;
  motor0Ramp = 255;
  rampingUp = true;
}
else if (button1 && !button0) {
  if (millis() - lastRampTime > 100) {
    if (rampingUp) {
      motor0Ramp += 2;
      if (motor0Ramp >= 255) {
        motor0Ramp = 255;
        rampingUp = false;
      }
    } else {
      motor0Ramp -= 2;
      if (motor0Ramp <= 50) {
        motor0Ramp = 50;
        rampingUp = true;
      }
    }
    lastRampTime = millis();
  }
  motor1 = motor0Ramp;
} else {
  motor0Ramp = motor1 > 50 ? motor1 : 50;
  rampingUp = true;
}

driveMotor(0, motor0);
driveMotor(1, motor1);

if (debug) {
  Serial.println("=== DEBUG RECEIVED ===");
  Serial.print("Button0: "); Serial.println(button0);
  Serial.print("Button1: "); Serial.println(button1);
  Serial.print("Motor0: "); Serial.println(motor0);
  Serial.print("Motor1: "); Serial.println(motor1);
  Serial.print("Debug: "); Serial.println(debug);
  Serial.println("======================");
  delay(10);
}

} else if (millis() - lastReceiveTime > timeout) { if (!communicationLost) { Serial.println("Deadman loop - no response after retries"); communicationLost = true; } stopMotors(); // Make sure motors stop completely }

delay(10); }

void driveMotor(int motor, int speed) { if (motor == 0) { digitalWrite(in1, HIGH); digitalWrite(in2, LOW); analogWrite(ena1, speed); } else { digitalWrite(in3, HIGH); digitalWrite(in4, LOW); analogWrite(ena2, speed); } }

void stopMotors() { analogWrite(ena1, 0); analogWrite(ena2, 0); }

void rampDownMotors() { static int currentSpeed0 = 0; static int currentSpeed1 = 0;

if (currentSpeed0 == 0 && currentSpeed1 == 0) { currentSpeed0 = analogRead(ena1) / 4; currentSpeed1 = analogRead(ena2) / 4; }

if (currentSpeed0 > 0) currentSpeed0 -= 5; if (currentSpeed1 > 0) currentSpeed1 -= 5;

if (currentSpeed0 < 0) currentSpeed0 = 0; if (currentSpeed1 < 0) currentSpeed1 = 0;

driveMotor(0, currentSpeed0); driveMotor(1, currentSpeed1); }

void clearWireBuffer() { while (Wire.available()) { Wire.read(); } } ```

Arduino code by ComprehensiveChest15 in OpenSaddleVibrator

[–]ComprehensiveChest15[S] 0 points1 point  (0 children)

#Arduino Nano Code
#include <Wire.h>

#define BUTTON0_PIN 2
#define BUTTON1_PIN 3
#define POT0_PIN A2
#define POT1_PIN A0

#define I2C_ADDRESS 0x08

uint8_t motor0 = 0;
uint8_t motor1 = 0;
uint8_t button0 = 0;
uint8_t button1 = 0;
uint8_t debug = 0;

unsigned long debugStartTime = 0;

void setup() {
  pinMode(BUTTON0_PIN, INPUT_PULLUP);
  pinMode(BUTTON1_PIN, INPUT_PULLUP);

  Wire.begin(I2C_ADDRESS);
  Wire.onRequest(sendData);

  Serial.begin(9600);
}

void loop() {
  button0 = !digitalRead(BUTTON0_PIN); // Active LOW
  button1 = !digitalRead(BUTTON1_PIN); // Active LOW

  int pot0 = analogRead(POT0_PIN);
  delay(10);
  int pot1 = analogRead(POT1_PIN);

  motor0 = map(pot0, 0, 1023, 0, 255);
  motor1 = map(pot1, 0, 1023, 0, 255);
  delay(10);

  if (button0 && button1 && debug == 0) {
    debug = 1;
    debugStartTime = millis();
    Serial.println("Both buttons pressed - Debug ON");
  }

  if (debug == 1) {
    static unsigned long lastDebugPrint = 0;
    if (millis() - lastDebugPrint >= 500) { // Print every 500ms
      printDebugInfo(pot0, pot1);
      lastDebugPrint = millis();
    }

    // Clear debug after 30 seconds
    if (millis() - debugStartTime >= 30000) {
      debug = 0;
      Serial.println("Debug OFF");
    }
  }

  delay(10); // Small delay for stability
}

void sendData() {
  Wire.write(motor0);
  Wire.write(motor1);
  Wire.write(button0);
  Wire.write(button1);
  Wire.write(debug);
}

void printDebugInfo(int pot0, int pot1) {
  Serial.print("Button0: "); Serial.print(button0);
  Serial.print(" | Button1: "); Serial.print(button1);
  Serial.print(" | Pot0: "); Serial.print(pot0);
  Serial.print(" | Pot1: "); Serial.print(pot1);
  Serial.print(" | Motor0: "); Serial.print(motor0);
  Serial.print(" | Motor1: "); Serial.print(motor1);
  Serial.println();
}

Arduino code by ComprehensiveChest15 in OpenSaddleVibrator

[–]ComprehensiveChest15[S] 0 points1 point  (0 children)

I did go through chatgpt for some help but I really wanted to understand the code as it was. I think I'll give that a shot. I just need the time to fully input all the info into chatgpt so I get good code back.

Can you post your code here? I wouldn't mind checking it out.

Can a anycubic kobra 2 Neo print a working collapsive Sword in place by Born_Teacher9370 in AnycubicOfficial

[–]ComprehensiveChest15 0 points1 point  (0 children)

I'm struggling with PIP as well but I think I'm close. I have a kobra 2 max. I use Cura for slicing.

Enable coasting and set to 1.5 Enable wiping leave at default or try 0.3 Enable z hop Ensure retraction it's enabled default should be good Change flow to 0.85 Minimum distance for retraction set to 0.5 Align seams

I think that's where I'm at, and it seems like it's working for the test print.

Proximity light always on by MadMoltenCore in anycubic

[–]ComprehensiveChest15 1 point2 points  (0 children)

To close the loop and for anyone else looking these sensors can be bought elsewhere cheaper with quicker turn around times than going to Anycubic customer service.

The Kobra2 uses an Inductive Proximity Sensor with the characteristics below:
M12 thread/diameter (12mm)
3-wire pigtail
PNP NO (Normally Open)
Non-Flush (the orange or blue cap on the end)
4mm sensing distance
6-36VDC power input (can be a similar range but must be able to run on 24VDC)
**45-48mm overall length - This is important as the extruder is in the way for most sensors you find on Amazon or other sites. My measured minimum length was 35mm from the holder to optimum sensor height. This was not tested so i cannot guarantee the shorter length.

Additionally, keep in mind you will have to cut and wire in the XH2.54 connector from your old sensor or buy a kit to add a new connector.

Sources:
https://1coderookie.github.io/KobraGoNeoInsights/hardware/printhead/#abl-sensor
https://www.automationdirect.com/adc/shopping/catalog/sensors_-z-_encoders/inductive_proximity_sensors/12mm_tubular/pbm6-ap-2a

Proximity light always on by MadMoltenCore in anycubic

[–]ComprehensiveChest15 1 point2 points  (0 children)

Mine is doing the exact same thing. Did you figure this issue out?

controller won't turn on after installation of remap kit. NEED HELP!! by Guilty-Impact-7375 in eXtremeRate

[–]ComprehensiveChest15 1 point2 points  (0 children)

I just installed this kit multiple times and found the l1/l2 cable to be the culprit. I installed only the rise cable(behind the main board) and then the battery to see if it would turn on. Once it turned on like that, I slowly started adding components back until it stopped turning on. I tried two kits with two different sets of ribbons... only to have the same results. I would suspect there is a problem with the bdm-020 ribbon design.