{"id":17272597,"url":"https://github.com/rubyist/pingduino","last_synced_at":"2025-10-25T21:17:36.147Z","repository":{"id":12955536,"uuid":"15633783","full_name":"rubyist/pingduino","owner":"rubyist","description":"An Arduino based ping pong game score keeper","archived":false,"fork":false,"pushed_at":"2014-03-07T14:34:08.000Z","size":2012,"stargazers_count":8,"open_issues_count":9,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-27T21:52:07.214Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rubyist.png","metadata":{"files":{"readme":"README.md","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}},"created_at":"2014-01-04T14:49:13.000Z","updated_at":"2022-04-14T13:15:10.000Z","dependencies_parsed_at":"2022-09-19T01:41:34.755Z","dependency_job_id":null,"html_url":"https://github.com/rubyist/pingduino","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/rubyist%2Fpingduino","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubyist%2Fpingduino/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubyist%2Fpingduino/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubyist%2Fpingduino/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rubyist","download_url":"https://codeload.github.com/rubyist/pingduino/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248844036,"owners_count":21170505,"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":[],"created_at":"2024-10-15T08:49:00.612Z","updated_at":"2025-10-25T21:17:31.111Z","avatar_url":"https://github.com/rubyist.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pingduino\n\nPingduino an Arduino based score keeper for games of ping pong. This repository\ncontains everything you need to build your own. Except the hardware, of course!\n\n## Features\n\nPingduino is set up such that there are two scoring buttons and a display. I've\nmounted the buttons underneath my ping pong table, one on each side. When a player\nscores, they press their button.\n\nThe display is built to show each score and an indicator showing whose who is\ncurrently serving. The serve indicator updates automatically as scores are input.\n\nThe program code contains game winning logic, meaning it knows the rules of\nping pong and will indicate the winner when it detects the game has been won.\n\nUpon detecting a win, Pingduino will play a victory song and flash the serve\nindicator of the game winner.\n\nIf Pingduino detects no activity for 20 minutes it will automatically turn off\nthe display lights and the scoring button lights. Pressing any button will wake\nthe display and Pingduino will pick up where you left off.\n\n## Usage Instructions\n\nOnce you've built and installed Pingduino it's time to play! Simply start playing\nping pong. Pingduino lets you know which player should serve. If you score, press\nyour button. Eventually somebody will win!\n\nOnce the game has been won, the player who will serve the next game will reset\nthe system by doing a long press (press and hold for a second or two) on their\nbutton.\n\n## Building Your Own\n\nBuilding your own Pingduino should be easy. It's my first Arduino project and\nI'm a pretty novice hardware hacker. This repository contains the program code\nto load onto the Arduino as well as schematics, a parts list, and a PCB layout\nshould you choose to go beyond the breadboard. Once completed I'll post a link\nto pictures of my build process.\n\n### Display\n\nI was initially going to use some giant ~8\" 7-segment LEDs for the score display,\nhowever the two that I found that were big enough were too expensive and not well\nbuilt or out of stock. I decided to build my own large 7-segment displays out of\nping pong balls and individual LEDs. Once assembled, these behave pretty much like\nregular 7-segment displays and I'm driving them with 4 shift registers chained\ntogether.\n\nI've kept the display logic code fairly encapsulated so that you can be free to\nimplement whatever kind of display you'd like. My intitial prototypes were built\nusing an LCD display.\n\n### Scoring Buttons\n\nThere are scoring buttons mounted under each side of the table. I used some\n[big dome push buttons](https://www.sparkfun.com/products/11275) from Sparkfun.\nThese are pretty big, you could certainly get away with much smaller buttons,\nbut I ordered them so I rolled with it.\n\nTo connect the buttons to the main module I used some 1/8\" audio jacks and cables.\nThese are readily available, cheap, and perfectly support the button signal and\na line to light the LED in the button.\n\nTo mount the buttons under the table I designed and printed some simple boxes.\nYou can find the openscad and stl files in the models directory. I printed these\non a Makerbot Replicator 2. It's just a box that goes under a table so you can\nget away with printing at a lower resolution (0.3mm), but be aware that the hole\nfor the audio jack will probably have to be drilled and smoothed out some before\nit fits nicely.\n\n## Contributing\n\nGot an idea for improving Pingduino? Found a bug? I'd love to know about it!\nSimply file an issue or open a pull request here on GitHub.\n\nIf you build and use a Pingduino I'd love to know about it, especially if you\ncome up with a different kind of display.\n\n## License\n\nEverything in this repo is released under the MIT license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frubyist%2Fpingduino","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frubyist%2Fpingduino","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frubyist%2Fpingduino/lists"}