This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

Push Button Control with 74HC165 Shift Register

This example shows how to use the MATLAB® Support Package for Arduino® Hardware to collect large number of push button states with a 74HC165 8-bit parallel-in-serial-out shift register. This example uses four push buttons.

Hardware Requirements

  • Arduino board

  • Four push buttons

  • 74HC165 8-bit parallel-in-serial-out shift register

  • Four 10K ohm resistors

  • Breadboard and wires

Hardware Setup

Connect push buttons and 74HC165 shift registers to Arduino hardware:

  • Connect Vcc pin on 74HC165 to 5V pin on Arduino hardware.

  • Connect GND pin on 74HC165 to GND pin on Arduino hardware.

  • Connect Q7 pin on 74HC165 to digital pin 11 on Arduino hardware.

  • Connect CP pin on 74HC165 to digital pin 8 on Arduino hardware.

  • Connect PL pin on 74HC165 to digital pin 9 on Arduino hardware.

  • Connect CE pin on 74HC165 to digital pin 10 on Arduino hardware.

  • Connect a push button to pin D0, D4, D5 and D7 on 74HC165 with a pull down resistor to GND as shown below.

  • Connect pin D1, D2, D3 and D6 on 74HC165 to GND pin on Arduino hardware.

Create Shift Register Object

Create an arduino object, and include the ShiftRegister library.

   a = arduino('COM4','Uno','Libraries','ShiftRegister')
Updating server code on board Uno (COM4). This may take a few minutes.
a = 
  arduino with properties:

                  Port: 'COM4'
                 Board: 'Uno'
         AvailablePins: {'D2-D13', 'A0-A5'}
  AvailableDigitalPins: {'D2-D13', 'A0-A5'}
      AvailablePWMPins: {'D3', 'D5-D6', 'D9-D11'}
   AvailableAnalogPins: {'A0-A5'}
    AvailableI2CBusIDs: [0]
             Libraries: {'ShiftRegister'}

Create shift register object, specifying the connected data pin, clock pin, load pin, and clock enable pin.

   dataPin = 'D11';
   clockPin = 'D8';
   loadPin = 'D9';
   clockEnablePin = 'D10';
   register = shiftRegister(a,'74HC165',dataPin,clockPin,loadPin,clockEnablePin)
register = 
  ShiftRegister with properties:

           Model: '74HC165'      
         DataPin: 'D11'          
        ClockPin: 'D8'           
         LoadPin: 'D9'           
  ClockEnablePin: 'D10'          

Read Push Button States

Monitor the states of the four push buttons, and print out a message if at least one button is pressed,

    states = read(register, 8);
    pressedButtons = find(states == 1)-1;
    if ~isempty(pressedButtons)
        bitsStr = num2str(pressedButtons, '%d ');
        disp(['Push button(s) connected to bit ', bitsStr, ' is pressed']);
    end
Push button(s) connected to bit 0 4 5 7 is pressed

Clean Up

When the connection is no longer needed, clear the shift register and arduino object.

  clear register a