Advertisement
Guest User

vel.

a guest
Jun 21st, 2015
373
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.55 KB | None | 0 0
  1. static int8_t lookup_table[] = {0,-1,1,0,1,0,0,-1,-1,0,0,1,0,1,-1,0};
  2. static uint8_t enc_val = 0;
  3.  
  4. int A = 2;
  5. int B = 3;
  6. volatile long enc_count = 0;
  7. volatile long last_time = 0;
  8.  
  9.  
  10. void encoder()
  11. {
  12.     last_time = millis();
  13.     enc_val = enc_val << 2;
  14.     enc_val = enc_val | ((PIND & 0b1100) >> 2);
  15.  
  16.     enc_count = enc_count + lookup_table[enc_val & 0b1111];
  17. }
  18.  
  19. void setup()
  20. {
  21.   attachInterrupt(0,encoder,CHANGE);
  22.   attachInterrupt(1,encoder,CHANGE);
  23.   Serial.begin(9600);
  24. }
  25.  
  26. void loop()
  27. {
  28.   Serial.println(1/(millis()-last_time));
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement