Most Arduino SPI tutorials show this simple but poor SPI bus design:
A much better SPI bus design can prevent conflicts. 3 simple improvements are needed:
Click "Read more" for details on these 3 steps.
I’ve been meaning to document my work on this project for about year now. TBA 2014 reminded me it is time to actually do it! So here it is:
For the past year and a half I’ve been working with a dance company called bobbevy. I’ve been creating graphics that go along with the dance performance called “This is how we disappear”. Here’s a review at Portland Monthly.
More behind the scenes information after the break!
I am happy to report Windows 10 Preview build 9860 fixes the long-standing USB serial bugs, which impact nearly all Arduino compatible boards.
Windows 10 is finally going to support all class-compliant USB serial (eg, CDC-ACM) as well as Linux and Mac OS-X. Very exciting.
The Church of Robotron is coming to Portland, OR. We will be open the Last Wednesday of September (the 24th) and the First Thursday of October (the 2nd) starting at 7pm both nights at the Diode Gallery (514 NW Couch St) which is across the street from Ground Kontrol. We'll have multiple versions of Robotron 2084 available to train with and we will be triggering physical events in response to game events. One example: lasers when lasers are shot in game. For info about how this is accomplished, check out this older post.
Right now, we have an installation in the window at the gallery which is running 24/7 until October 3rd. It features a fully playable version of Robtron 2084, sermons, and a leaderboard that has pictures of all who attempt to become the mutant savior. Here's a video of it:
The window sensor is a capacitive sensor that was made by Philip Odom. He used the same techniques he taught during the Capacitive Sensing Workshop. Jason Plumb got audio working by using a transducer that turns the window into a speaker. The sign was built by Debbie Wager. Finally, this was all integrated together by the rest of the church.
Come check out the window anytime! Come to our open nights (9/24 & 10/2), check out this post for an idea of what to expect!
Earlier this summer, I worked on a tiny piece of the Embrace sculpture, for Burning Man 2014.
Inside were 2 hearts, one made here in Portland by Lostmachine Andy & other burners at Flat Rat Studios. I made electronics to gradually fade 4 incandescent light bulbs in heart beating patterns.
Click "Read more" for technical details and many more wonderful photos (taken by Sarah Taylor)....
Update: a live demo page is now available. :)
Recently I've been working on an optimized ILI9341 display library, to take advantage of Teensy 3.1's more capable SPI hardware. Here's a quick video demo, so you can see how much of a difference it makes.
In the transition from 8 to 32 bit microcontrollers, on-chip SPI ports usually gain more sophisticated features. Special programming is needed to fully levergage these more powerful features. Merely recompiling code designed for simple SPI hardware on 8 bit hardware rarely acheives the best performance. As you can see in the video, optimizing for these features makes a pretty dramatic improvement.
Click "Read more" for the all the technical details...
For the last several weeks, I've been working on SPI transactions for Arduino's SPI library, to solve conflicts that sometimes occur between multiple SPI devices when using SPI from interrupts and/or different SPI settings.
To explain, a picture is worth 1000 words. In this screenshot, loop() repetitively sends 2 bytes, where green is its chip select and red is the SPI clock. Blue is the interrupt signal (rising edge) from a wireless module. In this test, the interrupt happens at just the worst moment, during the first byte while loop() is using the SPI bus!
Click "Read mode" for lots more detail.....
Recently I've been working to improve the Arduino SPI library, to better support multiple SPI devices with different settings, and SPI devices requiring interrupts.
Today I discovered a new problem while testing the HopeRF RFM69 wireless module.
Click "Read more" for details and the workaround I found....