Simple library for controlling a shift register using only three pins on the mbed. Defaults to controlling an 8 bit shift register.

Dependents:   Lab07_RTOS_display Lab07_RTOS_queue

ShiftOut.h

Committer:
ollie8
Date:
2014-05-26
Revision:
1:4c2379445f72
Parent:
0:a4f4842715fd
Child:
2:78bb6ead1c28

File content as of revision 1:4c2379445f72:

#ifndef SHIFTOUT_H
#define SHIFTOUT_H

#include <mbed.h>

class ShiftOut {

    public :
    
        ShiftOut(PinName clk, PinName data, PinName latch, int8_t registerCount = 8) {
            clkout = new DigitalOut(clk);
            dataout = new DigitalOut(data);
            latchout = new DigitalOut(latch);
            this->registerCount = registerCount;
        }
        
        ~ShiftOut() {
            delete clkout;
            delete dataout;
            delete latchout;
        }
        
        void write(int data) {
            *latchout = 0;
            for(int i = registerCount - 1; i >=  0; i--){
                *clkout = 0;
                *dataout = (data & (1 << i)) != 0;
                *clkout = 1;
            }
            *latchout = 1;
        }
         
    private :
        DigitalOut *clkout;
        DigitalOut *dataout;
        DigitalOut *latchout;
        int8_t registerCount;     
};

#endif