While the Arduino library does an excellent job of hiding some of C/C++’s warts, at the end of the day, it is still just C/C++. This fact causes a few non-intuitive issues for inexperienced programmers. When it looks like Arduino math is wrong, it is probably one of these reasons.
When people ask me for help with their programming, I check each of these Arduino math mistakes. If your code seems to be hitting a bug, check to make sure it is not how the compiler handles math.
Funny how a simple idea can spider out into multiple paths. Arduino EEPROM seemed like a straightforward concept. A few a years ago it was as easy as having either 512 or 1024 bytes of flash memory. The Arduino IDE offered an EEPROM library which let you read and write a single byte. Today, however, with many different processor architectures saving data to EEPROM varies. It is now possible to save any datatype to EEPROM but not on all boards and not all using the same method.
While programming an coin accepter sold by Adafruit on an AddOhms live stream, I discovered two “new” methods in the Arduino library. At least, these functions are new to me! A couple of years ago EEPROM.get() and EEPROM.put() appeared. Using these functions, you can store any datatype in EEPROM.
This post covers tidgets related to using Arduino EEPROM to store any value across multiple boards, or platforms. Specifically boards such as the Uno, Nano, Mega, and Zero are covered. Additionally Arduino-compatible boards from Espressif, PRJC, and Adafruit are covered as well.
One of the best ways to learn how to use a new piece of test equipment is to use it. Sounds easy, right? The problem is, sometimes when you are in the middle of troubleshooting your circuit, figuring out what the knobs on your scope do is an immense frustration. Use these 6 oscilloscope measurements, and just an Arduino Uno, to learn how to use a new or unfamiliar digital scope.
This tutorial is not a step-by-step guide on how to make each of these measurements on a particular scope. Instead, it is a general explanation on how to setup the Arduino and a screenshot to help identify if you set up your scope correctly. I reference the R&S RTM3004. However, practically any two (or more) digital channel oscilloscope should work.
Between each measurement, I highly recommend using your scope’s default setup (or autoscale) before proceeding to the next one!
For an AddOhms series, I created a DIY Arduino I am calling the “Pyramiduino.” It is an ATmega328p based board in the shape of a triangle. Other than being cute, the shape does not offer any other benefit. The design features a 3.3 volt LDO Regulator, which is also the subject of this post.
I forgot a fundamental aspect of design: read the freaking datasheet. The board’s LDO regulator was not turning on. Adding a passive scope probe to the circuit suddenly fixed the problem. The regulator turned on. When touching the enable pin, it measured about 1.25 volts. While I am sure Rohde & Schwarz would like me to ship scope probe with each board, that was not an option. With the impractical fix in place, I got to thinking about that voltage level. I remembered that the datasheet mentioned about 1.2 volts was needed for the “HIGH” threshold. Which meant, 1.25 volts applied to the pin enabled an active low input. Not only that, I remember the datasheet clearly said it had a pull-down resistor built-in. What was going on?
Continue Reading »
Pretty often I am asked about how I create the AddOhms animations. Currently, I’m working on the final part of the DIY Arduino Series. In the first part, I showed the elements of an Arduino schematic. The second part showed an overview of the PCB design. Finally, I will take the finished board and explain how to turn it on the for the first time. Lucky for me, there was a “mistake” on the board. This error gives some context for the episode.
I needed to explain how the Arduino Uno’s (and Mega’s) “auto-reset” circuit works. I did a live stream showing how I created the animation sequence for this explanation. Well, I started to explain. After almost three hours of streaming, I was only about half-way through the one-minute explanation.
Watch on YouTube
While long, I think the stream helps to illustrate the kind of work I put into my videos. Speaking of which, I need to get back to finishing this one.
The Bay Area’s Maker Faire 2018 encompasses an impressive scope of activities. Pedal-powered live music, fire-breathing machines, kids building stuff, corn dogs, fresh honey, LEDs, soldering, roaming robots, and so much more. The last couple of days I made a few posts on the things I saw at Maker Faire. In this post, I’ll summarize many things that don’t fit together, but I wanted to mention that I enjoyed seeing.
Click here to check out my other Maker Faire 2018 posts. They include first-looks at the two new exciting Arduino boards, five companies I didn’t expect to see at the show, and a photo gallery of my favorite stuff.
With the Bay Area Maker Faire over, I’m wrapping up my coverage with a photo gallery of my favorites. Some of these have been covered in my other Maker Faire 2018 posts. So check those out for details. FYI. Some of the products in this gallery will be covered in future posts.
Maker Faire, like any festival, is a combination of passion products, startups, and larger companies generating awareness. As I walked around, I noticed many logos and brands. An obvious one to see is Make Magazine. Another I saw that made sense is Digi-Key’s maker.io. They had a strong showing, along with the Arduino booth. But that one is expected since so many projects, not just electronics, have an Arduino in them. That said, there were five brands that I did not expect to see at Maker Faire (and most had something interesting to show.)
(Please note, no mentions came from paid placements. I am genuinely interested in their presence at the show.)
Arduino announced several new products at the 2018 Bay Area Maker Faire. One of those products is the Uno WiFi Rev 2. (Check out this post for an introduction to the MKR Vidor 4000, an FPGA-based board. You can read their official announcement here. This new Uno board represents a significant upgrade for the 8-bit family of Arduino boards. However, I do have a few reservations.
Arduino Uno WiFi Rev 2
Starting off, I am not happy with the name. It is too long. For that reason, I am going to keep using the full name in this post to demonstrate why I don’t like it. Another reason I’m grumpy it that new microprocessor makes it incompatible with 328p code. That said,sketches (and libraries) using only the Arduino library will (likely) work fine. Anything that uses registers, like direct port manipulation, will have issues. Just like moving to any other architecture supported by the IDE. However, because it has the name “Uno,” many users will be tripped up by incompatibilities.
Keeping the name “Uno” was only there for marketing reasons. The form factor is the traditional Arduino Uno style. Which begs the question, can we retire that massive USB connector yet?
Arduino announced several new products at the 2018 Bay Area Maker Faire. One of those products is the MKR Vidor 4000, an FPGA-based board. You can read their official announcement here. (Over here is a write-up on the new Uno WiFi Rev 2.) The goal of the MKR Vidor is to make FPGA accessible to makers and innovators. It represents a new shift in hardware focus for the Arduino team.
An FPGA is a Field Programmable Gate Array. In other words, it is reconfigurable hardware. Unlike a microcontroller, an FPGA is not running software. Instead, its gate array changes configurations for a specific task.
The example I like to think about is a rotary encoder. You might find one on the spindle of a motor. As the motor spins, an IR sensor detects slits in the encoder to track speed and direction. In a microcontroller based system, you might use an interrupt to monitor the IR sensor. Even though interrupts can respond quickly, there is still a chance of missing a pulse. Plus, the rest of the microcontroller has to wait while the interrupt is handled. In an FPGA, however, you would build a hardware counter with the pulse driving the counter’s clock input. This counting happens independently of whatever else the FPGA is doing.