├── .gitattributes ├── LICENSE ├── Mbot_Touch_Code ├── touchtest-move-analog │ ├── touchtest-move-analog.ino │ └── touchtest-move-analog.ino2698028739221405685.tmp ├── touchtest-move-analog6 │ └── touchtest-move-analog6.ino ├── touchtest-move-digital6 │ └── touchtest-move-digital6.ino ├── touchtest-move │ └── touchtest-move.ino └── touchtest │ └── touchtest.ino ├── Mbot_Touch_PCB ├── MAGBOT21.GBL ├── MAGBOT21.GBO ├── MAGBOT21.GBP ├── MAGBOT21.GBS ├── MAGBOT21.GML ├── MAGBOT21.GTL ├── MAGBOT21.GTO ├── MAGBOT21.GTP ├── MAGBOT21.GTS ├── MAGBOT21.TXT ├── MAGBOT21.brd ├── MAGBOT21.dri ├── MAGBOT21.gpi └── MAGBOT21.sch ├── PCB ├── bots │ ├── 49x08.brd │ ├── 49x3mm.brd │ ├── 49xbot08.brd │ ├── bot4layer.brd │ ├── microbot.BRD │ ├── microbot4x.brd │ ├── microbot4x3mm.brd │ ├── microbot9x.brd │ └── microbot9x1mm.brd ├── hires │ ├── MAGNEBOT2.BRD │ └── MAGNEBOT2.sch └── v1 │ ├── MAGNEBOT328RTM.brd │ └── MAGNEBOT328RTMX.sch ├── README.md └── sw-test └── test.ino /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /Mbot_Touch_Code/touchtest-move-analog/touchtest-move-analog.ino: -------------------------------------------------------------------------------- 1 | #include "Adafruit_FreeTouch.h" 2 | 3 | Adafruit_FreeTouch qt_up = Adafruit_FreeTouch(8, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 4 | Adafruit_FreeTouch qt_down = Adafruit_FreeTouch(A3, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 5 | Adafruit_FreeTouch qt_left = Adafruit_FreeTouch(A4, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 6 | Adafruit_FreeTouch qt_right = Adafruit_FreeTouch(42, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 7 | Adafruit_FreeTouch qt_play = Adafruit_FreeTouch(9, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 8 | 9 | #define X1 3 10 | #define X2 2 11 | #define X3 5 12 | 13 | #define Y1 12 14 | #define Y2 10 15 | #define Y3 11 16 | 17 | #define COIL 4 18 | 19 | #define SPEED 50 20 | 21 | int xpos = 1000; 22 | int ypos = 1000; 23 | 24 | 25 | 26 | void setup() { 27 | // SerialUSB.begin(115200); 28 | 29 | // while (!SerialUSB); 30 | // SerialUSB.println("FreeTouch test"); 31 | // initialize digital pin LED_BUILTIN as an output. 32 | pinMode(X1, OUTPUT); 33 | pinMode(X2, OUTPUT); 34 | pinMode(X3, OUTPUT); 35 | digitalWrite(X1, LOW); 36 | digitalWrite(X2, LOW); 37 | digitalWrite(X3, LOW); 38 | 39 | pinMode(Y1, OUTPUT); 40 | pinMode(Y2, OUTPUT); 41 | pinMode(Y3, OUTPUT); 42 | digitalWrite(Y1, LOW); 43 | digitalWrite(Y2, LOW); 44 | digitalWrite(Y3, LOW); 45 | 46 | pinMode(COIL, OUTPUT); 47 | digitalWrite(COIL, LOW); 48 | 49 | qt_up.begin(); 50 | qt_down.begin(); 51 | qt_left.begin(); 52 | qt_right.begin(); 53 | qt_play.begin(); 54 | 55 | analogWriteResolution(8) ; 56 | } 57 | 58 | 59 | 60 | void loop() { 61 | if (qt_down.measure()>850) down_step(1); 62 | if (qt_up.measure()>850) up_step(1); 63 | if (qt_left.measure()>850) left_step(1); 64 | if (qt_right.measure()>850) right_step(1); 65 | if (qt_play.measure()>850) play(); 66 | 67 | } 68 | 69 | void play () 70 | { 71 | digitalWrite(COIL, HIGH); 72 | right_step(20); 73 | down_step(20); 74 | left_step(20); 75 | up_step(20); 76 | 77 | right_step(10); 78 | down_step(10); 79 | left_step(10); 80 | up_step(10); 81 | digitalWrite(COIL, LOW); 82 | } 83 | 84 | 85 | void x_step (int xx, int pwr) 86 | { 87 | switch (xx%3){ 88 | case 0: 89 | analogWrite(X1, pwr); 90 | break; 91 | case 1: 92 | analogWrite(X2, pwr); 93 | break; 94 | case 2: 95 | analogWrite(X3, pwr); 96 | break; 97 | } 98 | } 99 | 100 | void y_step (int yy, int pwr) 101 | { 102 | switch (yy%3){ 103 | case 0: 104 | analogWrite(Y1, pwr); 105 | break; 106 | case 1: 107 | analogWrite(Y2, pwr); 108 | break; 109 | case 2: 110 | analogWrite(Y3, pwr); 111 | break; 112 | } 113 | } 114 | 115 | void right_step (int i){ 116 | for (int a = 0 ; a <= i; a++) { 117 | xpos++; 118 | // /y_step (ypos,50); 119 | x_step (xpos,255); 120 | delay (SPEED); 121 | off_all() ; 122 | } 123 | 124 | } 125 | 126 | void left_step (int i){ 127 | for (int a = 0 ; a <= i; a++) { 128 | xpos--; 129 | // y_step (ypos,50); 130 | x_step (xpos,255); 131 | delay (SPEED); 132 | off_all() ; 133 | } 134 | 135 | } 136 | 137 | 138 | void down_step (int i) 139 | { 140 | for (int a = 0 ; a <= i; a++) { 141 | ypos--; 142 | y_step (ypos,255); 143 | // x_step (xpos,50); 144 | delay (SPEED); 145 | off_all() ; 146 | 147 | // for (int s = 0 ; s <= 255; s+=2) 148 | // { 149 | // y_step (ypos,s); 150 | // y_step (ypos-1,255-s); 151 | // delay(1); 152 | // off_all() ; 153 | // } 154 | 155 | } 156 | 157 | } 158 | 159 | void up_step (int i) 160 | { 161 | for (int a = 0 ; a <= i; a++) { 162 | ypos++; 163 | y_step (ypos,255); 164 | // x_step (xpos,50); 165 | delay (SPEED); 166 | off_all() ; 167 | } 168 | 169 | } 170 | 171 | void off_all () 172 | { 173 | analogWrite(X1, 0); 174 | analogWrite(X2, 0); 175 | analogWrite(X3, 0); 176 | analogWrite(Y1, 0); 177 | analogWrite(Y2, 0); 178 | analogWrite(Y3, 0); 179 | } 180 | -------------------------------------------------------------------------------- /Mbot_Touch_Code/touchtest-move-analog/touchtest-move-analog.ino2698028739221405685.tmp: -------------------------------------------------------------------------------- 1 | #include "Adafruit_FreeTouch.h" 2 | 3 | Adafruit_FreeTouch qt_up = Adafruit_FreeTouch(8, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 4 | Adafruit_FreeTouch qt_down = Adafruit_FreeTouch(A3, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 5 | Adafruit_FreeTouch qt_left = Adafruit_FreeTouch(A4, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 6 | Adafruit_FreeTouch qt_right = Adafruit_FreeTouch(42, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 7 | Adafruit_FreeTouch qt_play = Adafruit_FreeTouch(9, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 8 | 9 | #define X1 3 10 | #define X2 2 11 | #define X3 5 12 | 13 | #define Y1 12 14 | #define Y2 10 15 | #define Y3 11 16 | 17 | #define COIL 4 18 | 19 | #define SPEED 40 20 | 21 | int xpos = 1000; 22 | int ypos = 1000; 23 | 24 | 25 | 26 | void setup() { 27 | // SerialUSB.begin(115200); 28 | 29 | // while (!SerialUSB); 30 | // SerialUSB.println("FreeTouch test"); 31 | // initialize digital pin LED_BUILTIN as an output. 32 | pinMode(X1, OUTPUT); 33 | pinMode(X2, OUTPUT); 34 | pinMode(X3, OUTPUT); 35 | digitalWrite(X1, LOW); 36 | digitalWrite(X2, LOW); 37 | digitalWrite(X3, LOW); 38 | 39 | pinMode(Y1, OUTPUT); 40 | pinMode(Y2, OUTPUT); 41 | pinMode(Y3, OUTPUT); 42 | digitalWrite(Y1, LOW); 43 | digitalWrite(Y2, LOW); 44 | digitalWrite(Y3, LOW); 45 | 46 | pinMode(COIL, OUTPUT); 47 | digitalWrite(COIL, LOW); 48 | 49 | qt_up.begin(); 50 | qt_down.begin(); 51 | qt_left.begin(); 52 | qt_right.begin(); 53 | qt_play.begin(); 54 | 55 | analogWriteResolution(8) ; 56 | } 57 | 58 | 59 | 60 | void loop() { 61 | if (qt_down.measure()>850) down_step(1); 62 | if (qt_up.measure()>850) up_step(1); 63 | if (qt_left.measure()>850) left_step(1); 64 | if (qt_right.measure()>850) right_step(1); 65 | if (qt_play.measure()>850) play(); 66 | 67 | } 68 | 69 | void play () 70 | { 71 | digitalWrite(COIL, HIGH); 72 | right_step(20); 73 | down_step(20); 74 | left_step(20); 75 | up_step(20); 76 | digitalWrite(COIL, LOW); 77 | } 78 | 79 | 80 | void x_step (int xx, int pwr) 81 | { 82 | switch (xx%3){ 83 | case 0: 84 | analogWrite(X1, pwr); 85 | break; 86 | case 1: 87 | analogWrite(X2, pwr); 88 | break; 89 | case 2: 90 | analogWrite(X3, pwr); 91 | break; 92 | } 93 | } 94 | 95 | void y_step (int yy, int pwr) 96 | { 97 | switch (yy%3){ 98 | case 0: 99 | analogWrite(Y1, pwr); 100 | break; 101 | case 1: 102 | analogWrite(Y2, pwr); 103 | break; 104 | case 2: 105 | analogWrite(Y3, pwr); 106 | break; 107 | } 108 | } 109 | 110 | void right_step (int i){ 111 | for (int a = 0 ; a <= i; a++) { 112 | xpos++; 113 | y_step (ypos,20); 114 | x_step (xpos,255); 115 | delay (SPEED); 116 | } 117 | 118 | } 119 | 120 | void left_step (int i){ 121 | for (int a = 0 ; a <= i; a++) { 122 | xpos--; 123 | y_step (ypos,20); 124 | x_step (xpos,255); 125 | delay (SPEED); 126 | off_all() ; 127 | } 128 | 129 | } 130 | 131 | 132 | void down_step (int i) 133 | { 134 | for (int a = 0 ; a <= i; a++) { 135 | ypos--; 136 | y_step (ypos,255); 137 | x_step (xpos,20); 138 | delay (SPEED); 139 | off_all() ; 140 | 141 | // for (int s = 0 ; s <= 255; s+=2) 142 | // { 143 | // y_step (ypos,s); 144 | // y_step (ypos-1,255-s); 145 | // delay(1); 146 | // off_all() ; 147 | // } 148 | 149 | } 150 | 151 | } 152 | 153 | void up_step (int i) 154 | { 155 | for (int a = 0 ; a <= i; a++) { 156 | ypos++; 157 | y_step (ypos,255); 158 | x_step (xpos,20); 159 | delay (SPEED); 160 | off_all() ; 161 | } 162 | 163 | } 164 | 165 | void off_all () 166 | { 167 | analogWrite(X1, 0); 168 | analogWrite(X2, 0); 169 | analogWrite(X3, 0); 170 | analogWrite(Y1, 0); 171 | analogWrite(Y2, 0); 172 | analogWrite(Y3, 0); 173 | } 174 | -------------------------------------------------------------------------------- /Mbot_Touch_Code/touchtest-move-analog6/touchtest-move-analog6.ino: -------------------------------------------------------------------------------- 1 | #include "Adafruit_FreeTouch.h" 2 | 3 | Adafruit_FreeTouch qt_up = Adafruit_FreeTouch(8, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 4 | Adafruit_FreeTouch qt_down = Adafruit_FreeTouch(A3, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 5 | Adafruit_FreeTouch qt_left = Adafruit_FreeTouch(A4, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 6 | Adafruit_FreeTouch qt_right = Adafruit_FreeTouch(42, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 7 | Adafruit_FreeTouch qt_play = Adafruit_FreeTouch(9, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 8 | 9 | #define X1 3 10 | #define X2 2 11 | #define X3 5 12 | 13 | #define Y1 12 14 | #define Y2 10 15 | #define Y3 11 16 | 17 | #define COIL 4 18 | #define FULLPOWER 255 19 | #define KEEPTRACK 30 20 | 21 | #define XLED 0 22 | #define YLED 1 23 | #define PLAYLED 13 24 | 25 | 26 | 27 | #define SPEED 15 28 | 29 | int xpos = 1000; 30 | int ypos = 1000; 31 | 32 | 33 | 34 | void setup() { 35 | // SerialUSB.begin(115200); 36 | 37 | // while (!SerialUSB); 38 | // SerialUSB.println("FreeTouch test"); 39 | // initialize digital pin LED_BUILTIN as an output. 40 | pinMode(X1, OUTPUT); 41 | pinMode(X2, OUTPUT); 42 | pinMode(X3, OUTPUT); 43 | 44 | pinMode(XLED, OUTPUT); 45 | pinMode(YLED, OUTPUT); 46 | pinMode(PLAYLED, OUTPUT); 47 | 48 | digitalWrite(XLED, LOW); 49 | digitalWrite(YLED, LOW); 50 | digitalWrite(PLAYLED, LOW); 51 | 52 | digitalWrite(X1, LOW); 53 | digitalWrite(X2, LOW); 54 | digitalWrite(X3, LOW); 55 | 56 | pinMode(Y1, OUTPUT); 57 | pinMode(Y2, OUTPUT); 58 | pinMode(Y3, OUTPUT); 59 | digitalWrite(Y1, LOW); 60 | digitalWrite(Y2, LOW); 61 | digitalWrite(Y3, LOW); 62 | 63 | pinMode(COIL, OUTPUT); 64 | digitalWrite(COIL, LOW); 65 | 66 | qt_up.begin(); 67 | qt_down.begin(); 68 | qt_left.begin(); 69 | qt_right.begin(); 70 | qt_play.begin(); 71 | 72 | analogWriteResolution(8) ; 73 | } 74 | 75 | 76 | 77 | void loop() { 78 | if (qt_down.measure()>850) down_step(1); 79 | if (qt_up.measure()>850) up_step(1); 80 | if (qt_left.measure()>850) left_step(1); 81 | if (qt_right.measure()>850) right_step(1); 82 | if (qt_play.measure()>850) play(); 83 | 84 | } 85 | 86 | void play () 87 | { 88 | digitalWrite(PLAYLED, HIGH); 89 | right_step(20); 90 | down_step(20); 91 | left_step(20); 92 | up_step(20); 93 | 94 | right_step(10); 95 | down_step(10); 96 | left_step(10); 97 | up_step(10); 98 | digitalWrite(PLAYLED, LOW); 99 | } 100 | 101 | 102 | void x_step (int xx, char pwr) 103 | { 104 | switch (xx%6){ 105 | case 0: 106 | analogWrite(X1, pwr); 107 | break; 108 | case 1: 109 | analogWrite(X1, pwr); 110 | analogWrite(X2, pwr); 111 | break; 112 | case 2: 113 | analogWrite(X2, pwr); 114 | break; 115 | case 3: 116 | analogWrite(X2, pwr); 117 | analogWrite(X3, pwr); 118 | break; 119 | case 4: 120 | analogWrite(X3, pwr); 121 | break; 122 | case 5: 123 | analogWrite(X3, pwr); 124 | analogWrite(X1, pwr); 125 | break; 126 | } 127 | } 128 | 129 | void y_step (int yy, char pwr) 130 | { 131 | switch (yy%6){ 132 | case 0: 133 | analogWrite(Y1, pwr); 134 | break; 135 | case 1: 136 | analogWrite(Y1, pwr); 137 | analogWrite(Y2, pwr); 138 | break; 139 | case 2: 140 | analogWrite(Y2, pwr); 141 | break; 142 | case 3: 143 | analogWrite(Y2, pwr); 144 | analogWrite(Y3, pwr); 145 | break; 146 | case 4: 147 | analogWrite(Y3, pwr); 148 | break; 149 | case 5: 150 | analogWrite(Y3, pwr); 151 | analogWrite(Y1, pwr); 152 | break; 153 | } 154 | } 155 | 156 | void right_step (int i){ 157 | for (int a = 0 ; a < i; a++) { 158 | xpos++; 159 | y_step (ypos,KEEPTRACK); 160 | x_step (xpos,FULLPOWER); 161 | delay (SPEED); 162 | off_all() ; 163 | // delay (SPEED); 164 | } 165 | 166 | } 167 | 168 | void left_step (int i){ 169 | for (int a = 0 ; a < i; a++) { 170 | xpos--; 171 | y_step (ypos,KEEPTRACK); 172 | x_step (xpos,FULLPOWER); 173 | delay (SPEED); 174 | off_all() ; 175 | // delay (SPEED); 176 | } 177 | 178 | } 179 | 180 | 181 | void down_step (int i) 182 | { 183 | digitalWrite(YLED, HIGH); 184 | for (int a = 0 ; a < i; a++) { 185 | ypos--; 186 | y_step (ypos,FULLPOWER); 187 | x_step (xpos,KEEPTRACK); 188 | delay (SPEED*2); 189 | off_all() ; 190 | } 191 | digitalWrite(YLED, LOW); 192 | } 193 | 194 | void up_step (int i) 195 | { 196 | digitalWrite(XLED, HIGH); 197 | for (int a = 0 ; a < i; a++) { 198 | ypos++; 199 | y_step (ypos,FULLPOWER); 200 | x_step (xpos,KEEPTRACK); 201 | delay (SPEED*2); 202 | off_all() ; 203 | // delay (SPEED); 204 | } 205 | digitalWrite(XLED, LOW); 206 | } 207 | 208 | void off_all () 209 | { 210 | analogWrite(X1, 0); 211 | analogWrite(X2, 0); 212 | analogWrite(X3, 0); 213 | analogWrite(Y1, 0); 214 | analogWrite(Y2, 0); 215 | analogWrite(Y3, 0); 216 | } 217 | -------------------------------------------------------------------------------- /Mbot_Touch_Code/touchtest-move-digital6/touchtest-move-digital6.ino: -------------------------------------------------------------------------------- 1 | #include "Adafruit_FreeTouch.h" 2 | 3 | Adafruit_FreeTouch qt_up = Adafruit_FreeTouch(8, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 4 | Adafruit_FreeTouch qt_down = Adafruit_FreeTouch(A3, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 5 | Adafruit_FreeTouch qt_left = Adafruit_FreeTouch(A4, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 6 | Adafruit_FreeTouch qt_right = Adafruit_FreeTouch(42, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 7 | Adafruit_FreeTouch qt_play = Adafruit_FreeTouch(9, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 8 | 9 | #define X1 3 10 | #define X2 2 11 | #define X3 5 12 | 13 | #define Y1 12 14 | #define Y2 10 15 | #define Y3 11 16 | 17 | #define COIL 4 18 | 19 | #define SPEED 25 20 | 21 | int xpos = 1000; 22 | int ypos = 1000; 23 | 24 | 25 | 26 | void setup() { 27 | // SerialUSB.begin(115200); 28 | 29 | // while (!SerialUSB); 30 | // SerialUSB.println("FreeTouch test"); 31 | // initialize digital pin LED_BUILTIN as an output. 32 | pinMode(X1, OUTPUT); 33 | pinMode(X2, OUTPUT); 34 | pinMode(X3, OUTPUT); 35 | digitalWrite(X1, LOW); 36 | digitalWrite(X2, LOW); 37 | digitalWrite(X3, LOW); 38 | 39 | pinMode(Y1, OUTPUT); 40 | pinMode(Y2, OUTPUT); 41 | pinMode(Y3, OUTPUT); 42 | digitalWrite(Y1, LOW); 43 | digitalWrite(Y2, LOW); 44 | digitalWrite(Y3, LOW); 45 | 46 | pinMode(COIL, OUTPUT); 47 | digitalWrite(COIL, LOW); 48 | 49 | qt_up.begin(); 50 | qt_down.begin(); 51 | qt_left.begin(); 52 | qt_right.begin(); 53 | qt_play.begin(); 54 | 55 | analogWriteResolution(8) ; 56 | } 57 | 58 | 59 | 60 | void loop() { 61 | if (qt_down.measure()>850) down_step(1); 62 | if (qt_up.measure()>850) up_step(1); 63 | if (qt_left.measure()>850) left_step(1); 64 | if (qt_right.measure()>850) right_step(1); 65 | if (qt_play.measure()>850) play(); 66 | 67 | } 68 | 69 | void play () 70 | { 71 | digitalWrite(COIL, HIGH); 72 | right_step(20); 73 | down_step(20); 74 | left_step(20); 75 | up_step(20); 76 | 77 | right_step(10); 78 | down_step(10); 79 | left_step(10); 80 | up_step(10); 81 | digitalWrite(COIL, LOW); 82 | } 83 | 84 | 85 | void x_step (int xx, char pwr) 86 | { 87 | switch (xx%6){ 88 | case 0: 89 | analogWrite(X1, pwr); 90 | break; 91 | case 1: 92 | analogWrite(X1, pwr); 93 | analogWrite(X2, pwr); 94 | break; 95 | case 2: 96 | analogWrite(X2, pwr); 97 | break; 98 | case 3: 99 | analogWrite(X2, pwr); 100 | analogWrite(X3, pwr); 101 | break; 102 | case 4: 103 | analogWrite(X3, pwr); 104 | break; 105 | case 5: 106 | digitalWrite(X3, pwr); 107 | digitalWrite(X1, pwr); 108 | break; 109 | } 110 | } 111 | 112 | void y_step (int yy, char pwr) 113 | { 114 | switch (yy%6){ 115 | case 0: 116 | analogWrite(Y1, pwr); 117 | break; 118 | case 1: 119 | analogWrite(Y1, pwr); 120 | analogWrite(Y2, pwr); 121 | break; 122 | case 2: 123 | analogWrite(Y2, pwr); 124 | break; 125 | case 3: 126 | analogWrite(Y2, pwr); 127 | digitalWrite(Y3, pwr); 128 | break; 129 | case 4: 130 | digitalWrite(Y3, pwr); 131 | break; 132 | case 5: 133 | analogWrite(Y3, pwr); 134 | analogWrite(Y1, pwr); 135 | break; 136 | } 137 | } 138 | 139 | void right_step (int i){ 140 | for (int a = 0 ; a < i; a++) { 141 | xpos++; 142 | y_step (ypos,10); 143 | x_step (xpos,255); 144 | delay (SPEED); 145 | off_all() ; 146 | // delay (SPEED); 147 | } 148 | 149 | } 150 | 151 | void left_step (int i){ 152 | for (int a = 0 ; a < i; a++) { 153 | xpos--; 154 | y_step (ypos,10); 155 | x_step (xpos,255); 156 | delay (SPEED); 157 | off_all() ; 158 | // delay (SPEED); 159 | } 160 | 161 | } 162 | 163 | 164 | void down_step (int i) 165 | { 166 | for (int a = 0 ; a < i; a++) { 167 | ypos--; 168 | y_step (ypos,255); 169 | // x_step (xpos,10); 170 | delay (SPEED*2); 171 | off_all() ; 172 | 173 | 174 | } 175 | 176 | } 177 | 178 | void up_step (int i) 179 | { 180 | for (int a = 0 ; a < i; a++) { 181 | ypos++; 182 | y_step (ypos,255); 183 | // x_step (xpos,10); 184 | delay (SPEED*2); 185 | off_all() ; 186 | // delay (SPEED); 187 | } 188 | 189 | } 190 | 191 | void off_all () 192 | { 193 | analogWrite(X1, 0); 194 | analogWrite(X2, 0); 195 | analogWrite(X3, 0); 196 | analogWrite(Y1, 0); 197 | analogWrite(Y2, 0); 198 | analogWrite(Y3, 0); 199 | } 200 | -------------------------------------------------------------------------------- /Mbot_Touch_Code/touchtest-move/touchtest-move.ino: -------------------------------------------------------------------------------- 1 | #include "Adafruit_FreeTouch.h" 2 | 3 | Adafruit_FreeTouch qt_up = Adafruit_FreeTouch(8, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 4 | Adafruit_FreeTouch qt_down = Adafruit_FreeTouch(A3, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 5 | Adafruit_FreeTouch qt_left = Adafruit_FreeTouch(A4, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 6 | Adafruit_FreeTouch qt_right = Adafruit_FreeTouch(42, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 7 | Adafruit_FreeTouch qt_play = Adafruit_FreeTouch(9, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 8 | 9 | #define X1 3 10 | #define X2 2 11 | #define X3 5 12 | 13 | #define Y1 12 14 | #define Y2 10 15 | #define Y3 11 16 | 17 | #define COIL 4 18 | 19 | #define SPEED 40 20 | 21 | int xpos = 1000; 22 | int ypos = 1000; 23 | 24 | 25 | 26 | void setup() { 27 | SerialUSB.begin(115200); 28 | 29 | // while (!SerialUSB); 30 | SerialUSB.println("FreeTouch test"); 31 | // initialize digital pin LED_BUILTIN as an output. 32 | pinMode(X1, OUTPUT); 33 | pinMode(X2, OUTPUT); 34 | pinMode(X3, OUTPUT); 35 | digitalWrite(X1, LOW); 36 | digitalWrite(X2, LOW); 37 | digitalWrite(X3, LOW); 38 | 39 | pinMode(Y1, OUTPUT); 40 | pinMode(Y2, OUTPUT); 41 | pinMode(Y3, OUTPUT); 42 | digitalWrite(Y1, LOW); 43 | digitalWrite(Y2, LOW); 44 | digitalWrite(Y3, LOW); 45 | 46 | pinMode(COIL, OUTPUT); 47 | digitalWrite(COIL, LOW); 48 | 49 | if (! qt_up.begin()) 50 | SerialUSB.println("Failed to begin qt on pin 1"); 51 | if (! qt_down.begin()) 52 | SerialUSB.println("Failed to begin qt on pin 2"); 53 | if (! qt_left.begin()) 54 | SerialUSB.println("Failed to begin qt on pin 3"); 55 | if (! qt_right.begin()) 56 | SerialUSB.println("Failed to begin qt on pin 4"); 57 | if (! qt_play.begin()) 58 | SerialUSB.println("Failed to begin qt on pin 5"); 59 | 60 | 61 | } 62 | 63 | 64 | 65 | void loop() { 66 | int counter, result = 0; 67 | 68 | // DIY 69 | // SerialUSB.println("\n*************************************"); 70 | // 71 | // counter = millis(); 72 | // result = qt_1.measure(); 73 | // SerialUSB.print("QT 1: "); SerialUSB.print(result); 74 | // SerialUSB.print(" ("); SerialUSB.print(millis() - counter); SerialUSB.println(" ms)"); 75 | // 76 | // counter = millis(); 77 | // result = qt_2.measure(); 78 | // SerialUSB.print("QT 2: "); SerialUSB.print(result); 79 | // SerialUSB.print(" ("); SerialUSB.print(millis() - counter); SerialUSB.println(" ms)"); 80 | // 81 | // counter = millis(); 82 | // result = qt_3.measure(); 83 | // SerialUSB.print("QT 3: "); SerialUSB.print(result); 84 | // SerialUSB.print(" ("); SerialUSB.print(millis() - counter); SerialUSB.println(" ms)"); 85 | // 86 | // counter = millis(); 87 | // result = qt_4.measure(); 88 | // SerialUSB.print("QT 4: "); SerialUSB.print(result); 89 | // SerialUSB.print(" ("); SerialUSB.print(millis() - counter); SerialUSB.println(" ms)"); 90 | // 91 | // result = qt_5.measure(); 92 | // SerialUSB.print("QT 5: "); SerialUSB.print(result); 93 | // SerialUSB.print(" ("); SerialUSB.print(millis() - counter); SerialUSB.println(" ms)"); 94 | // 95 | // delay(200); 96 | 97 | 98 | if (qt_down.measure()>850) down_step(); 99 | if (qt_up.measure()>850) up_step(); 100 | if (qt_left.measure()>850) left_step(); 101 | if (qt_right.measure()>850) right_step(); 102 | if (qt_play.measure()>850) play(); 103 | 104 | } 105 | 106 | void play () 107 | { 108 | 109 | digitalWrite(COIL, HIGH); 110 | 111 | 112 | digitalWrite(COIL, LOW); 113 | } 114 | 115 | 116 | void x_step (int xx) 117 | { 118 | switch (xx%3){ 119 | case 0: 120 | digitalWrite(X1, HIGH); 121 | break; 122 | case 1: 123 | digitalWrite(X2, HIGH); 124 | break; 125 | case 2: 126 | digitalWrite(X3, HIGH); 127 | break; 128 | } 129 | } 130 | 131 | void y_step (int yy) 132 | { 133 | switch (yy%3){ 134 | case 0: 135 | digitalWrite(Y1, HIGH); 136 | break; 137 | case 1: 138 | digitalWrite(Y2, HIGH); 139 | break; 140 | case 2: 141 | digitalWrite(Y3, HIGH); 142 | break; 143 | } 144 | } 145 | 146 | void right_step (){ 147 | xpos++; 148 | y_step (ypos); 149 | x_step (xpos); 150 | delay (SPEED); 151 | off_all() ; 152 | } 153 | 154 | void left_step (){ 155 | xpos--; 156 | y_step (ypos); 157 | x_step (xpos); 158 | delay (SPEED); 159 | off_all() ; 160 | } 161 | 162 | 163 | void down_step () 164 | { 165 | ypos--; 166 | y_step (ypos); 167 | x_step (xpos); 168 | delay (SPEED); 169 | off_all() ; 170 | } 171 | 172 | void up_step () 173 | { 174 | ypos++; 175 | y_step (ypos); 176 | x_step (xpos); 177 | delay (SPEED); 178 | off_all() ; 179 | } 180 | 181 | void off_all () 182 | { 183 | digitalWrite(X1, LOW); 184 | digitalWrite(X2, LOW); 185 | digitalWrite(X3, LOW); 186 | digitalWrite(Y1, LOW); 187 | digitalWrite(Y2, LOW); 188 | digitalWrite(Y3, LOW); 189 | 190 | } 191 | -------------------------------------------------------------------------------- /Mbot_Touch_Code/touchtest/touchtest.ino: -------------------------------------------------------------------------------- 1 | #include "Adafruit_FreeTouch.h" 2 | 3 | Adafruit_FreeTouch qt_1 = Adafruit_FreeTouch(A3, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 4 | Adafruit_FreeTouch qt_2 = Adafruit_FreeTouch(A4, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 5 | Adafruit_FreeTouch qt_3 = Adafruit_FreeTouch(8, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 6 | Adafruit_FreeTouch qt_4 = Adafruit_FreeTouch(9, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 7 | Adafruit_FreeTouch qt_5 = Adafruit_FreeTouch(42, OVERSAMPLE_4, RESISTOR_50K, FREQ_MODE_NONE); 8 | 9 | 10 | void setup() { 11 | SerialUSB.begin(115200); 12 | 13 | while (!SerialUSB); 14 | SerialUSB.println("FreeTouch test"); 15 | // initialize digital pin LED_BUILTIN as an output. 16 | pinMode(LED_BUILTIN, OUTPUT); 17 | 18 | if (! qt_1.begin()) 19 | SerialUSB.println("Failed to begin qt on pin 1"); 20 | if (! qt_2.begin()) 21 | SerialUSB.println("Failed to begin qt on pin 2"); 22 | if (! qt_3.begin()) 23 | SerialUSB.println("Failed to begin qt on pin 3"); 24 | if (! qt_4.begin()) 25 | SerialUSB.println("Failed to begin qt on pin 4"); 26 | if (! qt_5.begin()) 27 | SerialUSB.println("Failed to begin qt on pin 5"); 28 | } 29 | 30 | 31 | 32 | void loop() { 33 | int counter, result = 0; 34 | 35 | // DIY 36 | SerialUSB.println("\n*************************************"); 37 | 38 | counter = millis(); 39 | result = qt_1.measure(); 40 | SerialUSB.print("QT 1: "); SerialUSB.print(result); 41 | SerialUSB.print(" ("); SerialUSB.print(millis() - counter); SerialUSB.println(" ms)"); 42 | 43 | counter = millis(); 44 | result = qt_2.measure(); 45 | SerialUSB.print("QT 2: "); SerialUSB.print(result); 46 | SerialUSB.print(" ("); SerialUSB.print(millis() - counter); SerialUSB.println(" ms)"); 47 | 48 | counter = millis(); 49 | result = qt_3.measure(); 50 | SerialUSB.print("QT 3: "); SerialUSB.print(result); 51 | SerialUSB.print(" ("); SerialUSB.print(millis() - counter); SerialUSB.println(" ms)"); 52 | 53 | counter = millis(); 54 | result = qt_4.measure(); 55 | SerialUSB.print("QT 4: "); SerialUSB.print(result); 56 | SerialUSB.print(" ("); SerialUSB.print(millis() - counter); SerialUSB.println(" ms)"); 57 | 58 | result = qt_5.measure(); 59 | SerialUSB.print("QT 5: "); SerialUSB.print(result); 60 | SerialUSB.print(" ("); SerialUSB.print(millis() - counter); SerialUSB.println(" ms)"); 61 | 62 | delay(200); 63 | } 64 | -------------------------------------------------------------------------------- /Mbot_Touch_PCB/MAGBOT21.TXT: -------------------------------------------------------------------------------- 1 | % 2 | M48 3 | M72 4 | T01C0.0150 5 | T02C0.0190 6 | T03C0.0197 7 | T04C0.0200 8 | T05C0.0236 9 | T06C0.0315 10 | T07C0.0400 11 | T08C0.0440 12 | T09C0.0453 13 | T10C0.0787 14 | T11C0.0866 15 | T12C0.1929 16 | % 17 | T01 18 | X18260Y14143 19 | X17260Y15393 20 | X20135Y15018 21 | X21385Y14268 22 | X22635Y14018 23 | X23635Y14518 24 | X24260Y15643 25 | X22885Y12268 26 | X21260Y12893 27 | X20635Y12768 28 | X21010Y11643 29 | X22385Y8768 30 | X27760Y12893 31 | X30385Y15268 32 | X31260Y14893 33 | X31260Y13393 34 | X35010Y9643 35 | X36260Y11643 36 | X39010Y11518 37 | X24260Y20893 38 | X24260Y22143 39 | X21135Y22143 40 | X18010Y22143 41 | X18010Y21143 42 | T02 43 | X16122Y30518 44 | X16122Y30868 45 | X16122Y31218 46 | X17610Y31218 47 | X17610Y30868 48 | X17610Y30518 49 | X18222Y30518 50 | X18222Y30868 51 | X18222Y31218 52 | X19710Y31218 53 | X19710Y30868 54 | X19710Y30518 55 | X20322Y30518 56 | X20322Y30868 57 | X20322Y31218 58 | X21810Y31218 59 | X21810Y30868 60 | X21810Y30518 61 | X22422Y30518 62 | X22422Y30868 63 | X22422Y31218 64 | X23910Y31218 65 | X23910Y30868 66 | X23910Y30518 67 | X24522Y30518 68 | X24522Y30868 69 | X24522Y31218 70 | X26010Y31218 71 | X26010Y30868 72 | X26010Y30518 73 | X26622Y30518 74 | X26622Y30868 75 | X26622Y31218 76 | X28110Y31218 77 | X28110Y30868 78 | X28110Y30518 79 | X28722Y30518 80 | X28722Y30868 81 | X28722Y31218 82 | X30210Y31218 83 | X30210Y30868 84 | X30210Y30518 85 | X30822Y30518 86 | X30822Y30868 87 | X30822Y31218 88 | X32310Y31218 89 | X32310Y30868 90 | X32310Y30518 91 | X32922Y30518 92 | X32922Y30868 93 | X32922Y31218 94 | X34410Y31218 95 | X34410Y30868 96 | X34410Y30518 97 | X35022Y30518 98 | X35022Y30868 99 | X35022Y31218 100 | X36510Y31218 101 | X36510Y30868 102 | X36510Y30518 103 | X37122Y30518 104 | X37122Y30868 105 | X37122Y31218 106 | X38610Y31218 107 | X38610Y30868 108 | X38610Y30518 109 | X39222Y30518 110 | X39222Y30868 111 | X39222Y31218 112 | X40710Y31218 113 | X40710Y30868 114 | X40710Y30518 115 | X41322Y30518 116 | X41322Y30868 117 | X41322Y31218 118 | X41160Y29206 119 | X41510Y29206 120 | X40810Y29206 121 | X40460Y29206 122 | X14635Y32706 123 | X14285Y32706 124 | X13935Y32706 125 | X13935Y34193 126 | X14285Y34193 127 | X14635Y34193 128 | X14635Y34806 129 | X14285Y34806 130 | X13935Y34806 131 | X13935Y36293 132 | X14285Y36293 133 | X14635Y36293 134 | X14635Y36906 135 | X14285Y36906 136 | X13935Y36906 137 | X13935Y38393 138 | X14285Y38393 139 | X14635Y38393 140 | X14635Y39006 141 | X14285Y39006 142 | X13935Y39006 143 | X13935Y40493 144 | X14285Y40493 145 | X14635Y40493 146 | X14635Y41106 147 | X14285Y41106 148 | X13935Y41106 149 | X13935Y42593 150 | X14285Y42593 151 | X14635Y42593 152 | X14635Y43206 153 | X14285Y43206 154 | X13935Y43206 155 | X13935Y44693 156 | X14285Y44693 157 | X14635Y44693 158 | X14635Y45306 159 | X14285Y45306 160 | X13935Y45306 161 | X13935Y46793 162 | X14285Y46793 163 | X14635Y46793 164 | X14635Y47406 165 | X14285Y47406 166 | X13935Y47406 167 | X13935Y48893 168 | X14285Y48893 169 | X14635Y48893 170 | X14635Y49506 171 | X14285Y49506 172 | X13935Y49506 173 | X13935Y50993 174 | X14285Y50993 175 | X14635Y50993 176 | X14635Y51606 177 | X14285Y51606 178 | X13935Y51606 179 | X13935Y53093 180 | X14285Y53093 181 | X14635Y53093 182 | X14635Y53706 183 | X14285Y53706 184 | X13935Y53706 185 | X13935Y55193 186 | X14285Y55193 187 | X14635Y55193 188 | X14635Y55806 189 | X14285Y55806 190 | X13935Y55806 191 | X13935Y57293 192 | X14285Y57293 193 | X14635Y57293 194 | X14635Y57906 195 | X14285Y57906 196 | X13935Y57906 197 | X12622Y57793 198 | X12622Y58143 199 | X12622Y58493 200 | X12622Y58843 201 | T03 202 | X14760Y8893 203 | X14760Y8393 204 | X14760Y7893 205 | X14760Y7393 206 | X14760Y6893 207 | X14760Y6393 208 | X14760Y5893 209 | X14760Y5393 210 | X14760Y4893 211 | X14760Y4393 212 | X14760Y3893 213 | X14760Y9393 214 | X14760Y9893 215 | X14010Y22893 216 | X23760Y29393 217 | T04 218 | X22760Y12893 219 | X23260Y12893 220 | X23760Y12893 221 | X24260Y12893 222 | X24760Y12893 223 | T05 224 | X14010Y17643 225 | X16510Y24393 226 | X19760Y24393 227 | X23010Y24393 228 | X26260Y24393 229 | X29510Y24393 230 | X32260Y23143 231 | X32760Y23143 232 | X33260Y23143 233 | X32760Y21893 234 | X34260Y24393 235 | X41760Y19143 236 | X44760Y11143 237 | X40510Y10643 238 | X43260Y4643 239 | X37760Y4643 240 | X32260Y4643 241 | X12760Y54893 242 | X12760Y55393 243 | X12760Y55893 244 | X12760Y56393 245 | X12010Y56393 246 | X12010Y55893 247 | X12010Y55393 248 | X12010Y54893 249 | T06 250 | X13494Y13527 251 | X11525Y13527 252 | T07 253 | X16010Y8143 254 | X16010Y7143 255 | X16010Y6143 256 | X16010Y5143 257 | X16010Y13143 258 | X16010Y14143 259 | X16010Y15143 260 | X16010Y16143 261 | X10760Y20893 262 | X10760Y21893 263 | X10760Y22893 264 | X9760Y22893 265 | X9760Y21893 266 | X9760Y20893 267 | X14285Y29293 268 | X14860Y29293 269 | X14210Y29893 270 | X14210Y30893 271 | X14210Y31893 272 | X15860Y29293 273 | X16860Y29293 274 | X18010Y29143 275 | X19010Y29143 276 | X20010Y29143 277 | X37660Y29293 278 | X38660Y29293 279 | X39660Y29293 280 | T08 281 | X10010Y16143 282 | X10010Y17143 283 | X38410Y23143 284 | X39410Y23143 285 | T09 286 | X13926Y12464 287 | X11093Y12464 288 | T10 289 | X9460Y9093 290 | X9460Y6993 291 | X9460Y4893 292 | X11560Y4893 293 | X11560Y6993 294 | X11560Y9093 295 | X13660Y9093 296 | X13660Y4893 297 | X13660Y6993 298 | T11 299 | X16760Y10893 300 | X20760Y5143 301 | X9510Y12893 302 | X44510Y21893 303 | T12 304 | X16208Y26593 305 | X13059Y26593 306 | X9909Y26593 307 | X9909Y29743 308 | X9909Y32892 309 | X9909Y36042 310 | X9909Y39191 311 | X9909Y42341 312 | X9909Y45491 313 | X9909Y48640 314 | X9909Y51790 315 | X9909Y54939 316 | X9909Y58089 317 | X9909Y61239 318 | X13059Y61239 319 | X16208Y61239 320 | X19358Y61239 321 | X22508Y61239 322 | X25657Y61239 323 | X28807Y61239 324 | X31956Y61239 325 | X35106Y61239 326 | X38256Y61239 327 | X41405Y61239 328 | X44555Y61239 329 | X44555Y58089 330 | X44555Y54939 331 | X44555Y51790 332 | X44555Y48640 333 | X44555Y45491 334 | X44555Y42341 335 | X44555Y39191 336 | X44555Y36042 337 | X44555Y32892 338 | X44555Y29743 339 | X44555Y26593 340 | X41405Y26593 341 | X38256Y26593 342 | X35106Y26593 343 | X31956Y26593 344 | X28807Y26593 345 | X25657Y26593 346 | X22508Y26593 347 | X19358Y26593 348 | M30 349 | -------------------------------------------------------------------------------- /Mbot_Touch_PCB/MAGBOT21.dri: -------------------------------------------------------------------------------- 1 | Generated by EAGLE CAM Processor 7.6.0 2 | 3 | Drill Station Info File: F:/____________PCB/MAGNEBOT/Magnebot2018touch/RTM/MAGBOT21.dri 4 | 5 | Date : 19. 12. 2018 15:15 6 | Drills : generated 7 | Device : Excellon drill station, coordinate format 2.4 inch 8 | 9 | Parameter settings: 10 | 11 | Tolerance Drill + : 0.00 % 12 | Tolerance Drill - : 0.00 % 13 | Rotate : no 14 | Mirror : no 15 | Optimize : yes 16 | Auto fit : yes 17 | OffsetX : 0inch 18 | OffsetY : 0inch 19 | Layers : Drills Holes 20 | 21 | Drill File Info: 22 | 23 | Data Mode : Absolute 24 | Units : 1/10000 Inch 25 | 26 | Drills used: 27 | 28 | Code Size used 29 | 30 | T01 0.0150inch 24 31 | T02 0.0190inch 158 32 | T03 0.0197inch 15 33 | T04 0.0200inch 5 34 | T05 0.0236inch 25 35 | T06 0.0315inch 2 36 | T07 0.0400inch 27 37 | T08 0.0440inch 4 38 | T09 0.0453inch 2 39 | T10 0.0787inch 9 40 | T11 0.0866inch 4 41 | T12 0.1929inch 44 42 | 43 | Total number of drills: 319 44 | 45 | Plotfiles: 46 | 47 | F:/____________PCB/MAGNEBOT/Magnebot2018touch/RTM/MAGBOT21.TXT 48 | -------------------------------------------------------------------------------- /Mbot_Touch_PCB/MAGBOT21.gpi: -------------------------------------------------------------------------------- 1 | Generated by EAGLE CAM Processor 7.6.0 2 | 3 | Photoplotter Info File: F:/____________PCB/MAGNEBOT/Magnebot2018touch/RTM/MAGBOT21.gpi 4 | 5 | Date : 19. 12. 2018 15:16 6 | Plotfile : F:/____________PCB/MAGNEBOT/Magnebot2018touch/RTM/MAGBOT21.GTL 7 | Apertures : generated: 8 | Device : Gerber RS-274-X photoplotter, coordinate format 2.5 inch 9 | 10 | Parameter settings: 11 | 12 | Emulate Apertures : no 13 | Tolerance Draw + : 0.00 % 14 | Tolerance Draw - : 0.00 % 15 | Tolerance Flash + : 0.00 % 16 | Tolerance Flash - : 0.00 % 17 | Rotate : no 18 | Mirror : no 19 | Optimize : yes 20 | Auto fit : yes 21 | OffsetX : 0inch 22 | OffsetY : 0inch 23 | 24 | Plotfile Info: 25 | 26 | Coordinate Format : 2.5 27 | Coordinate Units : Inch 28 | Data Mode : Absolute 29 | Zero Suppression : None 30 | End Of Block : * 31 | 32 | Apertures used: 33 | 34 | Code Shape Size used 35 | 36 | D10 draw 0.0000inch 37 37 | D11 rectangle 0.0480inch x 0.0880inch 3 38 | D12 rectangle 0.1417inch x 0.0866inch 1 39 | D13 rectangle 0.2126inch x 0.2441inch 7 40 | D14 rectangle 0.0394inch x 0.0630inch 14 41 | D15 square 0.0472inch 18 42 | D16 rectangle 0.0709inch x 0.0669inch 16 43 | D17 rectangle 0.0433inch x 0.0394inch 18 44 | D18 rectangle 0.0630inch x 0.1378inch 4 45 | D19 square 0.0315inch 12 46 | D20 round 0.0394inch 5 47 | D21 square 0.0740inch 2 48 | D22 round 0.0740inch 19 49 | D23 rectangle 0.0591inch x 0.0610inch 2 50 | D24 rectangle 0.0157inch x 0.0531inch 5 51 | D25 round 0.0472inch 2 52 | D26 round 0.0679inch 2 53 | D27 rectangle 0.0500inch x 0.0220inch 16 54 | D28 rectangle 0.0220inch x 0.0500inch 16 55 | D29 rectangle 0.0472inch x 0.0512inch 22 56 | D30 rectangle 0.0512inch x 0.0236inch 4 57 | D31 rectangle 0.0394inch x 0.0315inch 24 58 | D32 octagon 0.0600inch 6 59 | D33 draw 0.0050inch 733 60 | D34 rectangle 0.0250inch x 0.0500inch 2 61 | D35 rectangle 0.0500inch x 0.0250inch 3 62 | D36 draw 0.0740inch 4 63 | D37 rectangle 0.0551inch x 0.0394inch 3 64 | D38 rectangle 0.0591inch x 0.0394inch 5 65 | D39 round 0.1266inch 4 66 | D40 draw 0.0100inch 176 67 | D41 draw 0.0240inch 450 68 | D42 draw 0.0400inch 44 69 | D43 draw 0.0160inch 88 70 | D44 draw 0.0120inch 54 71 | D45 square 0.0376inch 24 72 | D46 draw 0.0080inch 16 73 | D47 round 0.0290inch 24 74 | D48 round 0.0376inch 1 75 | D49 round 0.0337inch 2 76 | D50 draw 0.0090inch 58 77 | D51 round 0.0330inch 158 78 | D52 draw 0.0320inch 3 79 | D53 round 0.2329inch 44 80 | 81 | -------------------------------------------------------------------------------- /PCB/bots/49x08.brd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | Slovakia 188 | www.PeMi.Technology 189 | Factory For 190 | Materializing Dreams 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | www.PeMi.Technology 267 | Factory For 268 | Materializing Dreams 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | <b>EAGLE Design Rules</b> 297 | <p> 298 | Die Standard-Design-Rules sind so gewählt, dass sie für 299 | die meisten Anwendungen passen. Sollte ihre Platine 300 | besondere Anforderungen haben, treffen Sie die erforderlichen 301 | Einstellungen hier und speichern die Design Rules unter 302 | einem neuen Namen ab. 303 | <b>Laen's PCB Order Design Rules</b> 304 | <p> 305 | Please make sure your boards conform to these design rules. 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | Since Version 6.2.2 text objects can contain more than one line, 499 | which will not be processed correctly with this version. 500 | 501 | 502 | 503 | -------------------------------------------------------------------------------- /PCB/bots/microbot.BRD: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | Made in Slovakia 188 | PeMi Technology - Factory For Materializing Dreams 189 | www.pemi.technology 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | MBOT 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 2,0 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | <b>EAGLE Design Rules</b> 281 | <p> 282 | Die Standard-Design-Rules sind so gewählt, dass sie für 283 | die meisten Anwendungen passen. Sollte ihre Platine 284 | besondere Anforderungen haben, treffen Sie die erforderlichen 285 | Einstellungen hier und speichern die Design Rules unter 286 | einem neuen Namen ab. 287 | <b>Laen's PCB Order Design Rules</b> 288 | <p> 289 | Please make sure your boards conform to these design rules. 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | -------------------------------------------------------------------------------- /PCB/bots/microbot4x.brd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 2,0 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | <b>EAGLE Design Rules</b> 229 | <p> 230 | Die Standard-Design-Rules sind so gewählt, dass sie für 231 | die meisten Anwendungen passen. Sollte ihre Platine 232 | besondere Anforderungen haben, treffen Sie die erforderlichen 233 | Einstellungen hier und speichern die Design Rules unter 234 | einem neuen Namen ab. 235 | <b>Laen's PCB Order Design Rules</b> 236 | <p> 237 | Please make sure your boards conform to these design rules. 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | -------------------------------------------------------------------------------- /PCB/bots/microbot4x3mm.brd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 2,0 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | <b>EAGLE Design Rules</b> 238 | <p> 239 | Die Standard-Design-Rules sind so gewählt, dass sie für 240 | die meisten Anwendungen passen. Sollte ihre Platine 241 | besondere Anforderungen haben, treffen Sie die erforderlichen 242 | Einstellungen hier und speichern die Design Rules unter 243 | einem neuen Namen ab. 244 | <b>Laen's PCB Order Design Rules</b> 245 | <p> 246 | Please make sure your boards conform to these design rules. 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | -------------------------------------------------------------------------------- /PCB/bots/microbot9x.brd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 2,0 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | <b>EAGLE Design Rules</b> 229 | <p> 230 | Die Standard-Design-Rules sind so gewählt, dass sie für 231 | die meisten Anwendungen passen. Sollte ihre Platine 232 | besondere Anforderungen haben, treffen Sie die erforderlichen 233 | Einstellungen hier und speichern die Design Rules unter 234 | einem neuen Namen ab. 235 | <b>Laen's PCB Order Design Rules</b> 236 | <p> 237 | Please make sure your boards conform to these design rules. 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | -------------------------------------------------------------------------------- /PCB/bots/microbot9x1mm.brd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 1,0 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | <b>EAGLE Design Rules</b> 229 | <p> 230 | Die Standard-Design-Rules sind so gewählt, dass sie für 231 | die meisten Anwendungen passen. Sollte ihre Platine 232 | besondere Anforderungen haben, treffen Sie die erforderlichen 233 | Einstellungen hier und speichern die Design Rules unter 234 | einem neuen Namen ab. 235 | <b>Laen's PCB Order Design Rules</b> 236 | <p> 237 | Please make sure your boards conform to these design rules. 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # mbot 2 | 3 | 2D actuator move micro robot in X/Y 2D space 4 | Less than 10$ educational platform with micro magnetic robot (mBot), 5 | only 6 GPIO to move in unlimited X/Y 2D space 6 | 7 | Great for physical education for languages like Karel and make 8 | SKOBAN game or solve acrylic cutted labyrinth. 9 | 10 | My project not violating SRI international patent 11 | (maybe, I am not patent expert) 12 | 13 | There is differences: 14 | 15 | - I am using another moving track configutation 16 | - Control is 3-phase unipolar against 4-phase bipolar 17 | - My manipulator (mBot) use 4 magnets and not levitating 18 | - For move in one dimension I need only 3x Mosfets connected to any MCU 19 | (Arduino Atmega328, Stm32, MSP430, ESP XXXX) 20 | - 6 GPIO to move in X/Y 2D space 21 | - Moving board can be produced in any fab, it is just only PCB board 8/8mil 22 | - IT IS CHEAP 23 | 24 | PROJECT PAGE 25 | 26 | https://hackaday.io/project/154496-2d-actuator-move-micro-robot-in-xy-2d-space 27 | -------------------------------------------------------------------------------- /sw-test/test.ino: -------------------------------------------------------------------------------- 1 | #define X1 6 2 | #define X2 5 3 | #define X3 4 4 | 5 | #define Y1 7 6 | #define Y2 8 7 | #define Y3 9 8 | 9 | #define BTN_UP A3 10 | #define BTN_DOWN A2 11 | #define BTN_LEFT A1 12 | #define BTN_RIGHT A0 13 | 14 | #define BTN_PLAY 2 15 | 16 | #define SPEED 60 17 | // the setup function runs once when you press reset or power the board 18 | void setup() { 19 | // initialize digital pin LED_BUILTIN as an output. 20 | pinMode(X1, OUTPUT); 21 | pinMode(X2, OUTPUT); 22 | pinMode(X3, OUTPUT); 23 | digitalWrite(X1, LOW); 24 | digitalWrite(X2, LOW); 25 | digitalWrite(X3, LOW); 26 | 27 | pinMode(Y1, OUTPUT); 28 | pinMode(Y2, OUTPUT); 29 | pinMode(Y3, OUTPUT); 30 | digitalWrite(Y1, LOW); 31 | digitalWrite(Y2, LOW); 32 | digitalWrite(Y3, LOW); 33 | 34 | pinMode(BTN_UP, INPUT_PULLUP); 35 | pinMode(BTN_DOWN, INPUT_PULLUP); 36 | pinMode(BTN_LEFT, INPUT_PULLUP); 37 | pinMode(BTN_RIGHT, INPUT_PULLUP); 38 | pinMode(BTN_PLAY, INPUT_PULLUP); 39 | } 40 | 41 | // the loop function runs over and over again forever 42 | void loop() { 43 | if (digitalRead(BTN_DOWN)==0) down(); 44 | if (digitalRead(BTN_UP)==0) up(); 45 | if (digitalRead(BTN_LEFT)==0) left(); 46 | if (digitalRead(BTN_RIGHT)==0) right(); 47 | if (digitalRead(BTN_PLAY)==0) play(); 48 | } 49 | 50 | void play () 51 | { 52 | up(); 53 | up(); 54 | up(); 55 | up(); 56 | 57 | down(); 58 | down(); 59 | down(); 60 | down(); 61 | } 62 | void right () 63 | { 64 | 65 | digitalWrite(Y1, HIGH); 66 | delay(SPEED); 67 | digitalWrite(Y1, LOW); 68 | digitalWrite(Y2, HIGH); 69 | delay(SPEED); 70 | digitalWrite(Y2, LOW); 71 | digitalWrite(Y3, HIGH); 72 | delay(SPEED); 73 | digitalWrite(Y3, LOW); 74 | } 75 | 76 | void left () 77 | { 78 | digitalWrite(Y3, HIGH); 79 | delay(SPEED); 80 | digitalWrite(Y3, LOW); 81 | digitalWrite(Y2, HIGH); 82 | delay(SPEED); 83 | digitalWrite(Y2, LOW); 84 | digitalWrite(Y1, HIGH); 85 | delay(SPEED); 86 | digitalWrite(Y1, LOW); 87 | } 88 | void down () 89 | { 90 | 91 | // digitalWrite(Y1, HIGH); 92 | 93 | digitalWrite(X1, HIGH); 94 | delay(SPEED); 95 | digitalWrite(X1, LOW); 96 | digitalWrite(X2, HIGH); 97 | delay(SPEED); 98 | digitalWrite(X2, LOW); 99 | digitalWrite(X3, HIGH); 100 | delay(SPEED); 101 | digitalWrite(X3, LOW); 102 | 103 | // digitalWrite(Y1, LOW); 104 | } 105 | 106 | void up () 107 | { 108 | // digitalWrite(Y1, HIGH); 109 | 110 | digitalWrite(X3, HIGH); 111 | delay(SPEED); 112 | digitalWrite(X3, LOW); 113 | digitalWrite(X2, HIGH); 114 | delay(SPEED); 115 | digitalWrite(X2, LOW); 116 | digitalWrite(X1, HIGH); 117 | delay(SPEED); 118 | digitalWrite(X1, LOW); 119 | 120 | 121 | 122 | 123 | // digitalWrite(X3, HIGH); 124 | // delay(SPEED); 125 | // digitalWrite(X3, LOW); 126 | // 127 | // 128 | // digitalWrite(X3, HIGH); 129 | // digitalWrite(X2, HIGH); 130 | // delay(SPEED); 131 | // digitalWrite(X3, LOW); 132 | // digitalWrite(X2, LOW); 133 | // 134 | // digitalWrite(X2, HIGH); 135 | // delay(SPEED); 136 | // digitalWrite(X2, LOW); 137 | // 138 | // 139 | // digitalWrite(X2, HIGH); 140 | // digitalWrite(X1, HIGH); 141 | // delay(SPEED); 142 | // digitalWrite(X1, LOW); 143 | // digitalWrite(X2, LOW); 144 | // 145 | // digitalWrite(X1, HIGH); 146 | // delay(SPEED); 147 | // digitalWrite(X1, LOW); 148 | // 149 | // 150 | // 151 | // digitalWrite(X3, HIGH); 152 | // digitalWrite(X1, HIGH); 153 | // delay(SPEED); 154 | // digitalWrite(X1, LOW); 155 | // digitalWrite(X3, LOW); 156 | 157 | } 158 | 159 | 160 | // digitalWrite(X3, HIGH); 161 | // delay(SPEED); 162 | // digitalWrite(X3, LOW); 163 | // digitalWrite(X2, HIGH); 164 | // delay(SPEED); 165 | // digitalWrite(X2, LOW); 166 | // digitalWrite(X1, HIGH); 167 | // delay(SPEED); 168 | // 169 | 170 | 171 | 172 | // for(byte i = 1; i <255; i++){ 173 | // digitalWrite(X1, HIGH); 174 | // delayMicroseconds(3*(255-i)); 175 | // digitalWrite(X1, LOW); 176 | // digitalWrite(X2, HIGH); 177 | // delayMicroseconds(3*i); 178 | // digitalWrite(X2, LOW); 179 | // } 180 | // for(byte i = 1; i <255; i++){ 181 | // digitalWrite(X2, HIGH); 182 | // delayMicroseconds(3*(255-i)); 183 | // digitalWrite(X2, LOW); 184 | // digitalWrite(X3, HIGH); 185 | // delayMicroseconds(3*i); 186 | // digitalWrite(X3, LOW); 187 | // } 188 | // for(byte i = 1; i <255; i++){ 189 | // digitalWrite(X3, HIGH); 190 | // delayMicroseconds(3*(255-i)); 191 | // digitalWrite(X3, LOW); 192 | // digitalWrite(X1, HIGH); 193 | // delayMicroseconds(3*i); 194 | // digitalWrite(X1, LOW); 195 | // } 196 | --------------------------------------------------------------------------------