   }
 
   updateFilteredMeter(analogRead(SMETER));
-  buildMeterDisplayString();
-  writeMeterDisplay(0,0);
+  writeSMeter(0,0);
 
   nextMeterUpdate = nowmillis + meterUpdateMillis;
 }

// 10 characters plus a null character 
// so we can use it as a proper string.
#define meterdisplaysize 10
char meterdisplay[11] = 
{ METER_CHAR_1,
  METER_CHAR_0,
  METER_CHAR_0,
  METER_CHAR_0,
  METER_CHAR_0,
  METER_CHAR_0,
  METER_CHAR_0,
  METER_CHAR_0,
  METER_CHAR_0,
  METER_CHAR_1};

int currentMeter = 0;


  currentMeter = currentMeter + ((sample - currentMeter) / nrSamples);
}

void writeSMeter(int row, int pos) {
  const int maxbars = 10 * 3; // 10 characters with 3 vertical bars each
  
  // Calculate bars from s meter here  
  int displaybars = 15;

  for (int barindex = 0; barindex < maxbars; barindex +=3) {
    switch (min(displaybars,3)) {
      case 3: lcd.write(""+ METER_CHAR_3); break;  // triple bar
      case 2: lcd.write(""+ METER_CHAR_2); break;  // double bar
      case 1: lcd.write(""+METER_CHAR_1); break;  // single bar
      default: lcd.write(""+METER_CHAR_0); break; // no bar
    }
    displaybars -= 3;
  }  
}
