{"id":20761019,"url":"https://github.com/tophercantrell/pixel-propplate","last_synced_at":"2026-02-12T20:31:27.708Z","repository":{"id":25661040,"uuid":"29096656","full_name":"topherCantrell/pixel-PropPlate","owner":"topherCantrell","description":"NeoPixel driver for the Propeller","archived":false,"fork":false,"pushed_at":"2018-10-26T18:54:14.000Z","size":2251,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-12T03:20:08.622Z","etag":null,"topics":["neopixels","propeller-spin"],"latest_commit_sha":null,"homepage":null,"language":"Propeller Spin","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/topherCantrell.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}},"created_at":"2015-01-11T15:50:53.000Z","updated_at":"2024-09-01T13:41:09.000Z","dependencies_parsed_at":"2022-08-24T06:40:18.009Z","dependency_job_id":null,"html_url":"https://github.com/topherCantrell/pixel-PropPlate","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/topherCantrell/pixel-PropPlate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/topherCantrell%2Fpixel-PropPlate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/topherCantrell%2Fpixel-PropPlate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/topherCantrell%2Fpixel-PropPlate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/topherCantrell%2Fpixel-PropPlate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/topherCantrell","download_url":"https://codeload.github.com/topherCantrell/pixel-PropPlate/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/topherCantrell%2Fpixel-PropPlate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29380604,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-12T19:05:20.189Z","status":"ssl_error","status_checked_at":"2026-02-12T19:01:44.216Z","response_time":55,"last_error":"SSL_read: 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":["neopixels","propeller-spin"],"created_at":"2024-11-17T10:17:10.420Z","updated_at":"2026-02-12T20:31:27.682Z","avatar_url":"https://github.com/topherCantrell.png","language":"Propeller Spin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# propNeoPixel\n\nThis is my NeoPixel driver for the Propeller.\n\nI used the Adafruit 8x8 NeoPixel plates:\u003cbr\u003e\nhttps://www.adafruit.com/products/1487\n\nHere is my plate connected to my propeller quick-start board:\u003cbr\u003e\n![](Art/Hardware.jpg)\n\nHere are the schematics from the \"NeoPixelTest.spin\" documentation:\u003cbr\u003e\n![](Art/Schematics.jpg)\n\n## Dot Matrix Mapping\n\nThe driver allows you to map up to four plates over a larger dot-matrix image. (You can modify\nthe code to support as many plates as you need).\n\nThe chain-of-plates forms a \"window\" or \"view\" over the larger image. Here are several example\nviews over a single image:\u003cbr\u003e\n![](Art/ExampleMap.jpg)\n\nYou tell the driver the view layout in the init function. Here are two example \"lines\" of plates:\u003cbr\u003e\n![](Art/Lines.jpg)\n\nThe first parameter to init is the output pin number to drive the plate (or chain of plates).\n\nThe next two parameters tell the driver how many rows and columns are on the plate. The adafruit plates are 8x8.\n\nThe fourth and fifth parameters are the first plate's (x,y) offset within view. In the \"lines\" example the first\nplate was always the upper left corner of the view window, but this need not be the case.\n\nThe last three pairs of parameters are used to define the layout of other plates in the chain. These take the\nform of (x,y) offsets from the plate before. For instance (1,0) means the next plate is to the right one plate.\nA value of (-1,-1) means the next plate is up a plate and left a plate. If there is no \"next plate\" then\npass (0,0).\n\nHere is an example of a square window made from 4 plates. There are many ways to physically chain the plates \ntogether:\u003cbr\u003e\n![](Art/Squares.jpg)\n\nThe second example is a complex example with a crossing wiring pattern. Note the first plate has (ix,iy) of (8,8)\nsince the first plate is at the bottom right of the window.\n\n## Multiple Chains\n\nThe \"MultiNeoPixelPlateAPI.spin\" module allows you to combine multiple plate drivers to form a single view. This\nprovides a faster refresh rate since there are two serial streams instead of one.\u003cbr\u003e\n![](Art/Multi.jpg)\n\n## Color Palette\n\nThe driver supports and optional \"color palette\" mode.\n\nNeo Pixels have 24 bit color: 1 byte for red, 1 for green, and 1 for blue.\n\nThe driver allows you to use a color palette with up up to 256 entries. Each entry is a long (4 byte) value specifying a pixel color. Only the lower 3 bytes are used.\n\nThe image map is then a grid of one-byte-per-pixel. The driver uses the byte value from the image buffer to find the actual 3-byte pixel value from the color palette. Thus you can only use 256 colors at a time, but those colors can be any 3-byte value.\n\nThis palette mode is optional. Your images may be defined with full 24-bit color.\n\n## Sequencer\n\nThe sequencer reads binary-sequence data to produce animated displays on the plate window. A python program reads\na text sequence description and produces the propeller data section for the propeller sequencer to parse.\n\nComments in the text file begin with \";\". Commands begin with \"#\". Most commands have a number of data-lines that follow.\n\n```\n#Palette start=0\n00_00_00_00\n00_FF_10_FF\n; \n; Fill the color palette beginning at [start] with as many colors as given\n\n#Chars chars=.ABCDE+X values=00,01,02,03,04,05,06,07\n; Define a character-to-pixel-value map for drawing images in ascii art\n\n#DrawBytes x=0 y=0\n........\n.AAAAAA.\n.A....A.\n.A.BB.A.\n.A.BB.A.\n.A....A.\n.AAAAAA.\n........\n;\n; Draw the window over the given image with window offset of (x,y)\n\n#DrawLast x=7 y=7\n;\n; Draw the window over the last image given with window offset of (x,y)\n\n#Delay ms=1000\n;\n; Pause for 1000 ms\n\n#Restart\n;\n; Restart the sequence at the start\n\n#Repeat count=4\n#Repeat count=2\n; Other commands in here\n#Next\n#Next\n;\n; You can nest \"repeat\" commands up to 4 levels deep. The \"next\" command takes you back\n; to the top of the repeat loop. The \"count\" tells how many times to repeat the loop.\n```\n\nHere is the first part of a generated propeller data section:\u003cbr\u003e\n![](Art/PropData.jpg)\n\n\n## The Parallax Object Exchange\n\nHere is the code on the Parallax Object Exchange:\u003cbr\u003e\n[http://obex.parallax.com/object/774](http://obex.parallax.com/object/774)\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftophercantrell%2Fpixel-propplate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftophercantrell%2Fpixel-propplate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftophercantrell%2Fpixel-propplate/lists"}