Advertisement
Guest User

Untitled

a guest
Sep 29th, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.91 KB | None | 0 0
  1. void setup()
  2. {
  3. Serial.begin(9600);
  4. }
  5.  
  6. int readEncoder() {
  7. int p1 = analogRead(A0);
  8. int p2 = analogRead(A1);
  9. int p3 = analogRead(A2);
  10.  
  11. if (p1 + p2 + p3 == 0)
  12. return -1;
  13.  
  14. int l = p1 + p2 + p3;
  15. int x = (p2 - p3) * 86;
  16. int y = p1 * 100 - (p2 + p3) * 50;
  17. int p = -1;
  18. if (y > 0) {
  19. if (abs(x) < y * 57 / 100)
  20. p = 0;
  21. else
  22. p = (x < 0) ? 5 : 1;
  23. }
  24. else {
  25. if (abs(x) < -y * 57 / 100)
  26. p = 3;
  27. else
  28. p = (x < 0) ? 4 : 2;
  29. }
  30. return p;
  31. }
  32.  
  33.  
  34. int actual = -1;
  35. int encActual = -1;
  36.  
  37. boolean interpolate() {
  38. int delta[11] = {
  39. -1, -2, 0, +2, +1, 0, -1, -2, 0, +2, +1
  40. };
  41. int v = readEncoder();
  42. if (v == -1)
  43. return false;
  44. if (actual == -1) {
  45. actual = 0;
  46. encActual = v;
  47. return true;
  48. }
  49.  
  50. int d = delta[v - encActual + 5];
  51. actual += d;
  52. encActual = v;
  53. return true;
  54. }
  55.  
  56. void loop()
  57. {
  58. if (interpolate()){
  59. Serial.println(actual);
  60. }
  61. delay(10);
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement