Devices & Components
Arduino Uno Rev3
8mm magnets
Metal Ball 9.5mm
Nema 17 Stepper Motor 34 Motor 1.8 Stepper Angle 1.5A 2 Phase Body 4-Lead
Wood Glue
Screw/Nail/Bolt (doesn't quite matter)
GT2 2M 2mm Pitch 6mm Width 120mm length
608 Bearing
Acrylic Sheet
MDF
L293D motor control shield motor drive expansion board For Arduino
8mm x 400mm Rod
GT2 2M 2mm Pitch 6mm Width 280mm length
GT2 Timing Pulley 2GT 20 Teeth 5mm bore
Hardware & Tools
File, sander or saw.
drill, screwdriver, soldering iron
Laser cutter (generic)
Software & Tools
Arduino IDE
Project description
Code
Basic code
cpp
includes 5 basic patterns to generate
1#include <AFMotor.h> 2AF_Stepper motor2(200, 2); 3AF_Stepper motor1(200, 1); 4int step360 = 0; 5int speed2 = 2; 6int speed5 = 50; 7int speed10 = 10; 8int speed15 = 15; 9int speed20 = 20; 10int i = 0; 11void setup() { 12 Serial.begin(9600); 13 14 motor1.setSpeed(100); 15 motor2.setSpeed(100); 16} 17 18void loop() { 19 Serial.println("pattern1"); 20 pattern1(); 21 Serial.println("pattern2"); 22 pattern2(); 23 Serial.println("pattern3"); 24 pattern3(); 25 Serial.println("pattern4"); 26 pattern4(); 27 Serial.println("pattern5"); 28 pattern5(); 29 30 31 32} 33 34void pattern1(){ 35 motor1.setSpeed(speed5); 36 motor2.setSpeed(speed5); 37 for (int i = 0; i <= 200; ) { 38 if (step360 == 200){ 39 motor2.step(2, FORWARD, INTERLEAVE); 40 step360= 0; 41 i++; 42 } 43 else{ 44 motor1.step(2, FORWARD, INTERLEAVE); 45 motor2.step(1, FORWARD, INTERLEAVE); 46 step360 = step360+1; 47 } 48 } 49} 50 51void pattern2(){ 52 i = 0; 53 motor1.setSpeed(speed5); 54 motor2.setSpeed(speed5); 55 for (int i = 0; i <= 100; ) { 56 if (step360 == 200){ 57 motor2.step(2, FORWARD, INTERLEAVE); 58 step360= 0; 59 i++; 60 61 } 62 else{ 63 motor1.step(4, FORWARD, INTERLEAVE); 64 motor2.step(1, FORWARD, INTERLEAVE); 65 step360 = step360+1; 66 } 67 } 68} 69 70void pattern3(){ 71 i = 0; 72 motor1.setSpeed(speed5); 73 motor2.setSpeed(speed5); 74 for (int i = 0; i <= 100;) { 75 if (step360 == 200){ 76 motor2.step(2, FORWARD, INTERLEAVE); 77 step360= 0; 78 i++; 79 80 } 81 else{ 82 motor1.step(3, FORWARD, INTERLEAVE); 83 motor2.step(2, FORWARD, INTERLEAVE); 84 step360 = step360+2; 85 } 86 } 87} 88void pattern4(){ 89 i = 0; 90 motor1.setSpeed(speed5); 91 motor2.setSpeed(speed10); 92 for (int i = 0; i <= 100;) { 93 if (step360 == 200){ 94 motor2.step(2, FORWARD, INTERLEAVE); 95 step360= 0; 96 i++; 97 98 } 99 else{ 100 motor1.step(3, FORWARD, INTERLEAVE); 101 motor2.step(1, FORWARD, INTERLEAVE); 102 step360 = step360+1; 103 } 104 } 105} 106void pattern5(){ 107 i = 0; 108 motor1.setSpeed(speed2); 109 motor2.setSpeed(speed5); 110 for (int i = 0; i <= 100;) { 111 112 if (step360 == 200){ 113 motor2.step(2,FORWARD, INTERLEAVE); 114 step360= 0; 115 i++; 116 117 } 118 else{ 119 motor1.step(10, FORWARD, INTERLEAVE); 120 motor2.step(1, FORWARD, INTERLEAVE); 121 step360 = step360+1; 122 123 } 124 } 125}
Downloadable files
Internal mechanism Parts
Cut from 3mm thickness
file.None
3mm.dxf
All 3mm plywood parts
all 3mm.dxf
6mm.dxf
All 6mm plywood parts
all 6mm.dxf
clear.dxf
Clear acrylic top plate
clear.dxf
Comments
Only logged in users can leave comments