Oled attiny84 libreria

#include <TinyWireM.h>
#include <TinyOzOLED.h>
#include "avr/interrupt.h"; 
#include <EEPROM.h>
#include <stdio.h>
 float voltaje_entrada;
float voltaje_final;
float resistencia1 = 100000; //Resistencia de 100K
float resistencia2 = 10000; //Resistencia de 10k
int cont3;
int m =9; 
volatile int value;
volatile int lastEncoded = 0;

const int boton=10;
const int led=8;
int estadoled=HIGH;
int ultimoestadoboton;
int estadoactualboton;


void energia (){
if(digitalRead(m)==LOW){ 
cont3++;
delay(1);
if (cont3 >5) {
 EEPROM.put(0,value);
delay(50);
cont3 = 0; 
}
}
} 
void setup()
{
  
 OzOled.init();  // inicia oled

  OzOled.clearDisplay();           //limpia pantalla y establece posicion en la izquierda
  OzOled.setNormalDisplay();       //display normal
  OzOled.sendCommand(0xA1);        // orientar oled
  OzOled.sendCommand(0xC8);
   
    EEPROM.get(0, value);
  pinMode(5, OUTPUT);  
  pinMode(1, INPUT);
  pinMode(2, INPUT);
  digitalWrite(1, HIGH);
  digitalWrite(2, HIGH);
  pinMode(m,  INPUT_PULLUP);;
 pinMode(led,OUTPUT);
 pinMode(boton,INPUT);
 digitalWrite(led,HIGH);
 estadoactualboton=digitalRead(boton); 
   /*
   * WGM10, WGM12: Fast PWM, 8-bit TOP=255
   * CS10: No prescaler
   * COM1B1: Pin 5 to LOW on match with OCR1B and to HIGH on TOP
   */
  TCCR1A = _BV(COM1B1) | _BV(WGM10);
  TCCR1B = _BV(CS10) | _BV(WGM12);
  /*
   * 50% duty cycle
   * 32 kHz with 8MHz CPU clock
   */
  OCR1B =value;
PCMSK0 = bit (PCINT1) | bit (PCINT2);
  GIMSK  = bit (PCIE0);
  sei();   

                   
}
 void duty() {
  OCR1B = 255 - value;
 
}
void loop()
{
  
   energia ();
  duty();
 ultimoestadoboton=estadoactualboton; 
 estadoactualboton=digitalRead(boton);
 if (ultimoestadoboton==LOW && estadoactualboton==HIGH){
  estadoled=!estadoled;
  digitalWrite(led,estadoled);
 }

 
 voltaje_entrada = (analogRead(7) * 4.95) / 1023;  //Lee el voltaje de entrada
  voltaje_final = voltaje_entrada / (resistencia2 / (resistencia1 + resistencia2));  //Fórmula del divisor resistivo para el voltaje final
  
   displayOLED();
}
 

ISR(PCINT0_vect)
{
  int MSB = digitalRead(1); 
  int LSB = digitalRead(2);
 
  int encoded = (MSB << 1) |LSB;
  int sum  = (lastEncoded << 2) | encoded; 
 
  if(sum == 0b1101 || sum == 0b0100 || sum == 0b0010 || sum == 0b1011)
    value++;
   
  if(sum == 0b1110 || sum == 0b0111 || sum == 0b0001 || sum == 0b1000)
    value--;
 
  lastEncoded = encoded; 
 
  if (value <= 0)
    value = 0;
  if (value >= 255)
    value = 255;
}
void displayOLED() {
  char tmp[5];
  dtostrf( voltaje_final, 3, 2, tmp);
  OzOled.printBigNumber(tmp, 2, 2, 4);
}

bueno funciona todo pero creo que el código no esta bien , ya que en la pantalla muestra puntos raros por todos lados, no se como resolverlo'