Skip to content

Commit bb25dc9

Browse files
committed
plotter option mini servo controller
1 parent 2b242e3 commit bb25dc9

1 file changed

Lines changed: 33 additions & 11 deletions

File tree

  • ftduino/libraries/FtduinoSimple/examples/Plotter

ftduino/libraries/FtduinoSimple/examples/Plotter/Plotter.ino

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,24 @@
88
// #define NOHW
99

1010
#define NONE 0
11-
#define SERVOSHIELD 1
12-
#define I2CCLIENT 2 // this gas never been fully implemented and my need some work
11+
#define SERVOSHIELD 1 // Peters adafruit based servo shield
12+
#define I2CCLIENT 2 // this has never been fully implemented and may need some work
13+
#define I2CMINI 3 // the mini i2c servo adapter
1314

14-
#define PEN SERVOSHIELD // can be NONE, SERVOSHIELD, I2CCLIENT, ...
15+
#define PEN I2CMINI // can be NONE, SERVOSHIELD, I2CCLIENT, ...
1516

1617
#if PEN == SERVOSHIELD
1718
#include <Adafruit_PWMServoDriver.h>
1819
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
1920
#define SERVO_NUM 0 // leftmost connector
2021
#define SERVO_UP 350
2122
#define SERVO_DOWN 410
23+
#elif PEN == I2CMINI
24+
#include <Wire.h>
25+
#define SERVO_ADDR 0x11 // default address
26+
#define SERVO_NUM 0 // servo 1
27+
#define SERVO_UP 95
28+
#define SERVO_DOWN 110
2229
#endif
2330

2431
// enable xon/xoff signalling
@@ -230,8 +237,7 @@ void pen(bool down) {
230237
if(down) pwm.setPWM(SERVO_NUM, 0, SERVO_DOWN);
231238
else pwm.setPWM(SERVO_NUM, 0, SERVO_UP);
232239
delay(100); // give pen some time to move
233-
#endif
234-
#if PEN == I2CCLIENT
240+
#elif PEN == I2CCLIENT
235241
if(down) {
236242
pen_set_m1(Ftduino::LEFT);
237243
// wait for switch on I1 to close
@@ -241,6 +247,13 @@ void pen(bool down) {
241247
delay(500);
242248
}
243249
pen_set_m1(Ftduino::BRAKE);
250+
#elif PEN == I2CMINI
251+
Wire.beginTransmission(SERVO_ADDR);
252+
Wire.write(SERVO_NUM);
253+
if(down) Wire.write(SERVO_DOWN);
254+
else Wire.write(SERVO_UP);
255+
Wire.endTransmission();
256+
delay(100); // give pen some time to move
244257
#endif
245258
}
246259

@@ -256,17 +269,17 @@ bool pen_init(void) {
256269
Wire.write(0x10); // config I1
257270
Wire.write(0x02); // switch
258271
Wire.endTransmission();
259-
#endif
260-
261-
#if PEN == SERVOSHIELD
272+
#elif PEN == SERVOSHIELD
262273
pwm.begin();
263274
pwm.setPWMFreq(60); // Analog servos run at ~60 Hz updates
275+
#elif PEN == I2CMINI
276+
Wire.begin();
264277

265278
#if 0
266279
while(1) {
267-
pwm.setPWM(SERVO_NUM, 0, SERVO_DOWN);
280+
pen(true);
268281
delay(2000);
269-
pwm.setPWM(SERVO_NUM, 0, SERVO_UP);
282+
pen(false);
270283
delay(500);
271284
}
272285
#endif
@@ -314,7 +327,16 @@ void setup() {
314327
failure(PSTR("Pen init failed"), 2);
315328

316329
pen(false);
317-
330+
331+
#if 0 // PEN UP/DOWN test
332+
while(1) {
333+
pen(false);
334+
delay(2000);
335+
pen(true);
336+
delay(500);
337+
}
338+
#endif
339+
318340
// reset state
319341
buffer[0] = 0;
320342
bcnt = 0;

0 commit comments

Comments
 (0)