<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Nathan Bradshaw</title>
    <subtitle>Software, electronics, keyboards, and music. Build notes and experiments by Nathan Bradshaw.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://nathanbradshaw.dev/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://nathanbradshaw.dev"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2023-08-28T00:00:00+00:00</updated>
    <id>https://nathanbradshaw.dev/atom.xml</id>
    <entry xml:lang="en">
        <title>Arduino Band V1 </title>
        <published>2023-08-28T00:00:00+00:00</published>
        <updated>2023-08-28T00:00:00+00:00</updated>
        
        <author>
          <name>Nathan Bradshaw</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://nathanbradshaw.dev/posts/arduinoband-v1-2023-08-28/"/>
        <id>https://nathanbradshaw.dev/posts/arduinoband-v1-2023-08-28/</id>
        
        <content type="html" xml:base="https://nathanbradshaw.dev/posts/arduinoband-v1-2023-08-28/">&lt;p&gt;A few years ago, I built a rockband guitar  that lights up when you press down the keys (see 2020 post: The Plastic Guitar that Started it all). This project taught me a lot about designing a hardware project, but it wasn’t really scalable. Making one took countless hours and to make another would require me to source way too many wires, solder way too many LEDs and buy an arduino Leonardo, which at the time of writing this article would cause 25USD.&lt;/p&gt;
&lt;p&gt;Since making my first rockband Guitar that lights up, I’ve learned how to use KiCad, a software for creating PCBs, as well as learning how to make keyboards. The current keyboard that I am writing this on is a custom build called &lt;em&gt;The Seahorse&lt;/em&gt;. These new skills have brought me back to a long time goal of mine, built a PCB for the Wii Rockband guitar that supports a Sparkfun ProMicro or any other embedded device that is the same pin layout, such at the Nice!Nano.&lt;/p&gt;
  &lt;figure class=&quot;article-figure diagram&quot;&gt;&lt;a class=&quot;print-image diagram&quot; href=&quot;https://nathanbradshaw.dev/processed_images/arduino_band_schematic.4a44840199ead63e.webp&quot; aria-label=&quot;View full image: schematic&quot;&gt;&lt;img src=&quot;https://nathanbradshaw.dev/processed_images/arduino_band_schematic.ebdc50dafaa41c60.webp&quot; srcset=&quot;https://nathanbradshaw.dev/processed_images/arduino_band_schematic.ebdc50dafaa41c60.webp 640w, https://nathanbradshaw.dev/processed_images/arduino_band_schematic.f8dfd5546de6a526.webp 1280w&quot; sizes=&quot;(max-width: 600px) 90vw, 520px&quot; width=&quot;640&quot; height=&quot;452&quot; alt=&quot;schematic&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;a href=&quot;https://nathanbradshaw.dev/processed_images/arduino_band_schematic.4a44840199ead63e.webp&quot;&gt;schematic ↗&lt;/a&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;The first step of the processes was to go through my old designs and figure out how I had everything laid out. After which I decided to add a IO expander to help solve the low number of GPIO pin available. I chose the MCP23017 (I2C) IO expander for this project because it allowed me 16 extra GPIO pins for the cost of 2 (SCK and SCL).&lt;/p&gt;
&lt;p&gt;I am unsure if I like my choice for the battery management, but for Arduino Band V1 I chose to include battery selector pins for whether the device is to be powered by the typical AA battery pack built into the guitars or if the batter will be a Lithium-ion battery. The latter choice would only really work with the NiceNano and as of writing this I don’t know of a good way to program the NiceNano to work for this project.&lt;/p&gt;
  &lt;figure class=&quot;article-figure diagram&quot;&gt;&lt;a class=&quot;print-image diagram&quot; href=&quot;https://nathanbradshaw.dev/processed_images/pcb.ccde18d8ef536525.webp&quot; aria-label=&quot;View full image: pcb&quot;&gt;&lt;img src=&quot;https://nathanbradshaw.dev/processed_images/pcb.221225e7911b9e31.webp&quot; srcset=&quot;https://nathanbradshaw.dev/processed_images/pcb.221225e7911b9e31.webp 603w&quot; sizes=&quot;(max-width: 600px) 90vw, 520px&quot; width=&quot;603&quot; height=&quot;773&quot; alt=&quot;pcb&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;a href=&quot;https://nathanbradshaw.dev/processed_images/pcb.ccde18d8ef536525.webp&quot;&gt;pcb ↗&lt;/a&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;The PCB design is made to replicate as best as possible the PCBs currently present in the original guitar. The placing of the JST connectors are in the same spots as the original board, allowing for an easy drop-in replacement.&lt;/p&gt;
&lt;p&gt;This board is more of a test board, since as of the time of writing this. Nothing has been tested.&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>The Plastic Guitar that started it all</title>
        <published>2020-08-28T00:00:00+00:00</published>
        <updated>2020-08-28T00:00:00+00:00</updated>
        
        <author>
          <name>Nathan Bradshaw</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://nathanbradshaw.dev/posts/rockband-led-2020-08-28/"/>
        <id>https://nathanbradshaw.dev/posts/rockband-led-2020-08-28/</id>
        
        <content type="html" xml:base="https://nathanbradshaw.dev/posts/rockband-led-2020-08-28/">&lt;p&gt;The Christmas tree was surrounded by huge boxes, we knew for sure this year was going to be one for the books. We gathered around anxiously as the first box was unwrapped. The words on the box seemed to shine as we stared at them, ROCKBAND 2. It was ours! We finally got the thing any adolescence in 2008 wanted, Guitar Hero or one of its clones. The rest of Christmas break was spent banging on the plastic drum heads, smashing plastic keys and my personal favorite, screaming into the mic. It was a time I could never forget, running through set lists of songs, so that we could unlock more. Getting booed off the stage because medium was too hard for pre-teens.
Then the years passed, and slowly the plastic instruments got tucked quietly into a corner, where they sat and waited, yearning for the days of fret smashing.&lt;/p&gt;
&lt;h2 id=&quot;university&quot;&gt;University&lt;/h2&gt;
&lt;p&gt;When I first went to college, my heart began to yearn for the simple days of mashing keys and almost as if the universe was calling to me, I stumbled upon a Rockband guitar. I had a decision to make, do I send my Ramen money on a Rockband guitar or do I eat like a college king for a few days. The choice was obvious, and I gladly gave up the $2USD for the guitar.&lt;/p&gt;
&lt;p&gt;Many afternoons were spent gazing at the incoming notes as we struggled to keep up with the pace of expert mode. And then it all came crashing down.
Late 2019 and early 2020 became one for the history books, Covid shut everything down and friends became a thing of the past, having more time on my hands, I did what anyone else in the time did, I scrolled through memes of the finest caliper. While I sat on the hard black couch of the apartment in deep focus. My pupils widen as an image on the black slab crossed my eyes. There on the screen of my cell phone, was a beauty beyond any that I had hitherto seen. The soft glow of green, red, yellow, blue and orange lights were all too captivating, and the construction of the device was all too simple. The guitar hero controller was something beyond my wildest dreams. It’s buttons glowed as they were pressed and being a college student I knew that I needed LEDs in everything. A computer isn’t fast unless it has that glorious glow of RGB LEDs, so by the same logic, a game controller can’t be any good until it does the same. So the quest began, except I had 1 problem: my plastic guitars were Rockband Stratocaster guitars. It wasn’t going to be as simple as drilling a hole in the existing keys and placing an LED inside. I had to come up with a better plan.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;the-keys&quot;&gt;The keys&lt;/h2&gt;
&lt;p&gt;The first hurdle to overcome was the keys. The solid yellow/brown plastic didn’t let much light through, forcing me to begin to look for other solutions.&lt;/p&gt;
&lt;p&gt;There was only one problem: I didn’t know how to CAD.&lt;/p&gt;
&lt;p&gt;The side quest began with a lot of YouTube videos and mistakes. Once I figured out how to draw a line, we were off to the races!&lt;/p&gt;
  &lt;figure class=&quot;article-figure&quot;&gt;&lt;a class=&quot;print-image&quot; href=&quot;https://nathanbradshaw.dev/processed_images/keys.fbc8b6e41c39fac4.webp&quot; aria-label=&quot;View full image: Rockband key&quot;&gt;&lt;img src=&quot;https://nathanbradshaw.dev/processed_images/keys.d33f12499bbe7563.webp&quot; srcset=&quot;https://nathanbradshaw.dev/processed_images/keys.d33f12499bbe7563.webp 640w, https://nathanbradshaw.dev/processed_images/keys.0fb42323f06d4430.webp 1003w&quot; sizes=&quot;(max-width: 600px) 90vw, 520px&quot; width=&quot;640&quot; height=&quot;338&quot; alt=&quot;Rockband key&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;a href=&quot;https://nathanbradshaw.dev/processed_images/keys.fbc8b6e41c39fac4.webp&quot;&gt;Rockband key ↗&lt;/a&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Except I didn’t have a 3d printer, or even know how to use one, and there was also the issue of not having a precise measurement device, just an old wooden ruler. You might be thinking, “Just go buy the stuff you need”. But may I remind you of my expensive ramen taste? I mean, who pays more than 50 cents for a package of ramen? Well I was in luck, and that luck would have it that Uncle Sam was desperate to keep the capitalist system running that, he handed everyone a $600 check that they would inevitably pay off in inflation and rising costs of living. With my crisp government check, I bought A 3d printer and 300 bowls of ramen.&lt;/p&gt;
&lt;p&gt;With the 3d printer in hand, the journey could truly begin. I printed off the first key and to my surprise it didn’t fit. I made some small tweaks to the design, only to find that it too had some issues.  Furthermore, I continued to modify my design until it was “Good enough”&lt;/p&gt;
  &lt;figure class=&quot;article-figure&quot;&gt;&lt;a class=&quot;print-image&quot; href=&quot;https://nathanbradshaw.dev/processed_images/prints.40759a0009da3a4f.webp&quot; aria-label=&quot;View full image: printed keys&quot;&gt;&lt;img src=&quot;https://nathanbradshaw.dev/processed_images/prints.9ba06c096f1e2112.webp&quot; srcset=&quot;https://nathanbradshaw.dev/processed_images/prints.9ba06c096f1e2112.webp 640w, https://nathanbradshaw.dev/processed_images/prints.86f7162be136a820.webp 934w&quot; sizes=&quot;(max-width: 600px) 90vw, 520px&quot; width=&quot;640&quot; height=&quot;205&quot; alt=&quot;printed keys&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;a href=&quot;https://nathanbradshaw.dev/processed_images/prints.40759a0009da3a4f.webp&quot;&gt;printed keys ↗&lt;/a&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;Gen 1. Too small and the walls were too thin for the printer to print.&lt;/li&gt;
&lt;li&gt;Gen 2. The object was a perfect fit! Sadly there was no room for the button to slide up and down.&lt;/li&gt;
&lt;li&gt;Gen 3. The button had enough room on the sides to slide but the ends were too close to the middle.&lt;/li&gt;
&lt;li&gt;Gen 4. The middle piece was too small, it wouldn’t push the button.&lt;/li&gt;
&lt;li&gt;Gen 5. The tabs that came off of the center extrusion were too brittle.&lt;/li&gt;
&lt;li&gt;Gen 6. The clip was extended so that the button had room to travel up and down.&lt;/li&gt;
&lt;li&gt;Gen 7. The left wall was nonexistent.&lt;/li&gt;
&lt;li&gt;Gen 8. Fit well, but is too loose in the guitar.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;the-electronics&quot;&gt;The Electronics&lt;/h2&gt;
&lt;p&gt;Now that we had buttons that worked, it was time to start on the electronics.&lt;/p&gt;
&lt;p&gt;A poor design of the electronics&lt;/p&gt;
  &lt;figure class=&quot;article-figure diagram&quot;&gt;&lt;a class=&quot;print-image diagram&quot; href=&quot;https://nathanbradshaw.dev/processed_images/circuit.0210c1676bb9e5c6.webp&quot; aria-label=&quot;View full image: circuit diagram&quot;&gt;&lt;img src=&quot;https://nathanbradshaw.dev/processed_images/circuit.aa74cc93ff257974.webp&quot; srcset=&quot;https://nathanbradshaw.dev/processed_images/circuit.aa74cc93ff257974.webp 640w, https://nathanbradshaw.dev/processed_images/circuit.501c3de58ec8d621.webp 1117w&quot; sizes=&quot;(max-width: 600px) 90vw, 520px&quot; width=&quot;640&quot; height=&quot;547&quot; alt=&quot;circuit diagram&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;a href=&quot;https://nathanbradshaw.dev/processed_images/circuit.0210c1676bb9e5c6.webp&quot;&gt;circuit diagram ↗&lt;/a&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;The sad thing about studying Software Engineering is that it doesn’t teach you a whole lot about how to create schematics for Electrical projects. So I attempted to create a wiring plan that made sense to me. The device had to be made with a HID capable device. For those of you that aren’t great at remembering acronyms, HID stands for Human Interface Device, or in laymen terms a device that can be used as a keyboard, mouse or joystick. I chose the Arduino Leonardo for this job, had I known about the pro micro at this time I would have used it instead.&lt;/p&gt;
&lt;p&gt;The Leonardo didn’t have enough GPIO pins for all the keys I needed, and my skills at the time kept me from unlocking the IO expander chips or using a column row layout, so instead I wired both the lower keys on the guitar with the upper keys.&lt;/p&gt;
&lt;h2 id=&quot;leds&quot;&gt;LEDs&lt;/h2&gt;
&lt;p&gt;The LEDs were a particularly tricky part in the processes of this build. I chose the WS2812B LEDs because they were small, compact and were addressable, which were very important necessities for this project.
What I had not considered was how hard it was going to be to put them all together. Remember earlier when I had talked about not having any tools, well a soldering iron was also one of the many things that I lacked. Luckily, I was living with my parents at the time, and they had a soldering Iron. Unluckily for me, who had never had any experience soldering. A soldering iron that simply plugs into the wall is not going to create very good results.&lt;/p&gt;
&lt;p&gt;After 6 hours of laboring to solder a measly 10 LEDs, with 30 wire connections and 60 small solder joints. I plugged the wires in and hoped for the best. All I got was a smoke show. Upon closer examination, I discovered that the solder joints were not nearly as clean as I had hoped. So I had to start the processes all over again.&lt;/p&gt;
  &lt;figure class=&quot;article-figure&quot;&gt;&lt;a class=&quot;print-image&quot; href=&quot;https://nathanbradshaw.dev/processed_images/led_solder.e6f4bcbc686b8fa9.webp&quot; aria-label=&quot;View full image: Bad soldering of LEDs&quot;&gt;&lt;img src=&quot;https://nathanbradshaw.dev/processed_images/led_solder.e9606486b90b963b.webp&quot; srcset=&quot;https://nathanbradshaw.dev/processed_images/led_solder.e9606486b90b963b.webp 640w, https://nathanbradshaw.dev/processed_images/led_solder.23c1057946ed311a.webp 1280w&quot; sizes=&quot;(max-width: 600px) 90vw, 520px&quot; width=&quot;640&quot; height=&quot;293&quot; alt=&quot;Bad soldering of LEDs&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;a href=&quot;https://nathanbradshaw.dev/processed_images/led_solder.e6f4bcbc686b8fa9.webp&quot;&gt;Bad soldering of LEDs ↗&lt;/a&gt;&lt;/figcaption&gt;&lt;/figure&gt;
  &lt;figure class=&quot;article-figure&quot;&gt;&lt;a class=&quot;print-image&quot; href=&quot;https://nathanbradshaw.dev/processed_images/led_lights.398c8beec00f669b.webp&quot; aria-label=&quot;View full image: LED lights&quot;&gt;&lt;img src=&quot;https://nathanbradshaw.dev/processed_images/led_lights.79900c9a140191a1.webp&quot; srcset=&quot;https://nathanbradshaw.dev/processed_images/led_lights.79900c9a140191a1.webp 436w&quot; sizes=&quot;(max-width: 600px) 90vw, 520px&quot; width=&quot;436&quot; height=&quot;303&quot; alt=&quot;LED lights&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;a href=&quot;https://nathanbradshaw.dev/processed_images/led_lights.398c8beec00f669b.webp&quot;&gt;LED lights ↗&lt;/a&gt;&lt;/figcaption&gt;&lt;/figure&gt;
  &lt;figure class=&quot;article-figure&quot;&gt;&lt;a class=&quot;print-image&quot; href=&quot;https://nathanbradshaw.dev/processed_images/rats_nest.d4fbef06e14c29b6.webp&quot; aria-label=&quot;View full image: Lots of wires&quot;&gt;&lt;img src=&quot;https://nathanbradshaw.dev/processed_images/rats_nest.9622a626bb4329aa.webp&quot; srcset=&quot;https://nathanbradshaw.dev/processed_images/rats_nest.9622a626bb4329aa.webp 640w, https://nathanbradshaw.dev/processed_images/rats_nest.42e6385bb40595d1.webp 1280w&quot; sizes=&quot;(max-width: 600px) 90vw, 520px&quot; width=&quot;640&quot; height=&quot;293&quot; alt=&quot;Lots of wires&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;a href=&quot;https://nathanbradshaw.dev/processed_images/rats_nest.d4fbef06e14c29b6.webp&quot;&gt;Lots of wires ↗&lt;/a&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Next up was getting everything wired up. So I did the only logical thing, I put the wires in my pocket with the Arduino, walked around a little till they became a tangled mess and threw it down on the guitar, and sure enough it all worked!&lt;/p&gt;
&lt;p&gt;I finished it off with a good bit of hot glue and sure enough it all worked like a charm!&lt;/p&gt;
  &lt;figure class=&quot;article-figure&quot;&gt;&lt;a class=&quot;print-image&quot; href=&quot;https://nathanbradshaw.dev/processed_images/neat_wires.e22a8e08ed5660d9.webp&quot; aria-label=&quot;View full image: neat wires&quot;&gt;&lt;img src=&quot;https://nathanbradshaw.dev/processed_images/neat_wires.ad1293f3613521b4.webp&quot; srcset=&quot;https://nathanbradshaw.dev/processed_images/neat_wires.ad1293f3613521b4.webp 640w, https://nathanbradshaw.dev/processed_images/neat_wires.6bc54efcac43611b.webp 1280w&quot; sizes=&quot;(max-width: 600px) 90vw, 520px&quot; width=&quot;640&quot; height=&quot;293&quot; alt=&quot;neat wires&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;a href=&quot;https://nathanbradshaw.dev/processed_images/neat_wires.e22a8e08ed5660d9.webp&quot;&gt;neat wires ↗&lt;/a&gt;&lt;/figcaption&gt;&lt;/figure&gt;
  &lt;figure class=&quot;article-figure&quot;&gt;&lt;a class=&quot;print-image&quot; href=&quot;https://nathanbradshaw.dev/processed_images/led_head.20f4ebb23d06a655.webp&quot; aria-label=&quot;View full image: Leds on keys&quot;&gt;&lt;img src=&quot;https://nathanbradshaw.dev/processed_images/led_head.beea08ded582d790.webp&quot; srcset=&quot;https://nathanbradshaw.dev/processed_images/led_head.beea08ded582d790.webp 640w, https://nathanbradshaw.dev/processed_images/led_head.a5eb26e0504cc36a.webp 1280w&quot; sizes=&quot;(max-width: 600px) 90vw, 520px&quot; width=&quot;640&quot; height=&quot;293&quot; alt=&quot;Leds on keys&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;a href=&quot;https://nathanbradshaw.dev/processed_images/led_head.20f4ebb23d06a655.webp&quot;&gt;Leds on keys ↗&lt;/a&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h2 id=&quot;guitar-in-action&quot;&gt;Guitar in action&lt;/h2&gt;
&lt;iframe width=&quot;100%&quot; height=&quot;415&quot; loading=&quot;lazy&quot; src=&quot;https://www.youtube-nocookie.com/embed/4RXWNfZgXBg?si=QowQ0I2_axr2iGRm&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen&gt;&lt;/iframe&gt;</content>
        
    </entry>
</feed>
