Never Feel Sad Again with This "Encouragement Machine"

Feeling deflated? Then why not make yourself an "Encouragement Machine"?
Christopher McFadden

If the video player is not working, you can click on this alternative video link.

Is life getting you down? Would you like to have a little bit of encouragement on tap? 

Then this Arduino-based "Encouragement Machine" might, literally, be the ticket. Initially from JBV Creative and posted to YouTube, we hope you enjoy the build.

RELATED: MAKING A DIY CARDBOARD BUBBLE MACHINE

Unfortunately, detailed instructions on how to build this amazing machine have not been provided. However, there are some basic tools and bits and pieces you will need to make this thing a reality.

We have included links to some of the products in case you need to buy them: 

Main components:

Gear needed:

encouragement machine complete
The complete machine. Source: JBV Creative / YouTube

With all your gear and other components in hand, you can now attempt to build this amazing machine for yourself -- if you dare!

The basic concept of the machine is to feed a length of the paper from a spool underneath the stamp in preparation for your customized encouraging message. 

This is achieved through a series of stepper and regular motors to move the paper a set distance and push down the ink stamp accordingly. At the other end of the machine is a mechanism for cutting off the messages once they have been feed through the machine. 

It really is as simple, well not really, as that. 

The first step is to decide on an encouraging message, like "You Can't Do It!". Customize your ink stamp message as you see fit. 

encouragement machine messages
The message is the message. Source: JBV Creative / YouTube

The next stage is to create the CAD model for the machine. It consists of three main components;

  • A stamping mechanism -- for creating the message.
  • A paper feeding mechanism -- to feed the paper for stamping.
  • Scissor or cutting mechanism -- to cut off the message at the end of the process.

In this video, the creator first designed the stamping mechanism. 

This is the part of the device that will do the business end of the encouragement when the machine is finished. It uses a single regular DC motor.

encouragement machine stamp mechanism
The stamp mechanism model. Source: JBV Creative / YouTube

DC motors, being relatively simple, are easy to control and manipulate. By adding a rack and pinion system, the DC motor will be used to lower and lift a regular ink stamp. 

The next main component is the scissors mechanism. This part of the machine is driven by a servo motor which will later open and close a pair of scissors to cut the messages off into small pieces.

encouragement machine scissors mechanism
The scissors mechanism. Source: JBV Creative / YouTube

The final and most complex part of the machine is the paper feeding machine. It is driven by one single stepper motor.

The reason for the choice of a stepper motor is the amount of fine control you can have over it. As this motor will be used to feed paper into the machine, this level of control is vital.

encouragement machine paper feeder
The paper feeder mechanism with a stepper motor in place. Source: JBV Creative / YouTube

You will also need to design a base for the entire machine. Pay attention to the fact that this model is designed to have the wires run underneath a wooden cover to the base. 

Make sure you allow enough room for the wires to run. The creator sadly did not and needed to modify the design post-print by excavating some parts of the PLA base. 

With the models complete, the next step is to 3D print all the main pieces. All 3D parts are printed in PLA. 

encouragement machine 3d print
Print the pieces in PLA. Source: JBV Creative / YouTube

Please note that other pieces are also made from laser-cut plywood too, like the main paper-reel. 

The creator has made their model modular so that all the relevant pieces can be snapped together and onto the main base. 

encouragement machine assembly
Some parts of the machine have also been laser cut from plywood, as the example here. Source: JBV Creative / YouTube

Watch the video for more details on this section as no models have been provided. 

With all the bits printed or laser-cut, now all that remains is to assemble the model. To do this it is recommended that you watch the video in its entirety. 

encouragement machine scissors partial assembly
Partial assembly of scissors mechanism. Source: JBV Creative / YouTube

You will need a selection screw, rubber O-rings, and other assorted parts to complete the build. 

Continue assembly until the machine is completed.

encouragement machine paper feeder
Partial assembly of paper feeder. Not the use of rubber O rings to provide friction and springs. Source: JBV Creative / YouTube
encouragement machine near complete with stamp
Machine nearly completed showing the addition of the stamp. Source: JBV Creative / YouTube

With the mechanical parts of the machine sorted. The next and the most critical stage is creating the microelectronics and code. Again, little information has been provided about this stage so you will need to play around until it works. 

However, we have included the full code at the end of the article. 

encouragement machine electronics
Close up of the microelectronics. Source: JBV Creative / YouTube

Now all that remains is to upload the code to the Arduino, plug on the power, and let the machine do its thing!

Never again will you need to feel sorry for yourself with such an amazing encouraging machine at your fingertips. Lucky you!

As promised, here is the code in full: -

#include  Servo scissors; const int in1 = 12;
 const int in2 = 10;
 const int enA = 11;
 const int limitSwitch = 8;
 const int dirPin = 2;
 const int stepPin = 3;
 const int enablePin = 4;
 const int buttonPin = 5;
 const int scissorPin = 6;
 const int ledPin = 8; char val; void setup() {
 Serial.begin(9600); pinMode(in1, OUTPUT);
 pinMode(in2, OUTPUT);
 pinMode(enA, OUTPUT);
 pinMode(buttonPin, INPUT_PULLUP);
 pinMode(dirPin, OUTPUT);
 pinMode(stepPin, OUTPUT);
 pinMode(ledPin, OUTPUT); scissors.attach(scissorPin); digitalWrite(dirPin, LOW); //set direction of stepper motor
 digitalWrite(stepPin, LOW);
 digitalWrite(enablePin,LOW); digitalWrite(ledPin,HIGH);
 delay(250);
 digitalWrite(ledPin,LOW);
 delay(250);
 digitalWrite(ledPin, HIGH);
 delay(250);
 digitalWrite(ledPin,LOW);
 delay(250);
 digitalWrite(ledPin, HIGH); } //end of setup void loop() { if (digitalRead(buttonPin) == LOW){
  provideEncouragement();       
 }
 if (Serial.available() > 0) {         
  val = Serial.read();         
 }         
 if (val == 'u') {         
  stampUp(70);         
  Serial.println("forward");         
 }         
 if (val == 'd') {         
  stampDown(130);         
  Serial.println("backward");         
 }         
 if (val == 's') {         
  stampStop();         
  Serial.println("stopAll");         
 }
 if (val == 'l'){
 Serial.println(digitalRead(limitSwitch));         
 }
 if (val == 'f'){
 feedPaper(650);
 Serial.println("Feeding Paper");
 }
 if (val == 'g'){
 feedPaper(290);
 }
 if (val == 'h'){
 feedPaper(20);
 }
 if(val == 'b'){
 feedPaper(800);
 }
 if(val == 'n'){
 feedPaperRev(800);
 } if (val == 'o'){
 openScissors();
 Serial.println("Opening Scissors");
 }
 if (val == 'c'){
 closeScissors();
 Serial.println("Closing Scissors");
 } }//end of loop    void provideEncouragement(){
 Serial.println("You can do it muthafucka"); digitalWrite(ledPin,LOW);
 delay(250);
 digitalWrite(ledPin, HIGH);
 delay(250);
 digitalWrite(ledPin,LOW);
 delay(250);
 digitalWrite(ledPin, HIGH); delay(500); stampDown(130);
 delay(3800);
 stampUp(70);
 delay(3200);
 stampStop(); delay(2500);
 feedPaper(657);
 delay(900);
 closeScissors();
 delay(500);
 openScissors();
 delay(900);
 feedPaper(300);
 delay(900);
 closeScissors();
 delay(500);
 openScissors(); digitalWrite(ledPin,LOW);
 delay(250);
 digitalWrite(ledPin, HIGH);
 delay(250);
 digitalWrite(ledPin,LOW);
 delay(250);
 digitalWrite(ledPin, HIGH); } void stampDown(int speedValue){
 digitalWrite(in1, HIGH);
 digitalWrite(in2, LOW);
 analogWrite(enA, speedValue);
 } //end of motorForward void stampUp(int speedValue){
 digitalWrite(in1, LOW);
 digitalWrite(in2, HIGH);
 analogWrite(enA, speedValue);
 } //end of stampUP void stampStop(){
 digitalWrite(in1, LOW);
 digitalWrite(in2, LOW);
 } //end of stampStop void feedPaper(int stepNumber){
 digitalWrite(dirPin, LOW);
 int i=0;
 openScissors();
 digitalWrite(enablePin, HIGH);
 while(i<stepNumber){
  digitalWrite(stepPin, HIGH);
  delayMicroseconds(19000);
  digitalWrite(stepPin,LOW);
  delayMicroseconds(19000);
  i++;
 }
 digitalWrite(enablePin, LOW);
 } //end of feedPaper void feedPaperRev(int stepNumber){
 digitalWrite(dirPin, HIGH);
 int i=0;
 openScissors();
 digitalWrite(enablePin, HIGH);
 while(i<stepNumber){
  digitalWrite(stepPin, HIGH);
  delayMicroseconds(19000);
  digitalWrite(stepPin,LOW);
  delayMicroseconds(19000);
  i++;
 }
 digitalWrite(enablePin, LOW);
 } //end of feedPaperRev void openScissors(){
 scissors.write(100);
 } //end of openScissors void closeScissors(){
 scissors.write(25);
 delay(250);
 scissors.write(55);
 } //end of closeScissors

Add Interesting Engineering to your Google News feed.
Add Interesting Engineering to your Google News feed.
message circleSHOW COMMENT (1)chevron
Job Board