avatar

ShawnHymel

Member Since: August 12, 2013

Country: United States

Profile

Role

Engineering Superhero

Programming Languages

C, C++, CUDA, LabVIEW, MATLAB

Universities

  • Virginia Tech (2009-2011)
  • Rose-Hulman (2002-2006)

Expertise

Embedded systems, board layout, firmware, and mad soldering skillz.

Interests

Electronics and gadgets and stuff. Nerd stuff. Outside of that, swing dancing whenever I can.

Websites

shawnhymel.com

Let's continue digging deeper into Arduino to see what's really going on with registers.

Continue reading

Let's continue with the crystal anniversary theme by looking at liquid crystals!

Continue reading

We reached out to some longtime customers and fans of SparkFun to see what they were working on 10-15 years ago.

Continue reading

In order to use more advanced features or optimize our code for space and speed, we need to understand how to work with registers directly in microcontrollers.

Continue reading

Let's recap a fun DIY build from last month and examine how those infamous Imperial hover bikes were made for "Return of the Jedi."

Continue reading

We've compiled a list of all the Arduino-compatible boards that SparkFun sells. Choose wisely.

Continue reading

Let's take the SparkFun Inventor's Kit to the next level with some more projects!

Continue reading

With all the information needed to construct a combat bot, let's actually build one!

Continue reading

It's the end of summer, so let's see what people made before school started!

Continue reading

We bring back Jamie to give us some design tips when creating a 3D-printed plastic ant bot.

Continue reading

We get a combat bot veteran to talk about the different weapon types for fighting robots.

Continue reading

We can use digital magnetic field detectors as a compass to give our robot an absolute heading.

Continue reading

Let's gaze upward and look at how some of those nifty satellites can give us position data.

Continue reading

It's Monday, and that means it's time for Adventures in Science! This week, we dive into the mysterious world of rotary encoders.

Continue reading

Let's take a look at how LIDAR works and how we can use it in robots.

Continue reading

Let's look back at June and see some of the cool things people made.

Continue reading

Let's compile some Getting Started lessons for the micro:bit.

Continue reading

Time for the ever-popular loops discussion! We look at the three basic loops you can use in Arduino.

Continue reading

Let's take a look at three current and upcoming technologies that try to expand internet coverage to places where WiFi can't reach.

Continue reading

Building on our last Arduino programming episode, we look at creating compound conditional statements using logic operators.

Continue reading

I'll show you how to use Yahoo's free Weather API.

Continue reading

We're back to exploring programming basics, and this week: if/else statements!

Continue reading

Five of my favorite slick DIY projects that somehow relate to IoT

Continue reading

Someone has been stealing my sandwiches. We'll use the two-way radio communication on the micro:bit to catch the thief.

Continue reading

For Part 3 of the "Getting started with micro:bit" series, we read temperature from a built-in sensor and rotate a servo.

Continue reading

For part 2 of Getting Started with micro:bit, we create a virtual Magic 8 Ball.

Continue reading

The BBC micro:bit is being released in the United States! I'll show you how to get started with it using Microsoft's MakeCode block editor.

Continue reading

The tech news world has been buzzing with the recent congressional vote to overturn FCC privacy rules that were passed last year. We look at how ISPs can access and use data from your IoT devices.

Continue reading

I create a Yagi antenna out of Popsicle sticks and paperclips and use it to measure connection strength (RSSI) to WiFi access points.

Continue reading

How to use the various math operators and compound assignment operators in C/C++.

Continue reading

We present another set of concepts in the computer science series as they relate to Arduino.

Continue reading

This week, we look at what constitutes syntax in a programming language and how to employ it when writing code in Arduino.

Continue reading

We examine the computer science concept of how a single-threaded, sequential program flows in Arduino.

Continue reading

Increase the range on your 2.4GHz IoT devices with these simple antenna hacks.

Continue reading

A set of calipers can be an incredibly useful tool for precisely measuring the distance between objects.

Continue reading

Being able to program an ATtiny directly from Arduino can be a powerful tool to create low-cost embedded prototypes.

Continue reading

Staring at the multitude of buttons, switches and knobs on the face of an oscilloscope can be daunting. For this "Adventures in Science," we show you how to take basic measurements with an oscilloscope.

Continue reading

Looking to upgrade your workshop or mad science lab with more power? Here's how to get started with benchtop power supplies.

Continue reading

While many of us fancy a new "Home of Tomorrow," the real growth in IoT is occurring in places most of us don't see.

Continue reading

Build a power switch for the Amazon Echo that can be activated from a voice command.

Continue reading

Just getting into electronics or want a refresher on digital multimeter basics? We've got you covered.

Continue reading

Got an internet-connected device as a gift? Let's have a quick chat about how to prevent another Mirai botnet attack.

Continue reading

Some of my favorite builds, hacks and projects from the past year

Continue reading

Importing custom artwork into a PCB CAD program is a fun way to personalize your board.

Continue reading

New!

AT42QT101X Capacitive Touch Breakout Hookup Guide

January 25, 2018

Learn how to use the simple SparkFun AT42QT1010 and AT42QT1011 capacitive touch breakout boards.

Clap On Lamp

November 28, 2017

Modify a simple desk lamp to respond to a double clap (or other sharp noise) using parts from the SparkFun Inventor's Kit v4.0.

Light-Seeking Robot

November 28, 2017

We use parts from the SparkFun Inventor's Kit v4.0 to create a light-seeking robot that mimics the behavior of single-celled organisms.

Endless Runner Game

November 28, 2017

We make a simple side-scrolling endless runner game using parts from the SparkFun Inventor's Kit v4.0.

Wireless Motor Driver Shield Hookup Guide

August 17, 2017

Get started with the SparkFun Wireless Motor Driver Shield!

LIDAR-Lite v3 Hookup Guide

July 3, 2017

A tutorial for connecting the Garmin LIDAR-Lite v3 to an Arduino to measure distance.

ZX Distance and Gesture Sensor SMD Hookup Guide

June 1, 2017

How to connect and use the SparkFun ZX Distance and Gesture Sensor with an Arduino.

micro:bit Breakout Board Hookup Guide

May 11, 2017

How to get started with the micro:bit breakout board.

Hack Your Roshamglo Badge

March 12, 2017

Learn how to customize and program your Roshamglo badge.

Roshamglo Project: TV-B-Gone

March 12, 2017

Turn your Roshamglo board into a (nearly) universal TV power button.

How to Install an ATtiny Bootloader With Virtual USB

February 14, 2017

With this, you will be able to upload Arduino sketches directly to the ATtiny84 over USB without needing to use a programming device (such as another Arduino or FTDI chip).

Importing Custom Images into Eagle

December 5, 2016

How to create custom graphics and import them into Eagle for silk, copper, etc.

Internet of Things Experiment Guide

November 23, 2016

The SparkFun ESP8266 Thing Dev Board is a powerful development platform that lets you connect your hardware projects to the Internet. In this guide, we show you how to combine some simple components to remotely log temperature data, send yourself texts and control lights from afar.

Vox Imperium: Stormtrooper Voice Changer

October 25, 2016

Add some flair to your Imperial uniform by changing your voice using a Teensy 3.2 and Prop Shield.

Experiment Guide for the Johnny-Five Inventor's Kit

June 28, 2016

Use the Tessel 2 and the Johnny Five Inventors kit to explore the world of JavaScript enabled hardware through 14 awesome experiments!

ASCII

June 13, 2016

A brief history of how ASCII came to be, how it's useful to computers, and some helpful tables to convert numbers to characters.

Sparcade: Edison as a Web Server for Browser Games

May 19, 2016

Turn the Intel® Edison into an access point that serves a simple browser-based game. High scores from the game are displayed on a character LCD.

Measuring Internal Resistance of Batteries

May 5, 2016

Classroom STEM activity that has students build a battery from a lemon, measure the open and closed circuit voltages, and determine the battery's internal resistance.

What is a Battery?

May 3, 2016

An overview of the inner workings of a battery and how it was invented.

SIK Keyboard Instrument

April 15, 2016

We can use the parts and concepts in the SparkFun Invetor's Kit to make a primitive keyboard instrument.

SparkFun LED Array (8x7) Hookup Guide

March 10, 2016

Getting started with the Charlieplexed 8x7 LED array.

BadgerHack: Gaming Add-On Kit

February 16, 2016

Make a Breakout clone with the BadgerHack Gaming Add-On Kit.

Using an LCD on the Edison

February 8, 2016

How to connect an LCD controlled by an ILI9341 driver to the Intel® Edison.

Interactive Smart Mirror

February 8, 2016

Build a smart mirror that displays weather data using the Intel® Edison.

SparkFun Inventor's Kit for Edison Experiment Guide

December 17, 2015

Learn how to harness the power of the Intel® Edison using JavaScript to post data to the cloud, control electronics from smartphones, and host web pages that interact with circuits.

BadgerHack

September 23, 2015

This tutorial shows users how to solder their SparkFun interactive badges as well as put them to use in other projects.

SparkFun Blocks for Intel® Edison - 9 Degrees of Freedom Block

August 19, 2015

A quick overview of the features of the 9 Degrees of Freedom Block.

SparkFun Blocks for Intel® Edison - Pi Block

July 28, 2015

Tutorial on setting up and using the Pi Block for Intel Edison.

ZX Distance and Gesture Sensor Hookup Guide

July 9, 2015

How to connect and use the SparkFun ZX Distance and Gesture Sensor with an Arduino.

Large Digit Driver Hookup Guide

June 25, 2015

Getting started guide for the Large Digit display driver board. This tutorial explains how to solder the module (backpack) onto the back of the large 7-segment LED display and run example code from an Arduino.

Electric Imp Breakout Hookup Guide

June 25, 2015

An electric imp HUG! Provides an overview of the imp card and breakout. Both hardware and firmware subjects are covered.

Assembly Guide for RedBot with Shadow Chassis

May 28, 2015

Assembly Guide for the RedBot Kit. This tutorial includes extra parts to follow to go along with the RedBot Inventor's Kit tutorial.

Experiment Guide for RedBot with Shadow Chassis

May 28, 2015

This Experiment Guide offers nine experiments to get you started with the SparkFun RedBot. This guide is designed for those who are familiar with our SparkFun Inventor's Kit and want to take their robotics knowledge to the next level.

Sound Page Guide

May 22, 2015

How to use the Lilypad MP3 Player and some Bare Conductive Paint to make a fandom silhouette sound trigger page.

How to Solder - Castellated Mounting Holes

May 12, 2015

Tutorial showing how to solder castellated holes (or castellations). This might come in handy if you need to solder a module or PCB to another PCB. These castellations are becoming popular with integrated WiFi and Bluetooth modules.

Loading Debian (Ubilinux) on the Edison

December 5, 2014

How to load a Debian distribution (specifically Ubilinux) onto the Edison.

mbed Starter Kit Experiment Guide

November 27, 2014

This Experiment Guide will get you started with the wonderful world of mbed microcontrollers. Need to find that next step after mastering the Arduino? This a great place to take those skills to the next level.

APDS-9960 RGB and Gesture Sensor Hookup Guide

November 6, 2014

Getting started guide for the Avago APDS-9960 color, proximity, and gesture sensor.

Getting Started with the BrickPi

February 20, 2014

How to connect Lego Mindstorms to the Raspberry Pi using the BrickPi.

USB Type A Female Breakout Hookup Guide

February 13, 2014

An above-and-beyond example using the USB Type A Female Breakout board.

INA169 Breakout Board Hookup Guide

November 20, 2013

How to interface with the INA169 Breakout Board to measure current.

Raspberry Pi Twitter Monitor

November 19, 2013

How to use a Raspberry Pi to monitor Twitter for hashtags and blink an LED.
  • Thanks!

    Arduino using the timers for certain functions is what I meant, so I apologize if that wasn’t clear.

    RTC chips (or RTCC) are definitely great for saving power if you can set up an external interrupt for only when you need it. The other thing I’ve done is set up a counter in the microcontroller (RAM or EEPROM) and have it count on each interrupt. Whenever that value reaches a certain value, then call your real function. It’s not as efficient or accurate as a separate RTC, but it does save you some hardware.

  • Thank you! I am hoping to help the people who want to move from the hobby level with Arduino to more product-level development. I’ve heard from several people who have worked with early startups; they always say “get rid of the Arduino and program the microcontroller directly.”

    I’ll keep the request for pin change interrupts in mind. As I’m covering interrupts, I’m really trying to just show one to get people started. Time permitting, I would like to cover more, but I know there are lots of interrupts available and many ways to use each one.

  • I couldn’t have asked for better timing on that delay :P

    The doorbell analogy is a good one, and definitely helps describe how one’s state might be saved after the ISR. I’ll have to remember it :)

    Definitely yes to debounce, but I’m hoping to make another video in the future talking about the various ways you can handle debounce (rather than try to give a partial answer in this video).

    You are correct in that the AVR can only handle one interrupt at a time. My understanding is that the I-bit is automatically cleared when entering into an ISR, which just means global interrupts are disabled. In theory, you could call sei() in an ISR to allow for nested interrupts–although that seems to go against good AVR programming practices :P

    I’m a big fan of #define and #ifdef. They’re really helpful if you want to have a “timer configuration” section in code and manually set the registers depending on which architecture you might be using. It’s a pain to keep up with changes when you start dealing with more than 3 architectures, though…

  • The interrupt totally gets called multiple times due to contact bounce. However, I was purposely leaving it out in this video with the hopes that I might create a “debouncing” video in the future explaining the various ways one might debounce a button :)

  • With the basic ISR() definition, avr-gcc automatically handles storing the SREG for you. If you’re writing in assembly or use the ISR_NAKED parameter, then yes, you’ll likely need to save some register values (source: https://www.microchip.com/webdoc/AVRLibcReferenceManual/groupavrinterrupts.html).

  • All good points, so thank you for these! I would like to dig into it further, but I believe you can set up nested interrupts on an AVR. I do see how that could lead to complications, though, and why you probably shouldn’t. :)

  • “Something went wrong during APDS-9960 init” usually indicates that your Arduino can’t communicate with the sensor over I2C. I recommend checking your wiring again and making sure you’re giving the sensor no more than 3.3V (it’s not rated for 5V). If that’s still not working, I recommend reaching out to our Technical Support staff, who should be able to help you out.

  • If I remember correctly, the gesture engine in the APDS-9960 actually triggers the interrupt pin as soon as it thinks a gesture is starting (not when it’s ended). If you look at the gesture example, you’ll see that apds.isGestureAvailable() is called in the ISR to see if the gesture is actually ready and to prevent the code from just sitting in the ISR.

  • Sure! The laser cut files and example code can be found on GitHub: https://gist.github.com/ShawnHymel/d5175f28062d5c9e63d302850cafa290. Specifically, the laser cut files can be found in the save_early_laser_cut_stand.zip file.

  • Slinky’s are always fun for waves :)

    Yeah, I was surprised to learn how far back the whole concept of “liquid crystals” went, too.

Plastic Ants Demo

ShawnHymel 11 items

Parts list for plastic ant combat bot build. The recommended...

Getting Started with Edison - Ep. 7

ShawnHymel 10 items

Parts used in the Getting Started with Intel Edison episode...

Sound Page Kit

ShawnHymel 8 items

Parts needed for the Sound Page Kit.

Party Button

ShawnHymel 18 items

This is the wishlist for the Party Button that we’ll be...

Getting Started With Raspberry Pi - Ep. 2

ShawnHymel 7 items

Components needed to get started with the Raspberry Pi, as...

Getting Started With Raspberry Pi - Ep. 1

ShawnHymel 10 items

Components needed to get started with the Raspberry Pi, as...

Getting Started With Raspberry Pi - Ep. 3

ShawnHymel 11 items

Components needed to get started with the Raspberry Pi, as...

M2X Tutorial - Fetching Data

ShawnHymel 3 items

Parts needed for connecting an Arduino and CC3000 to AT&T’s...

M2X Tutorial - Temperature Data Logging

ShawnHymel 7 items

Parts needed for connecting an Arduino and CC3000 to AT&T’s...

M2X Tutorial - Controlling a Device

ShawnHymel 7 items

Parts needed for connecting an Arduino and CC3000 to AT&T’s...

Getting Started with Edison - Ep. 6

ShawnHymel 8 items

Getting Started with Edison Part 6: Temperature Sensor video

TEI '15 Workshop

ShawnHymel 15 items

List of parts to get you started with logging...

Raspberry Pi 3 Accessories

ShawnHymel 4 items

Recommended products for the Raspberry Pi 3.

CarHUD

ShawnHymel 8 items

Make a simple HUD for your car. Reads and displays speed in...

BAC Lager

ShawnHymel 13 items

Parts used in the BAC Sensor video.