Arduino-Using Shift Registers With Ultrasonic Sensors




About: I like to make everything and anything! from electronics to food! and i'll be showing you all the things i come up with here! Twitter: @ERILtech

The HC-SR04 Ultrasonic range sensing module is great for sensing distances that can be used as an input for your Arduino projects, but using multiple (more than two) can quickly cost you a lot of pins.

This basic Instructable gives you the code and basic instructions to use the 74HC595 8 bit series to parallel shift register so you can connect up to 8 HC-SR04 modules (16 IO pins) while using only 4 Arduino IO pins

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Arduino Code

^^Basic layout of shift register IC and picture with only one HC-SR04 sensor^^

The attached File contains the needed Arduino code and pin layout (scanping)

Also attached is basic code for using the HC-SR04 Ultrasonic range sensing module (ping)


Please follow new schematic above^^^ all echo pins must go into transistor circuit

Sensors Contest

Participated in the
Sensors Contest

Gadget Hacking and Accessories Contest

Participated in the
Gadget Hacking and Accessories Contest



    • Indoor Lighting Contest

      Indoor Lighting Contest
    • Make It Fly Challenge

      Make It Fly Challenge
    • Growing Beyond Earth Maker Contest

      Growing Beyond Earth Maker Contest

    4 Discussions


    2 years ago

    Nice! =D


    3 years ago

    You can buy a breakout board that allows you to connect up to 8 of these HC-SR04 sensors to an Arduino using the SPI protocol, so only one dedicated wire is used.


    4 years ago on Introduction

    Have you ever tried that with more than 1 sensor? Can't confirm that through your photos.

    I tried hooking up 2 sensors to the same echo line to save an input pin but would trigger them one after the other through separate trigger pins. What I found out is that the echo line would never go to high because the unused sensor is keeping the line low.

    What probably would work is triggering all sensors at the same time and evaluate each echo separately. But I don't fancy programming that in an Arduino environment.

    1 reply

    Reply 4 years ago on Introduction

    I originally only tested it with 1, but later used two and had the same problem but found a way to (kinda) fix it and completely forgot to update this instructable with it!

    I found if you used an NPN transistor at each of the echo pins (B and C pins connected to the echo pin and the E to IO pin3) the echo pin will only connect to IO pin 3 when it goes high and pin 3 will go high as well.

    This seemed to fix it for me but because IO pin 3 is floating at all other times there might be problems.