Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.12 KB | None | 0 0
  1. //Example By ArduinoAll.com
  2. #define ENCODER_PIN 2
  3. #define RESOLUTION 40
  4.  
  5. unsigned long gulCount = 0;
  6.  
  7. unsigned long gulStart_Timer = 0;
  8. unsigned short gusChange = 0;
  9. unsigned long gulStart_Read_Timer = 0;
  10. short gsRPM = 0;
  11.  
  12. void setup()
  13. {
  14. attachInterrupt(digitalPinToInterrupt(ENCODER_PIN), COUNT, CHANGE);
  15. Serial.begin(9600);
  16. }
  17.  
  18. void loop()
  19. {
  20. // put your main code here, to run repeatedly:
  21. if ((millis() - gulStart_Read_Timer) >= 500)
  22. {
  23. gsRPM = usRead_RPM();
  24.  
  25. if (gsRPM >= 300)
  26. {
  27. gsRPM = gsRPM - 230;
  28. }
  29. Serial.print("RPM: ");
  30. Serial.println(gsRPM);
  31. gulStart_Read_Timer = millis();
  32. }
  33. }
  34.  
  35. short usRead_RPM(void)
  36. {
  37. unsigned long ulRPM = 0;
  38. unsigned long ulTimeDif = 0;
  39.  
  40. detachInterrupt(digitalPinToInterrupt(ENCODER_PIN));
  41.  
  42. ulTimeDif = millis() - gulStart_Timer;
  43. ulRPM = 60000 * gulCount;
  44. ulRPM = ulRPM / ulTimeDif;
  45. ulRPM = ulRPM / RESOLUTION;
  46. //usRPM = ((60*1000*gulCount)/ulTimeDif)/RESOLUTION;
  47.  
  48. gulCount = 0;
  49. gulStart_Timer = millis();
  50. attachInterrupt(digitalPinToInterrupt(ENCODER_PIN), COUNT, CHANGE);
  51.  
  52. return (short)ulRPM;
  53. }
  54.  
  55. void COUNT(void)
  56. {
  57. gulCount++;
  58. gusChange = 1;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement