CD74HC4067 library ported for mbed.

CD74HC4067.h

Committer:
scottohair
Date:
2018-01-20
Revision:
0:7f158d69af5e

File content as of revision 0:7f158d69af5e:

//CD74HC4067 Library based on bildr code: "http://bildr.org/2011/02/cd74hc4067-arduino/"
//Ported to mbed by Scott M. O'Hair
//
//sample code:
/*
#include "mbed.h"
#include "CD74HC4067.h"

Serial pc(PB_6, PA_10, 115200); //tx, rx 

CD74HC4067 mux1(D8, D9, D12, D11, A0); //S0, S1, S2, S3, SIG
 
int main()
{
    pc.printf("Running MUX test\n");
    while(1) {
        //Loop through and read all 16 values
        for(int i = 0; i < 15; i++) {    
            mux1.currentState = mux1.readMux(i);
            if (fabs(mux1.portState[i] - mux1.currentState) > BTN_NOISE_THRES) { 
                pc.printf("Value at channel %i is %f\n", i, mux1.currentState);
                mux1.saveState(i, mux1.currentState);
            }
        }

    }
}
*/



#ifndef MBED_CD74HC4067_H
#define MBED_CD74HC4067_H
 
#include "mbed.h"
 
#define BTN_NOISE_THRES   0.018f            //Define a threshold for the amount of analog change required

class CD74HC4067 {
public:
    CD74HC4067(PinName S1, PinName S2, PinName S3, PinName S4, PinName SIG);
    void saveState(uint8_t port, float state);
    float readMux(uint8_t channel);
    float currentState ;
    float portState[16];
  
private:  
    DigitalOut _S0;
    DigitalOut _S1;
    DigitalOut _S2;
    DigitalOut _S3;
    AnalogIn _SIG;    

};
 
#endif