Misurazione e correzione ph

Buongiorno a tutti e grazie a coloro disposti ad aiutarmi.
Sono alle prese con un progetto di un impianto idroponico che monitora e corregge il ph della soluzione al suo interno, e sto riscontrando problemi con la stampa dei valori di ph su schermo Oled.
in sostanza lo sketch mostra il ph ma solo sul serial monitor, dove i valori tra una misurazione e l'altra variano solo di pochi numeri nella parte decimale, mentre i valori mostrati sul' Oled variano anche di 5 numeri nella parte intera (ad esmpio, viene mostrato 4,70 come valore ph, ma nella misurazione seguente può anche raddoppiare, nonostante la soluzione in cui è immersa la sonda sia la stessa).
Specifico che lo schermo Oled è alimentato direttamente dall' alimentatore 5v che alimenta arduino, e non è quindi arduino direttamente ad alimentarlo. Inizialmente pure il modulo PH 4502C (a cui è collegata la sonda) era alimentato direttamente dall'alimentatore, ma venivano mostrati valori diversi anche sul monitor seriale, spostando invece i 2 cavi di alimentazione del modulo direttamente sui 5v e GND di arduino i valori sul seriale si stabilizzavano, il problema potrebbe quindi essere l'alimentazione?
La misurazione avviene con sonda collegata al modulo PH 4502C, lo schermo OLed usa la comunicazione I2C. Superata una certa soglia di ph, scatta un Relè a cui è collegata una pompa peristaltica che versa una soluzione acida nel serbatoio per corregere il ph.
Ecco lo sketch :

#include <Adafruit_SSD1306.h>

#define RelePh 3
#define ReleLivello 6
#define PhPin A1
#define PinLivello A3
#define Offset -5.22
#define SCREEN_WIDTH 128 
#define SCREEN_HEIGHT 64

unsigned long int valoreMedio;
int livello = analogRead(PinLivello);

Adafruit_SSD1306 display (SCREEN_WIDTH, SCREEN_HEIGHT); 

void setup() {
  Serial.begin(9600);

  pinMode(RelePh, OUTPUT);
  digitalWrite(RelePh, HIGH);
  pinMode(ReleLivello, OUTPUT);
  digitalWrite(ReleLivello, HIGH);

  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    for(;;); 
  }

  display.setTextColor( WHITE);
  display.setTextSize(2);
  display.setCursor(9, 28);
  display.clearDisplay();
  display.display();
  display.println("BENVENUTO");
  display.display();
  delay(3000);
  display.clearDisplay();
  display.setTextSize(1);
}

void loop() {
  ph();
  livelloSerbatoio();
  delay(2000);
  display.clearDisplay();
}

void ph() {
  int buf[10];
  
  for(int i=0;i<10;i++)  
  { 
    buf[i]=analogRead(PhPin);
    delay(10);
  }

  for(int i=0;i<9;i++)  
    for(int j=i+1;j<10;j++)
      if(buf[i]>buf[j])
      {
        int temp=buf[i];
        buf[i]=buf[j];
        buf[j]=temp;
      }

  valoreMedio=0;
  for(int i=2;i<8;i++)
    valoreMedio+=buf[i];
  float phValue=(float)valoreMedio*5.0/1024/6;
  phValue=14-(3.5*phValue+Offset);

  display.setCursor(0, 7);
  display.print("PH :");
  display.print(phValue, 2);
  display.display();
  
  Serial.print("PH:");  
  Serial.print(phValue, 2);
  Serial.println(" ");
  delay(600);

  if (phValue > 6,50) {
    digitalWrite(RelePh, LOW);
  }
  else {
    digitalWrite(RelePh, HIGH);
  }
}
void livelloSerbatoio() {
  display.setCursor(0, 53);
  display.print("Livello Serbatoio :");
  display.print(livello);
  display.display();

  Serial.println("Livello Serbatoio :"); 
  Serial.print(livello); 
  Serial.println(" ");
  delay(600);

  if (livello < 1500) {
    digitalWrite(ReleLivello, LOW);
  }
  else if (livello > 2000) {
    digitalWrite(RelePh, HIGH);
    digitalWrite(ReleLivello, HIGH);
  }
  else {
    digitalWrite(ReleLivello, HIGH);
  }
}



Grazie ancora........

ciao

#include <SPI.h>  //SPI, SD SPI, OLED SPI 
#include <Wire.h> //I2C, RTC DS1307 I2C, OLED I2C

//--------------------------OLED I2C

#include "SSD1306Ascii.h"
#include "SSD1306AsciiWire.h"
#define I2C_ADDRESS 0x3C  // 0X3C+SA0 - 0x3C or 0x3D
#define RST_PIN -1        // Define proper RST_PIN if required
SSD1306AsciiWire oled;    //nome display

io uso questo per il mio oled
il tuo e' SPI o I2C?

ciao, il mio utilizza protocollo i2c, ad ogni modo ho risolto il problema : in pratica lo schermo deve essere alimentato direttamente dai 3.3/5v di arduino e non con alimentazione esterna come facevo io