{"id":15150807,"url":"https://github.com/p4p-83/gantry","last_synced_at":"2026-02-08T19:34:50.712Z","repository":{"id":247710074,"uuid":"811664932","full_name":"p4p-83/gantry","owner":"p4p-83","description":"The low-level machine control of our x-y stepper motors and limit switches.","archived":false,"fork":false,"pushed_at":"2024-09-15T03:27:07.000Z","size":82208,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-19T09:53:38.259Z","etag":null,"topics":["arduino","c","cpp","firmware","gantry","platformio"],"latest_commit_sha":null,"homepage":"https://p4p.jamesnzl.xyz","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/p4p-83.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2024-06-07T03:57:07.000Z","updated_at":"2024-09-15T03:27:11.000Z","dependencies_parsed_at":"2024-09-15T08:40:36.414Z","dependency_job_id":null,"html_url":"https://github.com/p4p-83/gantry","commit_stats":null,"previous_names":["p4p-83/gantry-old","p4p-83/gantry"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/p4p-83/gantry","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p4p-83%2Fgantry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p4p-83%2Fgantry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p4p-83%2Fgantry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p4p-83%2Fgantry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/p4p-83","download_url":"https://codeload.github.com/p4p-83/gantry/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p4p-83%2Fgantry/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29240704,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-08T18:06:38.086Z","status":"ssl_error","status_checked_at":"2026-02-08T18:06:09.124Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","c","cpp","firmware","gantry","platformio"],"created_at":"2024-09-26T14:42:59.872Z","updated_at":"2026-02-08T19:34:50.696Z","avatar_url":"https://github.com/p4p-83.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `gantry`\n\n\u003e [!NOTE]\n\u003e Refer to [`p4p.jamesnzl.xyz/learn`](https://p4p.jamesnzl.xyz/learn) for full details.\n\nThis gantry firmware was originally forked from [`Makeblock-official/XY-Plotter-2.0`](https://github.com/Makeblock-official/XY-Plotter-2.0), but has since been significantly re-written.\n\nThis repository contains the low-level machine control for our x-y stepper motors and limit switches for our pick-and-place machine.\n\n## Usage\n\nFirstly, clone this repository.\n\nThis repository is structured as a [PlatformIO](https://platformio.org/) project.\n\n```sh\n# git submodule update --init\ncode .\n```\n\n- Use `w`, `a`, `s`, `d`, `h`, `j`, `k`, or `l` to step the gantry a fixed increment in the specified direction.\n- Use G-Code to provide a target location (`LF`-terminated!).\n\n```sh\nG28 # go home\nG0 X10000 Y10000 Z0 # go to 10000um, 10000um, 0um\nG1 X10000 Y10000 Z0 # ''\n```\n\n## Known Issue(s)\n\n\u003e [!warning]\n\u003e This list does not claim to be complete---it contains only the issues I can immediately recall.\n\n1. If a target position is provided that exceeds the working range, the limit switches are hit, and the current position written to that invalid position. All future operations then have some offset error. Said differently, there is no bounds checking.\n2. Feed rate `G1 F...` is not supported.\n3. Commands may be ignored if provided too quickly; ie if the present command is yet to complete. Said differently, there is no handshaking.\n\n\u003c!-- ## Interfaces\n\n### USB\n\n- A USB serial port at `115200` baud is used to exchange data between this firmware and the [`p4p-83/controller`](https://github.com/p4p-83/controller).\n\n#### Protocol Buffers\n\n- [Protocol buffers](https://protobuf.dev/overview/) are used for data exchange.\n- See [`p4p-83/protobufs`](https://github.com/p4p-83/protobufs) for the `.proto` definition(s). --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fp4p-83%2Fgantry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fp4p-83%2Fgantry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fp4p-83%2Fgantry/lists"}