Category Archives: Tutorial

Arduino Tutorial 44: Understanding Logical Shift Left and Logical Shift Right with the74HC595

In this lesson, we explore how to perform Logical Shift Left (LSL), and Logical Shift Right (LSR) functions on binary numbers, and we implement a circuit to perform these functions using an Arduino and a 74HC595 chip. We will demonstrate these functions on 8 bit binary numbers.

We start with the basic circuit and code which were developed in Lesson 42. In this lesson we are using parts from the Elegoo Arduino kit, which you can get  HERE.  We start with this circuit, which was explained in Lesson 42.

74HC595
This is the schematic we use in this example to control 8 LEDs from the 74HC595 chip.

You can see that with this circuit, an 8 bit binary number can be visually displayed by illuminating the circuit LED. The goal of this lesson is to write code to perform LSL and LSR functions. The graphics below show conceptually how simple these functions are:

logical shift left
This diagram shows the Logical Shift Left function on an 8 bit binary number

MSB stands for “Most Significant Bit” and LSB stands for “Least Significant Bit”.  You can see that the LSL function just moves each bit one to the left, and fills the empty LSB with a “0”.

The LSR funtion is just as simple as illustrated below.

Logical Shift Right
This diagram shows an 8 bit binary number undergoing a Logical Shift Right (LSR) funtion

Such shifts are often required when doing digital logic, so it is important to understand what the terms mean.

We can see that the LSL function can be performed by simply multiplying the binary number by 2. Similarly the LSR function can be performed by dividing the binary number by 2.

Code for LSL:

Code for LSR function:

 

Arduino Tutorial 43: Binary Counter with 74HC595 Serial to Parallel Shift Register

In lesson 42 we showed you how to connect and program the 74HC595 shift register. We showed how data in byte format would then be written to an array of 8 LED to give a visual representation of the binary version of that byte variable. We then gave you the assignment to create a Binary Counter using the 4HC595. In this lesson we show you the solution. This builds on Lesson 42, so make sure to have your basic 74HC595 circuit set up before starting this lesson.

In this lesson we are using parts from the Elegoo Arduino kit, which you can get  HERE. 

The code we ended up developing in this lesson is provided below.

 

 

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

74HC595
In this Circuit the 74HC595 is independently controlling 8 different LEDs.

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:

74HC595
This is the schematic we use in this example to control 8 LEDs from the 74HC595 chip.

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

The code we used in this build is included below:

 

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.

Arduino Tutorial 40: Controlling DC Motor Speed and Direction with Pushbuttons

In this lesson we explore how to control the speed and direction of a DC motor using two buttons. We are using the L293D motor controller and a small DC motor for demonstration purposes. We are using parts from our Elegoo Super Stater Kit, which you can get HERE. The basic circuit was explained in Lesson 37, and we are using that work as a starting point. The schematic below will get you started in connecting your circuit. Be sure and connect one of the Arduino ground pins to the ground rail in the second to the bottom row in the diagram below. It is good practice to connect all your grounds together.

DC Motor Controller
Connection Diagram for a DC Motor Controller using the L293 Control Chip

The code we developed in the video lesson is shown below for your convenience.