├── .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 |
--------------------------------------------------------------------------------