MCPcopy Create free account
hub / github.com/InkboxSoftware/all-screen-keyboard / readHallEffectSensor

Method readHallEffectSensor

keyboard/src/readHallEffect.cpp:29–58  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

27}
28
29int hallEffectReader::readHallEffectSensor(int numberSensor){
30 //check range:
31 if (numberSensor >= hallEffectSensorMax){
32 return -1;
33 }
34 //calculate which chip the sensor is on:
35 int chipNumber; //which ADC chip is it?
36 int index; //which index 0-7 is it?
37
38 chipNumber = numberSensor / 8;
39 index = numberSensor % 8;
40
41 unsigned char buffer[3];
42 buffer[0] = 0x01;
43 buffer[1] = 0x80 | (index << 4);
44 buffer[2] = 0x00;
45
46 //deselect chip:
47 deselectChipNumber(chipNumber);
48 //may need to insert wait here if clock too slow
49 //select chip:
50 selectChipNumber(chipNumber);
51 if (wiringPiSPIDataRW(SPIchannel, buffer, 3) == -1){
52 return -1;
53 }
54 deselectChipNumber(chipNumber);
55
56 int ADCval = ((buffer[1] & 0x03) << 8) | buffer[2];
57 return ADCval;
58}
59
60void hallEffectReader::selectChipNumber(int chipNumber){
61 //break into three bits

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected