Loading
Hey! This thing is still a Work in Progress. Files, instructions, and other stuff might change!

Plotclock

by joo, published

Plotclock by joo Feb 12, 2014

Featured Thing!

Description

A clock that plots time. Designed with makeability in a fablab/makerspace/hackerspace in mind.

You need:

  • Laser cutter or 3D printer
  • 1 Arduino
  • 3 servos
  • 1 dry wipe pen
  • M3 nuts, bolts, thread tap

Update to V1.01:
added calibration routine and documentation to arduino code

see the instruction tab above for building instructions

http://wiki.fablab-nuernberg.de/w/Ding:Plotclock (german)
http://www.youtube.com/watch?v=iOLFP90DneY
https://github.com/9a/plotclock

Recent Comments

view all
1: If you are a first time Arduino/Microcontroller user, a starter kit usually isn't that bad an idea :) But it will work with just an Arduino

2: Packs of 100 M3 screws cost less then 3€ here, so i just bought one pack of screws and nuts.

3: If you look at the 4th pic in the description (the arduino) you see that you only need 2 wires if you connect the servos like I did. If you buy a starterkit you usually have a breadboard and a couple of jumper wires that would work as well.

4. The Arduino runs with USB power (eg phone charger)
Dear All,

I appreciate some help here to get started, as a first time Arduino builder here.

Can I get some help with selecting the equipment to get this started. I have already gotten a set of the 3D arms and 3 servos. What about the following:

(1) Uno arduino. Do I need a full starter kit with wires cables and such? Saw a few on eBay for US$50. Any suggestion?

(2) Exactly how many M3 10mm bolt and nut do I need?

(3) What kind of cables or wires do I need for the setup and how many?

(4) What about the power source? Do I need to get separate battery source/ casing?
This looks like a very well designed project that has been made and remixed by a lot of people.
We will be trying this out soon in preparation to build it in a workshop at our maker space. Maybe joo or someone else who has made this can comment on these questions before we start prototyping:
1) It looks like there are 9 screws (not including the servo mounting screws). Are all these M3 screws 10mm or are other screw lengths recommended? (and if there is a more precise part list somewhere, could someone please point me to it? ;) )
2) I've watched some videos of other people's builds in action and none of them write quite as neatly as the main video here. Is there an obvious reason why the drawing is not as precise for other people's builds? Is this an issue of the code or the build? Or both?
Thanks! I'm sure I'll have more questions as we start to build, but any comments about these questions would be great!

More from DIY

view more

Liked By

view all

Tags

License

Plotclock by joo is licensed under the Creative Commons - Attribution license.

Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag. Print Thing Tag

Instructions

Materials I used:

  • Arduino uno
  • Tower Pro 9g servos (those cheap ones from ebay)
  • WB SL DRYWIPE MARKER, bullet tip
  • A small custom servo adapter, there are shields or servo-arduinos that also can be used. You can also just use jumper wires: 5V to red servo wire, GND to brown or black servo wire and the arduino servopins connected to the yellow or orange servo wire

Building instructions:
(for version 1.01!)

  1. Lasercut plotclock_beta1.pdf from 3mm material or 3D print plotclock_SUP7.skp

    • the black areas in the pdf on the servo arms should be used to engrave some material away, so the servohorns settle in
    • use http://www.thingiverse.com/thing:250204 for single STL files if you 3D print the clock (Thanks corben33!)
  2. 3D print swee.stl or reuse some other cylindrical part for the sweeper

  3. Tap 2.5mm holes with M3 thread

  4. Assemble arms with M3 screws, gently adjust the counternuts so that the joints under the screw heads just have enough play for smooth movement (see joint picture).

  5. load Arduino sketch plotclock_V1, see code comments for further information

  6. Add some sort of cloth with double sided tape to sweeper

  7. Attach servos to digital pin 2, 3 and 4, according to arduino sketch, test them without anything attached by plugging in the arduino (the photos show it being connected to 1, 2 and 3, which isn't optimal since 1 is also the TX pin, so during arduino startup the lifting servo jumps around)

  8. Put everything together

    • You may have to redrill the holes that are used for securing the servos, since some servo screws are a tight fit.
      Acrylic is brittle and easily breaks wen the mounting holes are to small. Only push the servo arms onto their hubs, don't secure them with screws! For initial calibration do not mount the resting clip for the wiper (danger of collision with the pen). Glue or screw the servo arms to the acrylic parts.
  9. When attaching the servo arms, make sure they can turn enough to reach every point on the drawing surface by manually turning them

  10. Power the arduino, it should start a calibration cycle where every second the position of both servos changes by rotating exactly 90 degrees (see last image in gallery)

  11. Change the SERVOFAKTOR, SERVOLEFTNULL and SERVORIGHTNULL values until everything matches up (see code for more information)

  12. Attach the pen and the sweeper holder only after testing everything else

This description is still a bit of a WIP, so comment if you have any questions!

Dear All,

I appreciate some help here to get started, as a first time Arduino builder here.

Can I get some help with selecting the equipment to get this started. I have already gotten a set of the 3D arms and 3 servos. What about the following:

(1) Uno arduino. Do I need a full starter kit with wires cables and such? Saw a few on eBay for US$50. Any suggestion?

(2) Exactly how many M3 10mm bolt and nut do I need?

(3) What kind of cables or wires do I need for the setup and how many?

(4) What about the power source? Do I need to get separate battery source/ casing?

1: If you are a first time Arduino/Microcontroller user, a starter kit usually isn't that bad an idea :) But it will work with just an Arduino

2: Packs of 100 M3 screws cost less then 3€ here, so i just bought one pack of screws and nuts.

3: If you look at the 4th pic in the description (the arduino) you see that you only need 2 wires if you connect the servos like I did. If you buy a starterkit you usually have a breadboard and a couple of jumper wires that would work as well.

  1. The Arduino runs with USB power (eg phone charger)
Dec 29, 2014 - Modified Dec 29, 2014

This looks like a very well designed project that has been made and remixed by a lot of people. We will be trying this out soon in preparation to build it in a workshop at our maker space. Maybe joo or someone else who has made this can comment on these questions before we start prototyping: 1) It looks like there are 9 screws (not including the servo mounting screws). Are all these M3 screws 10mm or are other screw lengths recommended? (and if there is a more precise part list somewhere, could someone please point me to it? ;) ) 2) I've watched some videos of other people's builds in action and none of them write quite as neatly as the main video here. Is there an obvious reason why the drawing is not as precise for other people's builds? Is this an issue of the code or the build? Or both? Thanks! I'm sure I'll have more questions as we start to build, but any comments about these questions would be great!

I am fighting the arduino sketch. I have the time.h library imported into the Arduino IDE and it can find the file time.h .. but it throws all these erros I am unsure how to resolve:

Arduino: 1.5.8 (Windows 8), Board: "Arduino Uno"

In file included from C:\Users\PawUser\Documents\Arduino\libraries\Time\DateStrings.cpp:10:0: C:\Users\PawUser\Documents\Arduino\libraries\Time\DateStrings.cpp:18:18: error: variable 'monthStr1' must be const in order to be put into read-only section by means of 'attribute((progmem))' char monthStr1[] PROGMEM = "January";

              ^

C:\Users\PawUser\Documents\Arduino\libraries\Time\DateStrings.cpp:19:18: error: variable 'monthStr2' must be const in order to be put into read-only section by means of 'attribute((progmem))' char monthStr2[] PROGMEM = "February";

              ^

C:\Users\PawUser\Documents\Arduino\libraries\Time\DateStrings.cpp:20:18: error: variable 'monthStr3' must be const in order to be put into read-only section by means of 'attribute((progmem))' char monthStr3[] PROGMEM = "March";

              ^

C:\Users\PawUser\Documents\Arduino\libraries\Time\DateStrings.cpp:21:18: error: variable 'monthStr4' must be const in order to be put into read-only section by means of 'attribute((progmem))' char monthStr4[] PROGMEM = "April";

              ^

C:\Users\PawUser\Documents\Arduino\libraries\Time\DateStrings.cpp:22:18: error: variable 'monthStr5' must be const in order to be put into read-only section by means of 'attribute((progmem))' char monthStr5[] PROGMEM = "May";

              ^

C:\Users\PawUser\Documents\Arduino\libraries\Time\DateStrings.cpp:23:18: error: variable 'monthStr6' must be const in order to be put into read-only section by means of 'attribute((progmem))' char monthStr6[] PROGMEM = "June";

              ^

C:\Users\PawUser\Documents\Arduino\libraries\Time\DateStrings.cpp:24:18: error: variable 'monthStr7' must be const in order to be put into read-only section by means of 'attribute((progmem))' char monthStr7[] PROGMEM = "July";

              ^

C:\Users\PawUser\Documents\Arduino\libraries\Time\DateStrings.cpp:25:18: error: variable 'monthStr8' must be const in order to be put into read-only section by means of 'attribute((progmem))' char monthStr8[] PROGMEM = "August";

              ^

C:\Users\PawUser\Documents\Arduino\libraries\Time\DateStrings.cpp:26:18: error: variable 'monthStr9' must be const in order to be put into read-only section by means of 'attribute((progmem))' char monthStr9[] PROGMEM = "September";

              ^

C:\Users\PawUser\Documents\Arduino\libraries\Time\DateStrings.cpp:27:19: error: variable 'monthStr10' must be const in order to be put into read-only section by means of 'attribute((progmem))' char monthStr10[] PROGMEM = "October";

               ^

C:\Users\PawUser\Documents\Arduino\libraries\Time\DateStrings.cpp:28:19: error: variable 'monthStr11' must be const in order to be put into read-only section by means of 'attribute((progmem))' char monthStr11[] PROGMEM = "November";

               ^

C:\Users\PawUser\Documents\Arduino\libraries\Time\DateStrings.cpp:29:19: error: variable 'monthStr12' must be const in order to be put into read-only section by means of 'attribute((progmem))' char monthStr12[] PROGMEM = "December";

               ^

C:\Users\PawUser\Documents\Arduino\libraries\Time\DateStrings.cpp:31:22: error: variable 'monthNames_P' must be const in order to be put into read-only section by means of 'attribute((progmem))' PGM_P monthNames_P[] PROGMEM =

                  ^

C:\Users\PawUser\Documents\Arduino\libraries\Time\DateStrings.cpp:37:26: error: variable 'monthShortNames_P' must be const in order to be put into read-only section by means of 'attribute((progmem))' char monthShortNames_P[] PROGMEM = "ErrJanFebMarAprMayJunJulAugSepOctNovDec";

                      ^

C:\Users\PawUser\Documents\Arduino\libraries\Time\DateStrings.cpp:39:16: error: variable 'dayStr0' must be const in order to be put into read-only section by means of 'attribute((progmem))' char dayStr0[] PROGMEM = "Err";

            ^

C:\Users\PawUser\Documents\Arduino\libraries\Time\DateStrings.cpp:40:16: error: variable 'dayStr1' must be const in order to be put into read-only section by means of 'attribute((progmem))' char dayStr1[] PROGMEM = "Sunday";

            ^

C:\Users\PawUser\Documents\Arduino\libraries\Time\DateStrings.cpp:41:16: error: variable 'dayStr2' must be const in order to be put into read-only section by means of 'attribute((progmem))' char dayStr2[] PROGMEM = "Monday";

            ^

C:\Users\PawUser\Documents\Arduino\libraries\Time\DateStrings.cpp:42:16: error: variable 'dayStr3' must be const in order to be put into read-only section by means of 'attribute((progmem))' char dayStr3[] PROGMEM = "Tuesday";

            ^

C:\Users\PawUser\Documents\Arduino\libraries\Time\DateStrings.cpp:43:16: error: variable 'dayStr4' must be const in order to be put into read-only section by means of 'attribute((progmem))' char dayStr4[] PROGMEM = "Wednesday";

            ^

C:\Users\PawUser\Documents\Arduino\libraries\Time\DateStrings.cpp:44:16: error: variable 'dayStr5' must be const in order to be put into read-only section by means of 'attribute((progmem))' char dayStr5[] PROGMEM = "Thursday";

            ^

C:\Users\PawUser\Documents\Arduino\libraries\Time\DateStrings.cpp:45:16: error: variable 'dayStr6' must be const in order to be put into read-only section by means of 'attribute((progmem))' char dayStr6[] PROGMEM = "Friday";

            ^

C:\Users\PawUser\Documents\Arduino\libraries\Time\DateStrings.cpp:46:16: error: variable 'dayStr7' must be const in order to be put into read-only section by means of 'attribute((progmem))' char dayStr7[] PROGMEM = "Saturday";

            ^

C:\Users\PawUser\Documents\Arduino\libraries\Time\DateStrings.cpp:48:20: error: variable 'dayNames_P' must be const in order to be put into read-only section by means of 'attribute((progmem))' PGM_P dayNames_P[] PROGMEM = { dayStr0,dayStr1,dayStr2,dayStr3,dayStr4,dayStr5,dayStr6,dayStr7};

                ^

C:\Users\PawUser\Documents\Arduino\libraries\Time\DateStrings.cpp:49:24: error: variable 'dayShortNames_P' must be const in order to be put into read-only section by means of 'attribute((progmem))' char dayShortNames_P[] PROGMEM = "ErrSunMonTueWedThrFriSat";

                    ^

Error compiling.

This report would have more information with "Show verbose output during compilation" enabled in File > Preferences.

have you tried compiling with arduino 1.0.6? If you have to use version 1.5.8 you may have to try different time.h libraries since some won't work, sorry I can't help any further since i hadn't had these problems. It may help to compile and run the time examples form the arduino IDE, to see if they run at all.

we try to make product like you at http://www.3dmaker.vn

Hi all, I'm having rather a lot of trouble getting the marker to "land" in the eraser holder. It appears that my servos aren't quite linear or the same, so I split SERVOFAKTOR into a "left" and "right" in order to get both servos to get turn 90 degrees in cal. Still no luck, though; there is some clear distortion in my coordinate system (very obvious during "erase"). Does anyone have any ideas for me to get this working? Thanks to joo for such a cool design, and to the community for support.

Here's image of the distortion. Any thoughts as to what constants to work on would be appreciated. http://imgur.com/Yh7IiNf

Figured it out. I had the arm with the pen gripper attached to the right servo, instead of the left one. Oops. All's well, now...

Sep 20, 2014 - Modified Sep 20, 2014

Hi, In the version 1 of the code, there is part which is commented //length of arms L1= a value, L2= a value, L3= a value Two of my arms are 35mm from centre to centre; the others are 55mm and 45mm. My thinking is that the length of the arms affects the position of the pen; From memory as I don't have the code to hand, 35mm is mentioned in the code but values for the others are diffident as noted above. I also done the calibration so that the servo moves 90 degrees. Could you explain the last diagram in relation to the box or the white board? As I currently have the machine thinking that the pen is on the opposite side and the pen holder is too far down from the top. Maybe update the instructions with the correct lengths of the arms needed? I'm also going to download another set of arms from this version as the arms I have, must be too long for this to work correctly.

I believe the way the code works is that L1 is the length of the arms closer to the servo (center to center), L2 is the length between the center of the far side of the L1 linkage and the pen center, and L3 is half the distance between the servo axes. Your "L2 arms" have different lengths because the pen is 10mm from the end of the pivot point, but the geometry is what's important, and the pen is 55mm away.

what's the distance between the 2 gears of the servos?

<p>this is awesome can someone share where they got the marker with the eraser cap pls?</p>

<p>http://disqus.com/thingiverse-ea9b6cd30546ce1e20bd2f6df7e82e64/ please check http://www.thingiverse.com/thing:371248. I added some functionality to your plotclock_v1.02.ino but have no glue about github. It should be still backward compatible, so if your want to integrate them as v1.03 please feel free to do so or let me know what I have to do on github</p>

plot thermometer / clock for 3D printers
by smily77
joo - in reply to smily77

<p>thanks a lot! eeprom/serial calibration integration was on my todo list :) don't know when i find the time to update the code the next time but will definitely integrate your code</p>

<p>Hi Joo, This is great project, my model is working well. Thank you for sharing.<br>I have some questions for you. <br>Can you share information how to make a equation to draw number?<br>I tried to figure out the equation using your code, it is not easy to figure out equation for writing number. <br>And I would like to make it writes an alphabets (A,a,B,b,....) Please help me to figure out how to program to do.</p><p>If I want to make a bigger version to using same code parameters, can I just scale all parameters up, parts and code parameters ?</p><p>Please give some advises for me.</p>

joo - in reply to pwoong

<p>void number(...) draws the numbers with drawTo (for lines) and bogen (for arcs) functions:<br>Example for number 1:<br> drawTo(bx + 3 scale, by + 15 scale); // Move pen to point x:3 y:15 (left in the middle)<br>lift(0); // Move pen down to surface<br> drawTo(bx + 10 scale, by + 20 scale); // draw diagonally to x:10 y:20 (on the top right)<br> drawTo(bx + 10 scale, by + 0 scale); // draw straight down to y:0<br>// bx/by are the originpoints for this particular number on the printing surface, with scale you can make it bigger/smaller</p><p>Number 3 is just 2 bogen functions for the upper and lower arc.</p>

<p>I have written the code using .netmf and remixed some of the parts, will upload soon</p>

<p>Can anyone tell me what screws they used? Where they completely threaded or partially ?</p>

joo - in reply to asedhai

<p>just normal M3 screws, fully threaded</p>

<p>Hai ,</p><p>Can you draw a smiley with the plotclock , is it possible <br>Who wants to write a source code to do this</p><p>Kind Regards</p>

<p>Hi, I'm newbie to the 3D and 2D printing, and I would like to start with your design.<br>I'm finding quite a lot of problems in trying to upload the PDF design to services like PONOKO or SHAPEWAYS. They ask for SVG files, not PDF.<br>If I convert it to SVG with INKSCAPE, then the updloading fails because it ask for blue lines for cutting and red for engraving...<br>I'm sure that I can end up finding a way to do it, but I suspect that this is too much workaround for a simple task as uploading a design.<br>Could you please give some direction for doing this in Laser-cutting style?<br>THanks</p>

<p>the PDF is meant to directly work on epilog laser-cutters (most common type in fablabs/hackerspaces), so lines to cut are 0.01mm and areas to engrave are in black without an outline. Using inkscape you sould be able to adapt it for commercial services, but i have no experience in doing so.</p>

<p>bubbo: being inverted means the servos work inverted, so the "3000-" trick should work. You may have to change the SERVOLEFT/RIGHTNULL values quite a bit. Sadly all servos I used havn't had that problem, so I couldn't replicate the problem</p>

bubbo - in reply to joo

<p>Hi Joo,</p>

<p>thanks for your answer. In calibration-mode i adjusted the SERVOLEFT/RIGHTNULL values</p>

<p> so that they are in 90 degrees, like in the picture. Then this happens without the "3000-" trick (sorry, this terminology you get when a complete noob like me tries to build this thing) <br>wiping from bottom to top. Writing is from left to right, but it looks upside down (he puts the dots bottom one first) and the parking position is bottom right.<br>Then with the '3000-' trick:<br>wiping from top left to bottom, writing from right to left, but not upside down. parking position is top left.<br>so now i'm a bit confused</p>

joo - in reply to bubbo

<p>nice :) It are always the little things that make big problems ;)</p>

<p>Looking at the code to try and reverse out the kinematics: is L1 = arm attached to servo, L2 = arm from "elbow" to pen, L3 = ? (distance between servo pins?)</p>

<p>i think L3=from the joint where the arms come together to the center of the pen</p>

<p>awesome can't wait till i make 1</p>

<p>After waiting for 25 days for my servos to arrive from China, finally made one for myself! Thanks a lot joo!</p>

<p>I converted the code to C# for use with the Netduino...It prints, but everything is skewed pretty badly. Trying to figure out how things are supposed to be layed out so I can debug a bit better. Is the below correct?</p>

<p>Drawto(0,0) = top left<br>Drawto(50,0) = top right (by the eraser)<br>Drawto(50,50) = bottom right<br>Drawto(0,50) = bottom left</p>

<p>Also, during calibration, is it supposed to be drawing a diagonal line from top left to bottom right?</p>

<p>I'm stuck with ardinuo and getting it working. I have downloaded everything from github but has anyone done a turorial on it or can help please? The plotclock is made, i'm just stuck on the ardinuo software.</p>

<p>have you read the instructions tab or the comments in the arduino sketch? where are you stuck?</p>

<p>Hi yes i have downloaded the files from github. I have opened plotclock.ino in ardinuo, then downloaded time, timealarm and DS1307RTC from the links. Put these in a folder together so ardinuo see's them when I open plotclock.ino. Plotclock.h then is looking for wire.h and servo.h. Where or how do I get these from? Am I going in the right direction so far?</p>

<p>wire and servo headerfiles come as standard with the arduino softwrare, you may try the arduino-software examples -> servo sketches to verify your arduino and arduino software is working correctly</p>

<p>Hi, I have tried but i don't understand how to get the arduino working. Is there a tutorial online I can follow which anyone knows about please?</p>

<p>I have added the libraries and when I verify it says 'time_t' does not name a type.</p>

<p>Hi, </p>

<p>No one made lasercut & 3D pieces on a selling kit ? </p>

<p>No laser cut machine and 3D printer here :-(</p>

<p>Peter (EuroZone)</p>

<p>Is there anyway to set it up to be a 12hr clock instead of a 24hr one 'cause I don't like 24hr clocks I know it's in the programing but I don't know how</p>

<p>HI Joo,</p>

<p>I just remix it to hold stylus pen on Note 2 to plots time(http://www.thingiverse.com/thing:268065),&lt;br&gt;But seems I did not do correctly Initial calibration, </p>

<p>According to your code comments, <br>To CALIBRATION :</p>

<p>1) adjust the "SERVOFAKTOR" until the servos move exactly 90 degrees,<br> need move like you last upload image?<br> I'm trying to adjust but it move more or less around 5 degrees (I will upload video tonight)<br> This will affect the text crooked yet?</p>

<p>2) Zero-position of left and right servo<br> What does it mean "Zero-position"?</p>

<p>3) origin points of left and right servo<br> I do need to adjust in order to calibrate</p>

<p>Thanks for your help and sorry for my English (thanks google translate)</p>

Plotclock on Note 2
by dTom
joo - in reply to dTom

<p>Nice work with the capacitive touch pen :)<br>yes, it should move to the positions as seen in the last image. The zero-variable sets the initial angle, the servofaktor then defines how much "steps" the servo needs in order to turn 90°, you shouldn't need to change the origin points. In your video it looks like the servoholder is a bit loose, since there is much movement by the servomount, but nut by the pen.</p>

<p>Hello again, I managed to solve the problem! Was bad and also the USB cable adapter 9v, very weird because he used the USB cable to print: S and adapter worked well also! the point is to change cables and everything ok. </p>

<p>Thanks for your help and sorry for my English (thanks google translate)</p>

<p>this would be great with a push button to write the time.. that way the pen should last much longer</p>

<p>I have also thought of this idea however the time will be displayed wrong after the minute is up. Perhaps it could write the time when the button is pushed and then after 60sec it erases the time and waits for the next button push? It would be great if there was a feature that could be commented out in the arduino code that would enable this.</p>

<p>that sounds like a good idea.. or it updates for five minutes? then finishes on an erase and waits for a button push (or wire it up to a motion sensor and it will update the time when someone enters the room??)</p>

<p>Joo,</p>

<p>Once again, thank you for the help. I did do the intial calibration and it did draw the time, however it was upside down. Will this give me the figure eight on the x-axis? Why are the start and finish points slightly different? So your going 269 degrees and finishing at -91 degrees?</p>

<p>number(30, 35, 8, 1);</p>

<p>case 8:</p>

<p> drawTo(bx + 5 scale, by + 10 scale);<br> lift(0);<br> bogenUZS(bx scale, by scale, 10 scale,4.7,-1.6, 1);<br> bogenGZS(bx + 20 scale, by scale, 10 scale, -4.7, 2, 1);<br> lift(0);<br> break;</p>

joo - in reply to xenonion

<p>i actually don't know the exact reason, but i think it had to do with the circles not closing because of the play in the hinges... it also could be that the functions are a bit off and faulty</p>

<p>Thank You for the help! What are the XY maximums? Are the angles in radians? Firstly, I should mention that the plot clock is actually working backwards, it does not draw as in your videos, but upside down. Secondly, I have been playing with the settings and the servos will travel full deflection off of the board if the values are too extreme. </p>

<p>This is very helpful.</p>

joo - in reply to xenonion

<p>angle is in radians, have you used the v1.01 with calibration routine? also if your servos are inverted there is a discussion down the comments about it, a quick fix seems to be the following:</p>

<p>change all <br>.writeMicroseconds(servoLift)<br>to <br>.writeMicroseconds(3000-servoLift)</p>

<p>and change<br>writeMicroseconds(floor(((a2 + a1 - M_PI) SERVOFAKTOR) + SERVOLEFTNULL));<br>writeMicroseconds(floor(((a1 - a2) SERVOFAKTOR) + SERVORIGHTNULL));<br> to <br>writeMicroseconds(3000-floor(((a2 + a1 - M_PI) SERVOFAKTOR) + SERVOLEFTNULL));<br>writeMicroseconds(3000-floor(((a1 - a2) SERVOFAKTOR) + SERVORIGHTNULL));<br>to reverse the servos</p>

<p>Hello, How would I modify the code to draw a single figure 8 horizontally? Is this possible?</p>

<p>Thank You!</p>

joo - in reply to xenonion

<p>use <br>bogenUZS(float bx, float by, float radius, int start, int ende, float sqee) <br>to draw clockwise arcs (or circles) bx/by = center, radius = radius, start = starting angle, ende = ending angle, squee = sqish or flatten circle<br>bogenGZS is the counter clockwise version</p>

<p>Amazing robot Joo great work! Had an idea from that robot. If i had time and the resources I would replace the marker with a stylus and and for the surface I would put an galaxy note where it could draw the time. Well it could even be used to automate other apps from the device for example Calculator, Angry Birds etc.</p>

<p>Hi Joo - I've added a pull request on github to merge in a couple of small changes into the code:<br>- support for DS1307, DS1337 and DS3231 real time clock chips so plotclock tells the right time<br>- ability to calibrate servofaktor separately for left and right servos</p>

<p>For anyone interested:</p>

<p>- the github code is at https://github.com/Dave1001/plotclock (hopefully will be merged into the next release by Joo)<br>- you can pick up DS1307 real time clock modules on ebay for under $2 incl postage<br>- instructions to connect the RTC to your arduino are here http://www.pjrc.com/teensy/td_libs_DS1307RTC.html&lt;/p&gt;

<p>already have a DS1304 module lying around, gonna test it later that week and then merge it, also will update the lasercut parts for a first revison</p>

cain666 - in reply to joo

<p>arre you able to include instructions on how to wire up the RTC to the plot clock??</p>

<p>Would someone be kind enough to comment this code? I think I understand how it works but I dont get how it knows how to plot each number.<br>Thx</p>

<p>can someone video the start and then the cycle it goes through without editing to show home locations and the sequence it goes through, servo with arms is in the home position, I cannot seen to get the arm orientated correctly. It looks like to me that everything is reversed, writing in air (up) and working from right to left.</p>

<p>Thank you HarlanDMii that is exactly what I needed.</p>

<p>Thank you to HalanDMii, everything works fine <br>See previous comments </p>

<p>Kind Regards</p>

<p>I also tried to copy and paste the code from the git hub, but when it is compiling, it says</p>

<p>" </p>

<p>setTime(19,38,0,0,0,0);</p>

<p>'setTime' wasnot declared in this scope.</p>

<p>sketch_feb24a.ino: In function 'void setup()':</p>

<p>sketch_feb24a:66: error: 'setTime' was not declared in this scope</p>

<p>"</p>

<p>Any ideas?<br>Thanks in advance</p>

<p>Hi, I am having the same problem, I have the time library imported (downloaded - imported the zip file) then I (i dowloaded the files from GIT and opened the sketch) yet when I go to verify it still gives the same error. Any Suggestions? Have I missed a step somewhere? Cheers</p>

<p>Figured it out after some more googling...Problem was when you install the time library automatically it puts time.h file within a folder called time...within the time library: Libraries-Time--Time---Time.h. It needs to be Libraries-Time--time.h instead (aka it has an extra time folder)...if that makes sense.</p>

<p>Ok i figured this one out, i just needed to download the time library :)</p>

<p>I copied and pasted the code from github, and it works, but the left and right motors just sweep back and forth with the lift motor up??</p>

<p>Just ended up with some new servos.. Having the same problem with sweeping back and forth.. Apparently, they are over powering the arduino causing it to reset each time it tries to lift. <br>The mini servos I purchased from radio shack didn't have that problem.</p>

<p>delete the line that says<br>#define CALIBRATION<br>Then upload the sketch to the arduino again</p>

<p>Hello,</p>

<p>I have a question, i cannot seem to be able to open the .ino or arduino sketches?? does anyone have an answer? i just want to load it into the arduino.</p>

<p>Hello again, I have tested with a 9V charger router - 1A and servos only turn left continuously. </p>

<p>I have tried since revision 3 firmware with the same results, the servos turn right and do not stop, I have to stop it to prevent burning. </p>

<p>The connections seem fine :S </p>

<p>Anyway I recorded a video that you may see. </p>

<p>(it's in HD) </p>

<p>http://www.youtube.com/watch?v=HHfq7AAUwBY&lt;/p&gt;

<p>I'm sad :( I work them all and my no!</p>

<p>I noticed that the LED's on the arduino are red... Are they red like that without the servos connected?</p>

<p>Also in the vid, your wires are connected to pins 1,2 and 3.. The code default is pins 2,3 and 4</p>

<p>Thanks for responding, and I replied to that before it, that the pins are 2, 3 and 4 ... I set myself to try others. </p>

<p>Finally I tried the examples arduino servo and still have the same problem, but do not connect the yellow wire servo data always move and not stop. </p>

<p>The lights are always red when recording unless the firmware. </p>

<p>I do not understand that can happen, the arduino is new and seems to work well, but only Aque sevor connect the arduino to the current, this does not stop moving ...</p>

<p>I was curious if you ever solved the problem. I wonder if it might still be a power problem. <br>I fixed a slightly different issue on mine by using a 5 volt regulator and an external power supply. <br> http://youtu.be/PLDOygEsHCk&lt;/p&gt;

<p>No friend, I still have the same problem :(</p>

joo - in reply to Aivan

<p>hm, have you changed the servo pins in your arduino sketch because you use 1 2 and 3 instead of 2 3 and 4? also i would recommend you to use the current version 1.01 of the program</p>

Aivan - in reply to joo

<p>Hello! I've tried all versions and with the pins 2,3 and 4, also tried aconfigurar other pins with the same results. </p>

<p>For safety I returned to comporobar the latest version and pins 2, 3 and 4 but still the same: (</p>

joo - in reply to Aivan

<p>well, everything else looks right, the servos are connected correctly and everything. have you tried the arduino example sketches for servos? they are fairly simple and should definitly work</p>

Aivan - in reply to joo

<p>I did some more tests, the servos do not stop riding because they always have current probe to put the servos without data cable and did not stop. </p>

<p>I do not understand why this can happen, the Arduino is new :S</p>

Aivan - in reply to joo

<p>nope, I'll try ... Thanks!</p>

<p>What were the dimensions of the piece which you laser cut (height and length)?</p>

<p>don't know exactly, but its a bit smaller than A5-paper, so on the typical A3 laser cutter you can cut four on the same sheet</p>

<p>Hai </p>

<p>I've read that you have quite a few elko in the supply line puts zodicht possible to the servo connections <br>I use 2x 470?F dietary offs (peak flows)</p>

<p>An excellent work! </p>

<p>I have a small problem, first excuse my English (thanks google translator). </p>

<p>I'm using: </p>

<p>Arduino UNO R3 <br>Servos Hextronik hxt900 9g<br>(http://articulo.mercadolibre.cl/MLC-416197377-micro-servo-motor-sg90-_JM) <br>USB Connection </p>

<p>The problem is that Arduino connects and disconnects the USB. </p>

<p>Arduino working properly, load firmware and running, but when I connect the servos are disconnected and reconnected the USB. </p>

<p>I've checked all connections and everything seems fine, I also tried to configure other data pins getting the same results even desperate've tried 3 different computers. </p>

<p>Any idea? <br>Anyone has this happened? <br>Can the problem be the servos? </p>

<p>I want to see the time on my plotclock: (</p>

<p>I had the same problem.. Use a 6-12 volt adaptor to power the arduino.</p>

joo - in reply to Aivan

<p>i had this problem only when the servos needed too much force to move at all, say having a joint too tight or having a mechanical error where the pen is stuck. So first I would check if every joint and connection runs freely, if there still are problems try adding a big capacitor, or using a smartphone/tablet charger for the 5V supply (PC-USB only handles 500mA). Also try connecting the servohorns one at a time to see when the arduino starts resetting.</p>

Aivan - in reply to joo

<p>Thanks for the replies! </p>

<p>I try to use external power. </p>

<p>I have checked all the servos one to one presenting the same problem, if it is true that every time you connect the servos and arduino increasingly less power move. </p>

<p>Not if I explain or understand me well.</p>

<p>So inspiring I actually built one... but I had the same problems as Sembot. I wanted to ask for some info on the code. What are the max/min values? What do you mean by parallel (I don't think it's possible) with reguard to the arms? What do bigger/smaller numbers do? etc. I've been added comments to the code as I figure things out, but I'm still a ways off before it come close to working. I spent a fair bit of time tweaking the files to work with 5mm acrylic so I can use uv/black lights and wet erase markers. I'll follow up if I get it fix. And I'll follow up sooner if I don't ;)</p>

<p>Hai Acklenx, </p>

<p>May I ask if you've already found a solution to the problem of mirror movement <br>I still have not found what reason can be <br>The type of my servos = Micro Servo 9G ?????</p>

<p>Can anyone help with the calibrate </p>

<p>with kind regards</p>

<p>hai, </p>

<p>The movements of my plot clock are mirrored what can I do <br>Erasing from top left to bottom right <br>Writing from top right to bottom left <br>The elevator servo is up (writing in the air) <br>If he stops the pen stand top left, right servo arm outstretched<br>So everything is reversed (mirrored) <br>What can I do, can someone help me <br>I use pin 8,9 and 10 of the Arduino (got the pins 2,3,4 in the program changed) <br>Pin 8 is the lifting servo<br>Pin 9 is the right servo ( highest )<br>Pin 10 is the left servo with the double support</p>

<p>Kind regards</p>

<p>Can't believe I made such a simple mistake.. I originally said 2000-<br>That should have been 3000- <br>Sorry</p>

<p>change all <br>.writeMicroseconds(servoLift)<br>to <br>.writeMicroseconds(2000-servoLift)</p>

<p>and change<br>writeMicroseconds(floor(((a2 + a1 - M_PI) SERVOFAKTOR) + SERVOLEFTNULL));<br>writeMicroseconds(floor(((a1 - a2) SERVOFAKTOR) + SERVORIGHTNULL));<br> to <br>writeMicroseconds(2000-floor(((a2 + a1 - M_PI) SERVOFAKTOR) + SERVOLEFTNULL));<br>writeMicroseconds(2000-floor(((a1 - a2) SERVOFAKTOR) + SERVORIGHTNULL));<br>to reverse the servos</p>

joo - in reply to Sembot

<p>it seems your servos are inverted, you may try setting the servofaktor negative, say -620 instead of 620 and also play with the values of LIFT0 / 1 / 2</p>

<p>Where can I buy one?</p>

<p>This thing is so cool and funny i can´t stop to laugh :-D<br>I love it!</p>

<p>How do I download the .stl files for the plotclock?</p>

<p>I am so exciting to make one today and it works good but still need to calibration.Lots of my friends in shenzhen want me to host a workshop.I would like to talk with you about my ideas.Would you share with me ur contacts?Thanks!</p>

<p>Excellent level of effort in creativity and execution. :)</p>

<p>But the important question is: Does it keep printing and erasing 00:00 when you haven't set the time after a power failure? :-).</p>

<p>Man - this is the coolest thing I have seen on here is a while - what a delightful little thing, :)</p>

<p>Incredible project! Admittedly, I am a complete noob when it comes to arduino, but this inspires me to give it a try. Can you give me further detail on what you listed in your instructions: "A small custom servo adapter, there are shields or servo-arduinos that also can be used". I think I'm pretty clear on all the other parts, but not sure what exactly this is. Thanks!</p>

<p>Something similar to this: http://www.adafruit.com/products/1411&lt;br&gt;although you don't need as many channels only one per servo I think.</p>

laird - in reply to nkizz

<p>To elaborate slightly, you can control the servo directly from the Arduino, up to the number of pins on the Arduino (12+, depending on the model), but the Arduino doesn't have enough power to drive very many servos, so you have to wire the control to the Arduino, and the power and ground lines to a power supply. For a few servos you can do this on a small breadboard, or solder everything directly. The board that is linked above does this, and adds a multiplexer, so you can control many more servo's.</p>

<p>For this build, you might be able to power three servos from the Arduino directly, depending on how much current the servos draw. But it'd be safer/cleaner to power the servos separately from the Arduino, so that (for example) you can't have interactions like (for an example I've run into) you move all three servos at once, drawing too much current and resetting the Arduino. :-)</p>

<p>That's super-helpful info. Thanks!</p>

<p>what a great example for object-oriented ontology! it's so darn cute.</p>

<p>Das hätte Karl Valentin noch erleben sollen!</p>

<p>One might be able to "write" on glow in the dark painted surfaces with a<br> blue laser too. No need to clean that. It would take some very good <br>paint with a nice slow half life. The light would have to be blue or <br>possibly green. Red is too low energy to excite glow in the dark <br>paint. UV lasers or focused LED's would be best. :-) The machine could repeat the pattern over and over within each minute to keep the image refreshed. Enough of my rambling. Very cool creation as it is right now. :-)</p>

<p>Which time.h library did you use?</p>

<p>This could easily become a milling machine.</p>

<p>This is a great project, I have all the parts printed in PLA with my Prusa Mentel 3D robot and everything was perfect <br>I am confused how to place before the start of the arms from the servos <br>Is the starting position right above?? <br>Anyway, I am happy with this project</p>

<p>Hey my friend, you are really mad :D THIS THING IS AWSOME! ! ! I have great respect for you! Greets from Bremen</p>

<p>Great fun project.<br>This will be my son's first arduino project on the board I geve him. I will start printing the parts for him :-)</p>

<p>He already proposed to build one additional one... next to it..... writing the date :-)<br>And a third writing names of people having birthday that day :-)</p>

<p>Thomas</p>

<p>Dude! This is so cool!</p>

<p>I converted the whole thing to .stl files and i am printing it now. Now i just need to order the servos and the Arduino. This is a GREAT little project! Thanks for sharing it!</p>

<p>Someone needs to add a head above the servos so it looks like its a little guy drawing the time holding onto the market with two hands</p>

<p>I was thinking the same thing and i am already working on it :)</p>

joo - in reply to aaronR

<p>should be the right ones, tower pro 9g, mine were about 16€ for 8 servos from china</p>

aaronR - in reply to joo

<p>can you give me the link?</p>

<p>Nicely done. The world is filled with people who are inclined to tell you what to do, but I just can't help myself in this case. With this setup I'd want to see it running on and on and on... , but the pen will get used up and I presume the eraser part will get saturated. If anyone out there has the time, it would be great to modify this design to draw around in tiny sandbox. You'd never use up the sand and it would still be just as cool. It would then be practical to leave running 24/7 for everyone's enjoyment. That just my 2 cents worth. (or should i have said microBTC ?) </p>

<p>Further ideas: If the sandbox had a vibrator attached, the writings could just fade away. If there were 2 different densities of "sand" they would automatically form layers and if they are different colors, the drawing would be more pronounced. (airsoft bb's?) I do it myself If I wasn't so busy. :-) I may do it anyway, but I challenge anyone to beat me to it. :-)</p>

<p>ohhh, that's a good idea. I'd try it if I didn't already have plans for projects. :) go for it</p>

<p>or you could us a litle brush i replace of the gum for the sand :)</p>

<p>Was just thinking about sand also! Though the original idea is still marvelous :)</p>

<p>Or perhaps draw using water on Zen Board (http://blog.freepeople.com/2013/03/living-zen-board/ or http://www.buddhaboard.com/)? If you could make a marker from some felt and tubing, you could draw with water "forever". I guess you'd have to refill it over time. So then your Aduino could be relaxed and meditate on the nature of time for you!</p>

<p>I don't think you can do zen meditation vicariously through robotics. :-) (but one could try) When I suggested sand, the thoughts zen sand/gravel raking came to mind for me too.</p>

<p>Awesome :D</p>

<p>could i use the raspberry pi?</p>

<p>Thats was a really cool project! I just love it!</p>

<p>I had some extra time so I broke down the SketchUp file and created the STL files. They are located here http://www.thingiverse.com/thing:250204 as a remix.</p>

Plot Clock STL Files

<p>Holy COW!!! I've seen amazing 3D printed stuff.. and this has gone to the top of my list! AMAZING.. gonna try an make one</p>

<p>Is there any way you could post all of the parts as STL files? I would really like to make this for my High School programming class. Great work by the way, super cool!</p>

<p>you can export this as an .obj from sketchup http://www.sketchup.com/ and most 3D printers like the Replicator can use that file type</p>

<p>I really like this and want to build one. It will go nice beside my useless machine. But I dont have sketchup and cannot afford it- Im a retired guy so I cant get the student version. Can you post the parts files as dfx? I could them cut the parts on my CNC router.</p>

<p>I believe that sketchup make is available for non-commercial use. You can go to this link and download it for "Personal Projects".</p>

<p>http://www.sketchup.com/download&lt;/p&gt;

<p>More shaky but I like it even better, esp the way it wipes the number and counts the seconds (a human-like wrist movement). Would you re-make it specifically for 3D printing? thumbs up!</p>

<p>currently developing one which is elegant 3d printed and works without a pen so that it lasts forever and uses micro steppers to get more accuracy... will show it in a month or so......</p>

<p>Will definitely try to get back to it :)</p>

<p>Good for you. Now someone has done it again.</p>

<p>Klasse. tolles Projekt !!! <br>Alle Daumen hoch vom Hackerspace Bremen. ;-)</p>

<p>I gave a talk today at the NY 3D Print Show and as part of it showed some of the cool things that have been uploaded to Thingiverse recently. The plotclock was the hit of the show. Congrats on a fantastic project.</p>

<p>You bet! But please tell me you gave the author proper credit! http://creativecommons.org/licenses/by/3.0/ ;-)</p>

<p>I screensnapped the thing page, so credit was front and center!</p>

This comment has been deleted.
joo - in reply to bre

<p>Thanks a lot!</p>

<p>That's a clever design! I would like to make a derivative for an analog wall clock.</p>

<p>Brilliant! =D</p>

<p>Very Very Cool ... Thanks for sharing! Went to the top of my list of things to make.</p>

<p>Amazing! !</p>

<p>it's the same AVR, so it shouldn't be a problem</p>

<p>THIS IS SO BEAUTIFUL I COULD CRY!!!! I must make one immediately!</p>

<p>first of all: great design!<br>So now i made one myself, but also with mine it's writing backwards and the parking is top left instead of topright.<br>Now in tried the '3000-' trick, but that doesn't seem to solve the problem. Is there maybe something else i can try? Perhaps switch pin 3 and 4? <br>hope you can help me out, because i would love this thing to work.</p>

<p>thanks,</p>

<p>Bubbo</p>

Top