{"id":17855599,"url":"https://github.com/nebrius/nodesummit2016","last_synced_at":"2026-02-27T15:36:13.142Z","repository":{"id":75506312,"uuid":"64174849","full_name":"nebrius/nodesummit2016","owner":"nebrius","description":"Hardware Day Zero information","archived":false,"fork":false,"pushed_at":"2016-07-26T20:55:16.000Z","size":12,"stargazers_count":8,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-01T16:18:29.167Z","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":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nebrius.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2016-07-25T23:36:35.000Z","updated_at":"2016-07-27T02:25:10.000Z","dependencies_parsed_at":"2023-03-11T19:56:06.928Z","dependency_job_id":null,"html_url":"https://github.com/nebrius/nodesummit2016","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nebrius/nodesummit2016","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nebrius%2Fnodesummit2016","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nebrius%2Fnodesummit2016/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nebrius%2Fnodesummit2016/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nebrius%2Fnodesummit2016/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nebrius","download_url":"https://codeload.github.com/nebrius/nodesummit2016/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nebrius%2Fnodesummit2016/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276169443,"owners_count":25596952,"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","status":"online","status_checked_at":"2025-09-20T02:00:10.207Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-10-28T02:23:45.117Z","updated_at":"2025-09-20T22:32:53.290Z","avatar_url":"https://github.com/nebrius.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# nodesummit2016\n\nHardware Day Zero information. Today we will walk through getting everyone started, and then you will be doing one of two builds!\n\n# Getting Started\n\n## Connecting the particle\n\n1. Go to: [Particle build site](https://build.particle.io/) and create and account.  Keep this page open once an account is created as we will be using it to do all of our development\n2. Go to the [Particle.io docs](https://docs.particle.io/guide/getting-started/intro/photon/) and click on **SETUP MY PHOTON** and follow step 1\n3. Navigate to [Connecting over USB](https://docs.particle.io/guide/getting-started/connect/photon/) and follow the instructions for your operating system.\n4. Plug your Photon into your computer and make sure it is blinking blue. If it is node, hold down the \"mode\" button for 5 seconds until it blinks blue.\n5. Run the command `particle setup`. A series of questions will pop up:\n    - **Would you like to continue with this one?** Yes\n    - **Found \"Photon-****\". Would you like to perform setup on this one now?** Yes\n    - **Would you like to manually enter your Wi-Fi network configuration?** No\n    - **Please select the network to which your Photon should connect:** //pick your network\n    - **Please enter your network password:** //type the password\n    - **Would you like to continue with the information shown above?**  Yes\n\nOnce connected, you should see a color change on the photon from flashing blue to breathing cyan.\n\n### Hello World\n\nNext, let's get the DotStar LED strips to light up.\n\n1. Set up the circuit as such:\n![Photon Connections](https://theoreticalideations.com/static/fritzing_basic.png)\n2. Go back to the [Particle build page](https://build.particle.io/build/new)\n3. You should see your Photon listed under the \"Devices\" section\n4. Go to the \"Libraries\" section and search for **dotstar** under \"Community Libraries\"\n5. Select \"Use This Example\"\n6. Modify line 47 so that it says:\n\n```c\nAdafruit_DotStar strip = Adafruit_DotStar(NUMPIXELS);\n```\n\n7. On the upper left hand corner, click on flash\n8. You're pixels should now be flashing!\n\n# Builds\n\nChoose one of the two builds below, or do both if you're ambitious!\n\nTo make calls to the Particle API, first install the SDK:\n\n```sh\nnpm install particle-api-js@5.3.0\n```\n\nThen call it with:\n\n```\nconst DEVICE_ID = 'Your Device ID';\nconst ACCESS_TOKEN = 'Your Access Token';\n\nconst Particle = require('particle-api-js');\nconst particle = new Particle();\n\nvar fnPr = particle.callFunction({\n  deviceId: DEVICE_ID,\n  name: 'set_color',\n  argument: '00255000255',\n  auth: ACCESS_TOKEN\n}).then(\n  (data) =\u003e {\n    console.log('Function called succesfully:', data);\n  },\n  (err) =\u003e {\n    console.log('An error occurred:', err);\n  }\n);\n```\n\n## Game Scoreboard\n\nFor this build, we will be creating a visual scoreboard. The scoreboard will keep track of points in two player games in the form of a bar graph.\n\nTo start, load your photon with the [scoreboard firmware](firmware/scoreboard.c) by copying the code into your Particle Build window (overwriting the Hello World sample), and flashing it to your Photon.\n\nEach player will be represented by a different color and assigned to one side of the DotStar Strip. As players gain points, another dot will light up, starting from their side of the strip and moving toward the center. The first player to get to the center wins!\n\nThis basic scorekeeping can be used for a variety of games implemented in the browser. The first game you will implement is Tic-Tac-Toe to keep things simple. When a player wins, the browser will send an AJAX request to a Node.js server.\n\nThis Node.js server will use the [Particle Javascript SDK](https://docs.particle.io/reference/javascript/) to call a function named `set_color`. This method takes a specially formatted string of the form `LLRRRGGGBBB`, where `LL` is the number of the LED you want to light up, `RRR` is the red color channel, `GGG` is the green color channel, and `BBB` is the blue color channel. All of these numbers are in decimal.\n\n**Stretch goals**\n\n- Add support for multiple games that can be switched between using a button wired up to the Photon. The button can be wired up as:\n![Button Wiring](https://theoreticalideations.com/static/fritzing_button.png)\n- Modify the firmware to add a new Particle API method called `set_flash` that will flash the lights at a set rate.\n\n## Animation Control\n\nFor this build, we will be created an animated light stick that can be controlled remotely.\n\nTo start, load your photon with the [animation firmware](firmware/animation.c) by copying the code into your Particle Build window (overwriting the Hello World sample), and flashing it to your Photon.\n\nThis firmware comes preloaded with two animations: \"flash\" and \"pulse\". These can be switched between by calling an Particle API endpoint.\n\nFor this build, we will create a Node.js app that switches between animations at a preset interval.\n\nThis Node.js app will use the [Particle Javascript SDK](https://docs.particle.io/reference/javascript/) to call a function named `preset`. This method takes a single number that corresponds to the preset to use. `1` is the \"fade\" preset and `2` is the \"pulse\" preset. All of these numbers are in decimal.\n\n**Stretch Goals*\n\n- In the firmware there is a method called `set_value` that allows you to control various aspects of the animations. This method takes two numbers, the first is which value to set, and the second is what to set the value to, like a key-value pair in a JavaScript object. See the constants under `Settable Values` in the firmware for details. Expose this method to the Particle cloude so it can be called remotely.\n- Add your own animation! Take a look at the \"fade\" animation for an example\n- Add a button to switch between animations. Wire up the button as such:\n![Button Wiring](https://theoreticalideations.com/static/fritzing_button.png)\n- Create a web frontend to control the animation\n\n## License\n\nThe MIT License (MIT)\n\nCopyright (c) 2016 Bryan Hughes \u003cbryan@nebri.us\u003e, Alex Glow \u003calex@hackster.io\u003e,\nNadine Hachouche \u003cnadine@polybit.com\u003e\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnebrius%2Fnodesummit2016","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnebrius%2Fnodesummit2016","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnebrius%2Fnodesummit2016/lists"}