# 9-Axis IMU LESSON 21: Visualizing 3D Rotations in Vpython using Quaternions

In this lesson we show how to use quaternions from the BNO055 to create a visualization in Vpython. The visualization is a complete 3D free body rotation of a rigid body. To build this project you will need an Arduino Nano, and an Adafruit BNO055 Inertial Measurement Sensor.

This is the code we developed in the video posted here for your convenience. This code is for demo purposes only and should not be used in real applications. It is for educational purposes only.

This is the code we developed on the python side to do the visualization from the passed quaternions.

# Arduino Tutorial 42: Understanding How to Use a Serial to Parallel Shift Register (74HC595)

In this lesson we show you how to expand the number of LEDs or other devices you can control with the Arduino by incorporating a Serial to Parallel converter. The chip we will be using is the 74HCH595. When connected to just a few pins of the Arduino, data can be sent serially to the chip, and then LEDs can be connected to the output pins of that chip. Hence, you can control 8 LEDs using only 3 digital pins on the Arduino.

This is somewhat of a tedious project, because the circuit has lots of wires, and it must be connected perfectly. We use the following schematic in this project:

The video takes you step by step through the entire build and programming.

The code we used in this build is included below:

# 9-Axis IMU LESSON 20: Vpython Visualization of Roll, Pitch, and Yaw

This is the arduino code we developed in this lesson to approximate roll, pitch and yaw over small ranges.

This is the python code we developed to visualize the 3 dimensional rotation of a rigid body.

# 9-Axis IMU LESSON 19: Vpython Visualization of Pitch and Yaw

To play along at home, you will need an Arduino Nano, and an Adafruit BNO055 Inertial Measurement Sensor. In this lesson we create a live visual where a 3D model rotates in space mimicking the pitch and yaw of the breadboard in the real world. We have not yet derived and implemented the math to incorporate roll into the simulation but that will ab done in the next lesson.

This is the code on the arduino side we developed in the video:

This is the code on the Python side we developed in the video:

# Arduino Tutorial 41: Understanding Hexadecimal Numbers and Why They Are Important

In today’s lesson we discuss the topic of Hexadecimal numbers, and why they are important. As discussed previously, digital devices are nothing more than an incredibly large number of simple on/off switches connected together in clever ways to achieve useful functions. Since there is a need to represent numbers using only on/off switches, the binary number system is used. A switch that is in the on condition can be thought of as a “1” while a switch in the off condition can be thought of as a “0”. by stacking these switches side by side, we can represent almost any number by simply working with enough switches. As things got more complex, and the number of switches increased, it became untenable to keep up with all the 0’s and 1’s. Hence, groups of 4 switches were bunched together, and the Hexadecimal system was born. Understand Hexadecimal is simply a way to keep track of switches that is more convenient than the Binary system. This video discusses in detail, and gives lots of examples.