typalowski
Published © GPL3+

Automatic Shirt Folding Machine

Wanted to over-engineer a more efficient way to be lazy. Thus, I made a machine that folds my shirts (mostly) at the push of a button!

IntermediateShowcase (no instructions)12,678
Automatic Shirt Folding Machine

Things used in this project

Hardware components

Cytron Technologies MD10C-R3 Motor Controller Board
×1
Arduino UNO
Arduino UNO
×1
Pushbutton Switch, Momentary
Pushbutton Switch, Momentary
×1

Software apps and online services

Arduino IDE
Arduino IDE

Hand tools and fabrication machines

Soldering iron (generic)
Soldering iron (generic)
Hot glue gun (generic)
Hot glue gun (generic)

Story

Read more

Custom parts and enclosures

Motor Coupler

3D print STL for 37mm Drive Shaft and .25inch wooden dowel.

Motor Clamp

3D print STL for DC Motor - use zip ties to clamp motor.

Motor Paddle

3D print STL for 37mm Drive Shaft and 0.1875" foam board.

Schematics

Circuit Diagram

Connect wires as shown. You can tie all of the 12V power supplies to the same power rail on the other side of the breadboard.

Code

Motor Control Code

Arduino
Adjust the timing of the motors via the "int delaymills_ = ___;" lines.
//define pin name
#define dir 1  // Direction
#define pwrA 2 // Power for Motor A
#define pwrB 4 // Power for Motor B
#define pwrC 7 // Power for Motor C

//constants won't change
const int buttonPin = 8;     // the number of the pushbutton pin

// variables will change
int buttonState = 0;         // variable for reading the pushbutton status
int pwrAState = LOW;
int pwrBState = LOW;
int pwrcState = LOW;
int delaymillsA = 400;
int delaymillsAr = 400;       // Return delay
int delaymillsB = 400;
int delaymillsBr = 400;       // Return delay
int delaymillsC = 500;
int delaymillsCr = 500;       // Return delay
int delaymillsD = 100;

void setup() {
  // initialize the pwr and dir pins as outputs:
  pinMode(pwrA,OUTPUT);
  pinMode(pwrB,OUTPUT);
  pinMode(pwrC,OUTPUT);
  pinMode(dir,OUTPUT);

  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);
}
void loop() {
 // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
  if (buttonState == HIGH) {
digitalWrite(pwrA,HIGH);
digitalWrite(dir,HIGH);                                          // set DIR pin HIGH or LOW
delay(delaymillsA);
digitalWrite(dir,LOW);                                          // set DIR pin HIGH or LOW
delay(delaymillsAr);
digitalWrite(pwrA,LOW);
delay(delaymillsD);
digitalWrite(pwrB,HIGH);
digitalWrite(dir,HIGH);                                          // set DIR pin HIGH or LOW
delay(delaymillsB);
digitalWrite(dir,LOW);                                          // set DIR pin HIGH or LOW
delay(delaymillsBr);
digitalWrite(pwrB,LOW);
delay(delaymillsD);
digitalWrite(pwrC,HIGH);
digitalWrite(dir,HIGH);                                          // set DIR pin HIGH or LOW
delay(delaymillsC);
digitalWrite(dir,LOW);                                          // set DIR pin HIGH or LOW
delay(delaymillsCr);
digitalWrite(pwrC,LOW);
delay(delaymillsD);
  } else {
    // turn LED off:
    digitalWrite(pwrA, LOW);
    digitalWrite(pwrB, LOW);
    digitalWrite(pwrC, LOW);
  }
}

Credits

typalowski

typalowski

1 project • 23 followers

Comments