{"id":20601896,"url":"https://github.com/pilhuhn/xy-plotter","last_synced_at":"2025-04-15T01:53:42.519Z","repository":{"id":138085970,"uuid":"116128741","full_name":"pilhuhn/xy-plotter","owner":"pilhuhn","description":"Arduino-code for my XY-plotter","archived":false,"fork":false,"pushed_at":"2021-01-01T15:36:23.000Z","size":63,"stargazers_count":14,"open_issues_count":6,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-15T01:53:36.473Z","etag":null,"topics":["arduino","plotter","stepper-motor"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pilhuhn.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-01-03T11:22:03.000Z","updated_at":"2023-09-03T17:59:45.000Z","dependencies_parsed_at":"2023-07-03T05:26:30.969Z","dependency_job_id":null,"html_url":"https://github.com/pilhuhn/xy-plotter","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pilhuhn%2Fxy-plotter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pilhuhn%2Fxy-plotter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pilhuhn%2Fxy-plotter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pilhuhn%2Fxy-plotter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pilhuhn","download_url":"https://codeload.github.com/pilhuhn/xy-plotter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248991540,"owners_count":21194894,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","plotter","stepper-motor"],"created_at":"2024-11-16T09:12:19.984Z","updated_at":"2025-04-15T01:53:42.513Z","avatar_url":"https://github.com/pilhuhn.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"= XY-Plotter\n\nSoftware for my plotter, first described at http://pilhuhn.blogspot.com/2018/01/homegrown-xy-plotter-with-arduino.html\n\nThe plotter waits on its serial interface for commands.\n\nCurrently implemented commands are\n\n* s : manual mode. Pass in a path definition to make the plotter move.\n* E : enable the motors\n* D : disable the motors\n* C : continuous mode: see below\n* H : Go home - sets the plotter to its defined home point\n* u : pen up, raises the pen so that it does not draw\n* d : pen down, lowers the pen so that it draws\n* r\u003cval\u003e: set resolution to _val_ steps per mm. Default is 160steps per mm\n* Q : emergency stop in manual mode\n* v\u003cval\u003e : set servo at passed int _val_ue\n* V : toggle verbose mode (default off)\n* R : toggle dry run (default off)\n* i : enable end switches\n* I : disable interrupts\n* z\u003cc\u003e\u003cval\u003e: send z-Axis command _c_ with value _val_. See zAxis.ino for more info\n* a\u003cr\u003e[,\u003cstart\u003e,\u003cend\u003e] : arc (circle) with radius _r_. If _start_ and _end_ are given, an arc is created. \n* A\u003cr\u003e[,\u003cstart\u003e,\u003cend\u003e] : arch like 'a', but current point is mid-point and not on the arc/circle\n\n== Path definition\n\nPath commands are relative movements from the current position of the print head.\nThe format follows:\n\n----\n    PIPE::= '|'\n    SPACE ::= ' '\n    XCHAR ::= 'X'\n    YCHAR ::= 'Y'\n    MINUS ::= '-'\n    COMMA ::= ','\n    NUM ::= ['0'-'9']\n    PEN_UP ::= 'U'\n    PEN_DOWN ::= 'D'\n\n    radius ::= NUM+\n    start :: NUM+\n    end :: NUM+\n    arc ::= ('A' | 'a') radius (COMMA start COMMA end)?\n    item ::= (XCHAR | YCHAR) MINUS? NUM+\n    move ::= item (SPACE item)\n    segment ::= move | arc | PEN_UP | PEN_DOWN\n    path ::= segment ( PIPE segment)*\n----\n\nwhere 'n' is a numeric digit.\n\nExamples: \n\n* X30 - move 30 units on the X-axis\n* Y-2 - move -2 units on the Y-axis\n* X10 Y5 - move 10 units on the X-axis and also 5 units on the y-axis\n* X2 Y2|X-2 - first move 2 units on the X-axis and 2 on the y-axis. Then move -2 units on the X-axis\n\nThe units depend on the setting of the plotter. In my case 1 unit = 1mm.\n\n== Continuous mode\n\nWith the 's' command, the plotter expects one path definition, does the work and waits for a new command.\n\nWith continuous mode, the plotter only expects path segments after continuous mode was enabled.\nIt processes the segments and then reads the next path from serial input.\nIf it encounters `-END` it will stop and exit continuous mode.\n\n.Example to display the start of a Hilbert curve\n----\nC\nX4 Y0|X0 Y4|X-4 Y0|X0 Y4|X0 Y4|X4 Y0|X0 Y-4\nX4 Y0|X0 Y4|X4 Y0|X0 Y-4|X0 Y-4|X-4 Y0|X0 Y-4\n-END\n----\n\n== Plotter responses\n\nThe plotter responds with vaious kind of data.\nIf it waits for more input it will reply with a text starting with `OK`.\nDebug output starts with `D`.\nIf the plotter encounters an error it will repyl with `ERR`.\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpilhuhn%2Fxy-plotter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpilhuhn%2Fxy-plotter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpilhuhn%2Fxy-plotter/lists"}