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