c++arduinosensorsmsp432

Absolute Encoder hexadecimal input


Question: How do I receive input from a absolute encoder that makes it output in hexadecimal/grey code into a Arduino? do I use a digitalRead or analogRead command? I could not find example code/projects with a absolute encoder online.

Overall Objective: I want to use a absolute encoder as a knob for a project. The idea is that the encoder will output its position as a state to be used in a case statement. I.e:

case1: analogRead(absEncdr == 00) arduino enters idle routine

case2: analogRead(absEncdr == 11) arduino enters button routine

etc

details: Abs encoder type: 25LB22-G encoder datasheet is here.

I'm using the hexidecimal/ grey code 4-Bit Binary Code Hexadecimal-16 Position encoder version

Basically, I'm not sure how to read in this abs encoder into my Arduino.


Solution

  • To read that you will need four digital pins. You can read the four pins and bit-shift those values into one byte that you can compare to the table in the data-sheet.

    byte position = (digitalRead(pin8) << 3) | (digitalRead(pin4) << 2) | (digitalRead(pin2) << 1) | digitalRead(pin1);
    

    Assuming that the pins are named as they are in that truth table in the datasheet.

    We are using the OR operator | to put them together into the same byte.