{"id":19150028,"url":"https://github.com/smashingboxes/fraqture","last_synced_at":"2026-02-25T21:02:09.496Z","repository":{"id":140668788,"uuid":"47421235","full_name":"smashingboxes/fraqture","owner":"smashingboxes","description":"An interactive digital art project built with Clojure and Arduino","archived":false,"fork":false,"pushed_at":"2017-09-15T15:02:49.000Z","size":49863,"stargazers_count":17,"open_issues_count":2,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-05-07T05:04:49.985Z","etag":null,"topics":["art","clojure","quil"],"latest_commit_sha":null,"homepage":"","language":"Clojure","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/smashingboxes.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":"2015-12-04T18:13:54.000Z","updated_at":"2022-06-25T21:04:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"6a06173e-6d6a-4389-8705-a21cd7b913ef","html_url":"https://github.com/smashingboxes/fraqture","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/smashingboxes%2Ffraqture","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smashingboxes%2Ffraqture/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smashingboxes%2Ffraqture/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smashingboxes%2Ffraqture/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/smashingboxes","download_url":"https://codeload.github.com/smashingboxes/fraqture/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252817010,"owners_count":21808705,"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":["art","clojure","quil"],"created_at":"2024-11-09T08:10:24.603Z","updated_at":"2026-02-25T21:02:04.454Z","avatar_url":"https://github.com/smashingboxes.png","language":"Clojure","readme":"# fraqture\n\nAn interactive art framework that takes inputs from social media, maps them to the\ninteractive parts of a drawing, and renders the art. The platform consists of a 50\"\nTV display driven by Clojure's Quil library outlined with 540 DotStar LEDs driven by\na Teensy 3.2.\n\n![installation-pic](resources/shifting-grid.jpg)\n\n## Exhibitions\n\nCome see fraqture live!\n\nYou can find Fraqture today in the [21C storefront window](https://goo.gl/maps/rb3uesMPJB92) in downtown Durham, NC.\n\n- March 14-16th - [New Orleans Entrepreneurs Week](https://noew.org/)\n- Now - Downtown Durham\n\n![textify](http://i.imgur.com/99fEYH9.gif)\n\n## Usage\n\n`lein run \u003cdrawing name\u003e`\n\nFor examples of what each of the drawings does, check out the gifs in [examples.md](examples.md).\nStart by trying `lein run cycle`.\n\n# Hardware\n\nThe Fraqture Project uses two custom-build LED panels with 270 individually addressable LEDs each\nto extend our canvas out from the screen. We are using a\n[Teensy 3.2](https://www.pjrc.com/store/teensy32.html) to receive commands over a serial connection\nand use them to refresh the panels. The sections below discusses how to connect and issue commands\nto the panels.\n\n### Reset Communications\n\nThe LED serial communication is a basic state machine. When a device connects to the panel driver,\nit is impossible to know whether it is in the default state or not. To reset the state machine of\nthe panel driver, simply wait 2 seconds in between messages and the state will be reset.\n\n## LED Commands\n\nAll LED panel commands follow the same structure, where the payload is strictly packed and all\nnumbers larger than 8 bits are packed little endian.\n\n```\n1 BYTE        0-7 BYTES\n+------------+-----------------+\n| COMMAND ID | COMMAND PAYLOAD |\n+------------+-----------------+\n```\n\nNew commands can easily be added using the `terminal_attach(terminal_t *term, terminal_cmd_t *cmd)`\nfunction found in `arduino/strobe/terminal.c`.\n\n### Refresh Pixels\n\nThis command will refresh the LED array. This allows you to do multiple paint operations without\neating the cost of refreshing the array after each one.\n\nCommand ID: `R`\n\n### Clear Pixels\n\nThis command will clear the LED arrays. This command has no payload.\n\nCommand ID: `S`\n\n### Window Pixels\n\nThis command will paint a window of pixels.\n\nCommand ID: `W`\n\nPayload (in order):\n- `u8 row-start`: the starting row for the window\n- `u8 col-start`: the starting column for the window\n- `u8 row-end`: the starting row for the window\n- `u8 col-end`: the ending row for the window\n- `u8 r`: the brightness of the red LED in the pixel\n- `u8 g`: the brightness of the green LED in the pixel\n- `u8 b`: the brightness of the blue LED in the pixel\n\n### Set Pixel\n\nThis command will set an individual pixel.\n\nCommand ID: `S`\n\nPayload (in order):\n- `u16 index`: the index of the pixel. The top left is pixel 0, and then it reads like a book.\n- `u8 r`: the brightness of the red LED in the pixel\n- `u8 g`: the brightness of the green LED in the pixel\n- `u8 b`: the brightness of the blue LED in the pixel\n\n## Requirements\n\n- Install Java JRE or JDK from [Oracle's website](http://www.oracle.com/technetwork/java/javase/downloads/index.html).\n- `brew install leiningen` (or install it for your OS using [these instructions](http://leiningen.org/))\n- Imagesnap `brew install imagesnap` (or install it from [here](http://iharder.sourceforge.net/current/macosx/imagesnap/))\n\n## System Setup\n\nThe overall diagram of how the LED controller, LED panels, power supply, and Mac Mini all interact can be seen below:\n\n![](assets/fraq_overall.png)\n\nSince LED data is a serial stream, it originates by the Mac Mini's program sending data to the LED controller, which then sends it out to the 540 LEDs using SPI. The individual wires that need to be connected can be found below.\n\nFor the panel connections, the diagram shows a closeup of the screw terminals found on the backs of the panels. The panels should be positioned so that the screw terminals are in the lower-left of each panel. A legend for these connectors is below:\n\n```\nLine - Wire to another component.\nX - Internal panel connection; leave connected.\nN/C - No connection.\n```\n\n---\n\n### LED Controller\n\n![](assets/fraq_led.png)\n\n---\n\n### Panel 1 (Top)\n\n![](assets/fraq_panel1.png)\n\n---\n\n### Panel 2 (Bottom)\n\n![](assets/fraq_panel2.png)\n\n---\n\n### Power Supply Unit (PSU)\n\n![](assets/fraq_psu.png)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmashingboxes%2Ffraqture","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmashingboxes%2Ffraqture","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmashingboxes%2Ffraqture/lists"}