SHARE
TWEET

Untitled

a guest Aug 24th, 2019 146 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <LiquidCrystal.h>
  2. #include <RotaryEncoder.h>
  3.  
  4.  
  5. LiquidCrystal lcd( 8 , 9 , 4 , 5 , 6 , 7);
  6.  
  7.  
  8. RotaryEncoder encoder(10, 11);
  9.  
  10.  
  11. int value = 0;
  12.  
  13.  
  14. byte full[8]  = {0b11111, 0b11111, 0b11111, 0b11111,
  15.                         0b11111, 0b11111, 0b11111, 0b11111
  16.                        };
  17. byte one[8] = {0b11011, 0b10011, 0b11011, 0b11011,
  18.                         0b11011, 0b11011, 0b10001, 0b11111
  19.                        };
  20. byte two[8] = {0b10001, 0b01110, 0b11110, 0b11101,
  21.                           0b11011, 0b10111, 0b00000, 0b11111
  22.                          };
  23. byte three[8] =  {0b00000, 0b11101, 0b11011, 0b11101,
  24.                            0b11110, 0b01110, 0b10001, 0b11111
  25.                           };
  26. byte four[8] = {0b11101, 0b11001, 0b10101, 0b01101,
  27.                             0b00000, 0b11101, 0b11101, 0b11111
  28.                            };
  29. byte five[8] = {0b00000, 0b01111, 0b00001, 0b11110,
  30.                            0b11110, 0b01110, 0b10001, 0b11111
  31.                           };
  32. byte six[8] = {0b11001, 0b10111, 0b01111, 0b00001,
  33.                           0b01110, 0b01110, 0b10001, 0b11111
  34.                          };
  35.  
  36. static int pos = 1;
  37. int newPos = 0;
  38. int selected = 0;
  39.  
  40. void setup()
  41. {
  42.  
  43.  
  44.   pinMode(12, INPUT_PULLUP);
  45.   pinMode(13,OUTPUT);
  46.   digitalWrite(13,HIGH);
  47.   lcd.begin(20, 4);
  48.   lcd.createChar(0, full);
  49.   lcd.createChar(1, one);
  50.   lcd.createChar(2, two);
  51.   lcd.createChar(3, three);
  52.   lcd.createChar(4, four);
  53.   lcd.createChar(5, five);
  54.   lcd.createChar(6, six);
  55.  
  56.  
  57.   lcd.setCursor(0, 0);
  58.   lcd.print("  1  2  3  4  5  6  ");
  59.   lcd.setCursor(1, 2);
  60.   lcd.print("Present Value: ");
  61.  lcd.setCursor(1, 3);
  62.  lcd.print("Selected: -");
  63. }
  64.  
  65. void loop()
  66. {
  67.   value = digitalRead(12);
  68.   if (value == LOW)
  69.   {
  70.     lcd.setCursor(13, 3);
  71.     selected = newPos;
  72.    lcd.print(selected);
  73.   }
  74.   encoder.tick();
  75.   newPos = encoder.getPosition();
  76.   if (pos != newPos)
  77.   {
  78.    
  79.     if (newPos > 6)
  80.     {
  81.       encoder.setPosition(6);
  82.       newPos = 6;
  83.     }
  84.  
  85.     if (newPos < 1)
  86.     {
  87.       encoder.setPosition(1);
  88.       newPos = 1;
  89.     }
  90.    
  91.     highlightedSelection(newPos);
  92.     pos = newPos;
  93.   }
  94. }
  95.  
  96. void highlightedSelection(int count)
  97. {
  98.  
  99.   int present = (count * 3) - 1;
  100.   if (count > pos)
  101.   {
  102.     lcd.setCursor(present - 4, 0);
  103.     lcd.print(" ");
  104.     lcd.print(count - 1);
  105.     lcd.print(" ");
  106.   }
  107.   if (count < pos)
  108.   {
  109.     lcd.setCursor(present + 2, 0);
  110.     lcd.print(" ");
  111.     lcd.print(count + 1);
  112.     lcd.print(" ");
  113.   }
  114.  
  115.  
  116.   lcd.setCursor(present - 1, 0);
  117.   lcd.write((uint8_t)0);
  118.   lcd.write((uint8_t)0);
  119.   lcd.write((uint8_t)0);
  120.  
  121.  
  122.   lcd.setCursor(present, 0);
  123.   lcd.write((uint8_t)count);
  124.  
  125.  
  126.   lcd.setCursor(15, 2);
  127.   lcd.print(count);
  128. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top