Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #include <LiquidCrystal.h>
  2. #define lenght 16.0
  3. double percent=100.0;
  4. unsigned char b;
  5. unsigned int peace;
  6. // caratteri personalizzati
  7. LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
  8. byte p1[8] = {
  9.   0x10,
  10.   0x10,
  11.   0x10,
  12.   0x10,
  13.   0x10,
  14.   0x10,
  15.   0x10,
  16.   0x10};
  17. byte p2[8] = {
  18.   0x18,
  19.   0x18,
  20.   0x18,
  21.   0x18,
  22.   0x18,
  23.   0x18,
  24.   0x18,
  25.   0x18};
  26. byte p3[8] = {
  27.   0x1C,
  28.   0x1C,
  29.   0x1C,
  30.   0x1C,
  31.   0x1C,
  32.   0x1C,
  33.   0x1C,
  34.   0x1C};
  35. byte p4[8] = {
  36.   0x1E,
  37.   0x1E,
  38.   0x1E,
  39.   0x1E,
  40.   0x1E,
  41.   0x1E,
  42.   0x1E,
  43.   0x1E};
  44. byte p5[8] = {
  45.   0x1F,
  46.   0x1F,
  47.   0x1F,
  48.   0x1F,
  49.   0x1F,
  50.   0x1F,
  51.   0x1F,
  52.   0x1F};
  53.  
  54. void setup()   {
  55.   delay(100);
  56.   lcd.createChar(0, p1);
  57.   lcd.createChar(1, p2);
  58.   lcd.createChar(2, p3); //genere i caratteri personalizzati
  59.   lcd.createChar(3, p4);
  60.   lcd.createChar(4, p5);
  61.   lcd.begin(16, 2);
  62. }
  63. void loop()
  64. {
  65.   lcd.setCursor(0, 0);
  66.   //ADC conversion
  67.   unsigned int value = analogRead(0); //legge il valore dal potenziometro
  68.   percent = value/1024.0*100.0; //calcola la percentuale
  69.   lcd.print(value);
  70.   lcd.print(" - ");
  71.   lcd.print(percent);
  72.   lcd.print(" %   ");
  73.   lcd.setCursor(0,1); //sposta il cursore
  74.   double a=lenght/100*percent;
  75.   // disegna i rettangoli neri sull'lcd
  76.   if (a>=1) {
  77.     for (int i=1;i<a;i++) {
  78.       lcd.write(4);
  79.       b=i;
  80.     }
  81.     a=a-b;
  82.   }
  83.   peace=a*5;
  84.   // drawing charater's colums
  85.   switch (peace) {
  86.   case 0:
  87.     break;
  88.   case 1:
  89.     lcd.print((char)0);
  90.     break;
  91.   case 2:
  92.  
  93.     lcd.write(1);
  94.  
  95.     break;
  96.   case 3:
  97.  
  98.     lcd.write(2);
  99.  
  100.     break;
  101.   case 4:
  102.  
  103.     lcd.write(3);
  104.  
  105.     break;
  106.  
  107.   }
  108.   //clearing line
  109.  
  110.   for (int i =0;i<(lenght-b);i++) {
  111.     lcd.print(" ");
  112.   }
  113.  
  114. }