Advertisement
sixshoot95

Debouncer arduLino with millis()

Dec 12th, 2016
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.36 KB | None | 0 0
  1. #include<LiquidCrystal.h>
  2. LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
  3. int brojac;
  4. byte stanje_tastera;
  5. byte blokiraj;
  6. unsigned long poslednja_promena;
  7.  
  8.  
  9. #define SELECT 1
  10. #define LEFT 2
  11. #define DOWN 4
  12. #define UP 3
  13. #define RIGHT 5
  14. #define NONE 0
  15.  
  16. byte ocitajTaster(int ulaz){
  17. if(ulaz < 800){
  18. if(ulaz >550){
  19. return SELECT;
  20. }else{
  21. if(ulaz>350){
  22. return LEFT;
  23. }else{
  24. if(ulaz>200){
  25. return DOWN;
  26. }else{
  27. if (ulaz>50){
  28. return UP;
  29. }else{
  30. return RIGHT;
  31. }
  32. }
  33. }
  34. }
  35. }else{
  36. return NONE;
  37. }
  38.  
  39. }
  40.  
  41. void ispisTastera(byte ulaz){
  42. lcd.setCursor(0,0);
  43. switch(ulaz){
  44. case 0: lcd.clear();break;
  45. case 1: lcd.print("SELECT");break;
  46. case 2: lcd.print("LEFT");break;
  47. case 3: lcd.print("UP");break;
  48. case 4: lcd.print("DOWN");break;
  49. case 5: lcd.print("RIGHT");break;
  50. }
  51. }
  52.  
  53. void setup(){
  54. lcd.begin(16,2);
  55.  
  56. }
  57. void loop(){
  58. if(stanje_tastera !=ocitajTaster(analogRead(0))){
  59. stanje_tastera = ocitajTaster(analogRead(0));
  60. blokiraj = 0;
  61. }
  62. if((millis()- poslednja_promena>50 )&&(blokiraj==0)){
  63. blokiraj =1 ;
  64.  
  65. switch(ocitajTaster(analogRead(0))){
  66. case SELECT: brojac = 0; break;
  67. case UP: brojac++; break;
  68. case DOWN: brojac--; break;
  69. }
  70. lcd.clear();
  71. lcd.print(brojac);
  72. }}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement