Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void setup()
- {
- Serial.begin(9600);
- }
- int readEncoder() {
- int p1 = analogRead(A0);
- int p2 = analogRead(A1);
- int p3 = analogRead(A2);
- if (p1 + p2 + p3 == 0)
- return -1;
- int l = p1 + p2 + p3;
- int x = (p2 - p3) * 86;
- int y = p1 * 100 - (p2 + p3) * 50;
- int p = -1;
- if (y > 0) {
- if (abs(x) < y * 57 / 100)
- p = 0;
- else
- p = (x < 0) ? 5 : 1;
- }
- else {
- if (abs(x) < -y * 57 / 100)
- p = 3;
- else
- p = (x < 0) ? 4 : 2;
- }
- return p;
- }
- int actual = -1;
- int encActual = -1;
- boolean interpolate() {
- int delta[11] = {
- -1, -2, 0, +2, +1, 0, -1, -2, 0, +2, +1
- };
- int v = readEncoder();
- if (v == -1)
- return false;
- if (actual == -1) {
- actual = 0;
- encActual = v;
- return true;
- }
- int d = delta[v - encActual + 5];
- actual += d;
- encActual = v;
- return true;
- }
- void loop()
- {
- if (interpolate()){
- Serial.println(actual);
- }
- delay(10);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement