Skip to content

Commit 535c51e

Browse files
author
David Abián
committed
Improving with some C++ suggestions (not tested)
Using constants (uppercase), declaring variables when they are initialized, avoiding double checks with 'if' and 'while'...
1 parent 42658ee commit 535c51e

File tree

1 file changed

+90
-90
lines changed

1 file changed

+90
-90
lines changed

plotclock.ino

Lines changed: 90 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -170,84 +170,84 @@ void loop()
170170

171171
}
172172

173-
// Writing numeral with bx by being the bottom left originpoint. Scale 1 equals a 20 mm high font.
173+
// Writing numeral with BX BY being the bottom left originpoint. Scale 1 equals a 20 mm high font.
174174
// The structure follows this principle: move to first startpoint of the numeral, lift down, draw numeral, lift up
175-
void number(float bx, float by, int num, float scale) {
175+
void number(const float BX, const float BY, const int NUM, const float SCALE) {
176176

177-
switch (num) {
177+
switch (NUM) {
178178

179179
case 0:
180-
drawTo(bx + 12 * scale, by + 6 * scale);
180+
drawTo(BX + 12 * SCALE, BY + 6 * SCALE);
181181
lift(0);
182-
bogenGZS(bx + 7 * scale, by + 10 * scale, 10 * scale, -0.8, 6.7, 0.5);
182+
bogenGZS(BX + 7 * SCALE, BY + 10 * SCALE, 10 * SCALE, -0.8, 6.7, 0.5);
183183
lift(1);
184184
break;
185185
case 1:
186186

187-
drawTo(bx + 3 * scale, by + 15 * scale);
187+
drawTo(BX + 3 * SCALE, BY + 15 * SCALE);
188188
lift(0);
189-
drawTo(bx + 10 * scale, by + 20 * scale);
190-
drawTo(bx + 10 * scale, by + 0 * scale);
189+
drawTo(BX + 10 * SCALE, BY + 20 * SCALE);
190+
drawTo(BX + 10 * SCALE, BY + 0 * SCALE);
191191
lift(1);
192192
break;
193193
case 2:
194-
drawTo(bx + 2 * scale, by + 12 * scale);
194+
drawTo(BX + 2 * SCALE, BY + 12 * SCALE);
195195
lift(0);
196-
bogenUZS(bx + 8 * scale, by + 14 * scale, 6 * scale, 3, -0.8, 1);
197-
drawTo(bx + 1 * scale, by + 0 * scale);
198-
drawTo(bx + 12 * scale, by + 0 * scale);
196+
bogenUZS(BX + 8 * SCALE, BY + 14 * SCALE, 6 * SCALE, 3, -0.8, 1);
197+
drawTo(BX + 1 * SCALE, BY + 0 * SCALE);
198+
drawTo(BX + 12 * SCALE, BY + 0 * SCALE);
199199
lift(1);
200200
break;
201201
case 3:
202-
drawTo(bx + 2 * scale, by + 17 * scale);
202+
drawTo(BX + 2 * SCALE, BY + 17 * SCALE);
203203
lift(0);
204-
bogenUZS(bx + 5 * scale, by + 15 * scale, 5 * scale, 3, -2, 1);
205-
bogenUZS(bx + 5 * scale, by + 5 * scale, 5 * scale, 1.57, -3, 1);
204+
bogenUZS(BX + 5 * SCALE, BY + 15 * SCALE, 5 * SCALE, 3, -2, 1);
205+
bogenUZS(BX + 5 * SCALE, BY + 5 * SCALE, 5 * SCALE, 1.57, -3, 1);
206206
lift(1);
207207
break;
208208
case 4:
209-
drawTo(bx + 10 * scale, by + 0 * scale);
209+
drawTo(BX + 10 * SCALE, BY + 0 * SCALE);
210210
lift(0);
211-
drawTo(bx + 10 * scale, by + 20 * scale);
212-
drawTo(bx + 2 * scale, by + 6 * scale);
213-
drawTo(bx + 12 * scale, by + 6 * scale);
211+
drawTo(BX + 10 * SCALE, BY + 20 * SCALE);
212+
drawTo(BX + 2 * SCALE, BY + 6 * SCALE);
213+
drawTo(BX + 12 * SCALE, BY + 6 * SCALE);
214214
lift(1);
215215
break;
216216
case 5:
217-
drawTo(bx + 2 * scale, by + 5 * scale);
217+
drawTo(BX + 2 * SCALE, BY + 5 * SCALE);
218218
lift(0);
219-
bogenGZS(bx + 5 * scale, by + 6 * scale, 6 * scale, -2.5, 2, 1);
220-
drawTo(bx + 5 * scale, by + 20 * scale);
221-
drawTo(bx + 12 * scale, by + 20 * scale);
219+
bogenGZS(BX + 5 * SCALE, BY + 6 * SCALE, 6 * SCALE, -2.5, 2, 1);
220+
drawTo(BX + 5 * SCALE, BY + 20 * SCALE);
221+
drawTo(BX + 12 * SCALE, BY + 20 * SCALE);
222222
lift(1);
223223
break;
224224
case 6:
225-
drawTo(bx + 2 * scale, by + 10 * scale);
225+
drawTo(BX + 2 * SCALE, BY + 10 * SCALE);
226226
lift(0);
227-
bogenUZS(bx + 7 * scale, by + 6 * scale, 6 * scale, 2, -4.4, 1);
228-
drawTo(bx + 11 * scale, by + 20 * scale);
227+
bogenUZS(BX + 7 * SCALE, BY + 6 * SCALE, 6 * SCALE, 2, -4.4, 1);
228+
drawTo(BX + 11 * SCALE, BY + 20 * SCALE);
229229
lift(1);
230230
break;
231231
case 7:
232-
drawTo(bx + 2 * scale, by + 20 * scale);
232+
drawTo(BX + 2 * SCALE, BY + 20 * SCALE);
233233
lift(0);
234-
drawTo(bx + 12 * scale, by + 20 * scale);
235-
drawTo(bx + 2 * scale, by + 0);
234+
drawTo(BX + 12 * SCALE, BY + 20 * SCALE);
235+
drawTo(BX + 2 * SCALE, BY + 0);
236236
lift(1);
237237
break;
238238
case 8:
239-
drawTo(bx + 5 * scale, by + 10 * scale);
239+
drawTo(BX + 5 * SCALE, BY + 10 * SCALE);
240240
lift(0);
241-
bogenUZS(bx + 5 * scale, by + 15 * scale, 5 * scale, 4.7, -1.6, 1);
242-
bogenGZS(bx + 5 * scale, by + 5 * scale, 5 * scale, -4.7, 2, 1);
241+
bogenUZS(BX + 5 * SCALE, BY + 15 * SCALE, 5 * SCALE, 4.7, -1.6, 1);
242+
bogenGZS(BX + 5 * SCALE, BY + 5 * SCALE, 5 * SCALE, -4.7, 2, 1);
243243
lift(1);
244244
break;
245245

246246
case 9:
247-
drawTo(bx + 9 * scale, by + 11 * scale);
247+
drawTo(BX + 9 * SCALE, BY + 11 * SCALE);
248248
lift(0);
249-
bogenUZS(bx + 7 * scale, by + 15 * scale, 5 * scale, 4, -0.5, 1);
250-
drawTo(bx + 5 * scale, by + 0);
249+
bogenUZS(BX + 7 * SCALE, BY + 15 * SCALE, 5 * SCALE, 4, -0.5, 1);
250+
drawTo(BX + 5 * SCALE, BY + 0);
251251
lift(1);
252252
break;
253253

@@ -282,13 +282,13 @@ void number(float bx, float by, int num, float scale) {
282282
break;
283283

284284
case 11:
285-
drawTo(bx + 5 * scale, by + 15 * scale);
285+
drawTo(BX + 5 * SCALE, BY + 15 * SCALE);
286286
lift(0);
287-
bogenGZS(bx + 5 * scale, by + 15 * scale, 0.1 * scale, 1, -1, 1);
287+
bogenGZS(BX + 5 * SCALE, BY + 15 * SCALE, 0.1 * SCALE, 1, -1, 1);
288288
lift(1);
289-
drawTo(bx + 5 * scale, by + 5 * scale);
289+
drawTo(BX + 5 * SCALE, BY + 5 * SCALE);
290290
lift(0);
291-
bogenGZS(bx + 5 * scale, by + 5 * scale, 0.1 * scale, 1, -1, 1);
291+
bogenGZS(BX + 5 * SCALE, BY + 5 * SCALE, 0.1 * SCALE, 1, -1, 1);
292292
lift(1);
293293
break;
294294

@@ -297,148 +297,148 @@ void number(float bx, float by, int num, float scale) {
297297

298298

299299

300-
void lift(char lift) {
301-
switch (lift) {
300+
void lift(const char LIFT) {
301+
switch (LIFT) {
302302
// room to optimize !
303303

304304
case 0: //850
305305

306-
if (servoLift >= LIFT0) {
307-
while (servoLift >= LIFT0)
306+
if (servoLift >= LIFT0) {
307+
do
308308
{
309309
servoLift--;
310-
servo1.writeMicroseconds(servoLift);
310+
servo1.writeMicroseconds(servoLift);
311311
delayMicroseconds(LIFTSPEED);
312-
}
313-
}
312+
} while (servoLift >= LIFT0);
313+
}
314314
else {
315-
while (servoLift <= LIFT0) {
315+
do
316+
{
316317
servoLift++;
317318
servo1.writeMicroseconds(servoLift);
318319
delayMicroseconds(LIFTSPEED);
319-
320-
}
321-
320+
} while (servoLift < LIFT0);
322321
}
323322

324323
break;
325324

326325
case 1: //150
327326

328327
if (servoLift >= LIFT1) {
329-
while (servoLift >= LIFT1) {
328+
do
329+
{
330330
servoLift--;
331331
servo1.writeMicroseconds(servoLift);
332332
delayMicroseconds(LIFTSPEED);
333-
334-
}
335-
}
333+
} while (servoLift >= LIFT1);
334+
}
336335
else {
337-
while (servoLift <= LIFT1) {
336+
do
337+
{
338338
servoLift++;
339339
servo1.writeMicroseconds(servoLift);
340340
delayMicroseconds(LIFTSPEED);
341-
}
342-
341+
} while (servoLift < LIFT1);
343342
}
344343

345344
break;
346345

347346
case 2:
348347

349348
if (servoLift >= LIFT2) {
350-
while (servoLift >= LIFT2) {
349+
do
350+
{
351351
servoLift--;
352352
servo1.writeMicroseconds(servoLift);
353353
delayMicroseconds(LIFTSPEED);
354-
}
355-
}
354+
} while (servoLift >= LIFT2);
355+
}
356356
else {
357-
while (servoLift <= LIFT2) {
357+
do
358+
{
358359
servoLift++;
359-
servo1.writeMicroseconds(servoLift);
360+
servo1.writeMicroseconds(servoLift);
360361
delayMicroseconds(LIFTSPEED);
361-
}
362+
} while (servoLift < LIFT2);
362363
}
364+
363365
break;
364366
}
365367
}
366368

367369

368-
void bogenUZS(float bx, float by, float radius, int start, int ende, float sqee) {
370+
void bogenUZS(const float BX, const float BY, const float RADIUS,
371+
const int START, const int ENDE, const float SQEE) {
369372
float inkr = -0.05;
370373
float count = 0;
371374

372375
do {
373-
drawTo(sqee * radius * cos(start + count) + bx,
374-
radius * sin(start + count) + by);
376+
drawTo(SQEE * RADIUS * cos(START + count) + BX,
377+
RADIUS * sin(START + count) + BY);
375378
count += inkr;
376-
}
377-
while ((start + count) > ende);
379+
}
380+
while (START + count > ENDE);
378381

379382
}
380383

381-
void bogenGZS(float bx, float by, float radius, int start, int ende, float sqee) {
384+
void bogenGZS(const float BX, const float BY, const float RADIUS,
385+
const int START, const int ENDE, const float SQEE) {
382386
float inkr = 0.05;
383387
float count = 0;
384388

385389
do {
386-
drawTo(sqee * radius * cos(start + count) + bx,
387-
radius * sin(start + count) + by);
390+
drawTo(SQEE * RADIUS * cos(START + count) + BX,
391+
RADIUS * sin(START + count) + BY);
388392
count += inkr;
389393
}
390-
while ((start + count) <= ende);
394+
while (START + count <= ENDE);
391395
}
392396

393397

394-
void drawTo(double pX, double pY) {
395-
double dx, dy, c;
396-
int i;
398+
void drawTo(const double pX, const double pY) {
397399

398400
// dx dy of new point
399-
dx = pX - lastX;
400-
dy = pY - lastY;
401+
double dx = pX - lastX;
402+
double dy = pY - lastY;
401403
//path lenght in mm, times 4 equals 4 steps per mm
402-
c = floor(4 * sqrt(dx * dx + dy * dy));
404+
double c = floor(4 * sqrt(dx * dx + dy * dy));
403405

404406
if (c < 1) c = 1;
405407

406-
for (i = 0; i <= c; i++) {
408+
for (int i = 0; i <= c; i++) {
407409
// draw line point by point
408410
set_XY(lastX + (i * dx / c), lastY + (i * dy / c));
409-
410411
}
411412

412413
lastX = pX;
413414
lastY = pY;
414415
}
415416

416-
double return_angle(double a, double b, double c) {
417+
double return_angle(const double a, const double b, const double c) {
417418
// cosine rule for angle between c and a
418419
return acos((a * a + c * c - b * b) / (2 * a * c));
419420
}
420421

421-
void set_XY(double Tx, double Ty)
422+
void set_XY(const double Tx, const double Ty)
422423
{
423424
delay(1);
424-
double dx, dy, c, a1, a2, Hx, Hy;
425425

426426
// calculate triangle between pen, servoLeft and arm joint
427427
// cartesian dx/dy
428-
dx = Tx - O1X;
429-
dy = Ty - O1Y;
428+
double dx = Tx - O1X;
429+
double dy = Ty - O1Y;
430430

431431
// polar lemgth (c) and angle (a1)
432-
c = sqrt(dx * dx + dy * dy); //
433-
a1 = atan2(dy, dx); //
434-
a2 = return_angle(L1, L2, c);
432+
double c = sqrt(dx * dx + dy * dy); //
433+
double a1 = atan2(dy, dx); //
434+
double a2 = return_angle(L1, L2, c);
435435

436436
servo2.writeMicroseconds(floor(((a2 + a1 - M_PI) * SERVOFAKTORLEFT) + SERVOLEFTNULL));
437437

438438
// calculate joinr arm point for triangle of the right servo arm
439439
a2 = return_angle(L2, L1, c);
440-
Hx = Tx + L3 * cos((a1 - a2 + 0.621) + M_PI); //36,5°
441-
Hy = Ty + L3 * sin((a1 - a2 + 0.621) + M_PI);
440+
double Hx = Tx + L3 * cos((a1 - a2 + 0.621) + M_PI); //36,5°
441+
double Hy = Ty + L3 * sin((a1 - a2 + 0.621) + M_PI);
442442

443443
// calculate triangle between pen joint, servoRight and arm joint
444444
dx = Hx - O2X;

0 commit comments

Comments
 (0)