Bom dia, estou com algumas dúvidas, estou com o esp 32 LoRa, preciso mostrar 4 informações no display dele, só que estou tendo problemas, ele não limpa o display depois que acumula a informação.
segue o código:
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
/*
Defines do projeto
/
/ GPIO do módulo WiFi LoRa 32(V2) que o pino de comunicação do sensor está ligado. */
#define ADC1_0 36
#define ADC1_1 37
#define ADC1_2 38
#define ADC1_3 39
/* Endereço I2C do display /
#define OLED_ADDR 0x3c
/ distancia, em pixels, de cada linha em relacao ao topo do display */
#define OLED_LINE1 0
#define OLED_LINE2 10
#define OLED_LINE3 20
#define OLED_LINE4 30
#define OLED_LINE5 40
#define OLED_LINE6 50
#define OLED_LINE7 60
#define OLED_LINE8 70
/* Configuração da resolucao do display (este modulo possui display 128x64) */
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
//Tensão CA
float tensao;
float tensaoMaxima = 300.0;
//int ADC1_0 = 36;
//Tensão CC
float valorTensao;
float tensaoMaximaVolts = 200.0;
//int ADC1_1 = 37;
//Corrente Bateria
float valorCorrente;
float correnteMaxima = 30.0;
//int ADC1_2 = 38;
//Corrente Retificador
float valorReceber;
float voltsReceber = 30.0;
//int ADC1_3 = 39;
/* objeto do display */
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, 16);
void tensaoCA() {
tensao = (tensaoMaxima * analogRead(ADC1_0)) / 2;
tensao = map(tensao, 0, 340500.00, 0, 300.0);
display.clearDisplay();
display.setCursor(0, OLED_LINE1);
display.print("Tensao CA: ");
display.println(tensao);
display.display();
}
void tensaoCC() {
valorTensao = (tensaoMaximaVolts * analogRead(ADC1_1)) / 2;
valorTensao = map(valorTensao, 0, 229000.00, 0, 200.0 );
display.clearDisplay();
display.setCursor(0, OLED_LINE2);
display.print("Tensao CC: ");
display.println(valorTensao);
display.display();
}
void correnteBateria() {
valorCorrente = (correnteMaxima * analogRead(ADC1_2)) / 2;
valorCorrente = map(valorCorrente, 0, 34111, -30, 30);
display.clearDisplay();
display.setCursor(0, OLED_LINE3);
display.print("Bateria: ");
display.println(valorCorrente);
display.display();
}
void correnteRetificador() {
valorReceber = (voltsReceber * analogRead(ADC1_3)) / 2;
valorReceber = map(valorReceber, 0, 34110.00, 0, 30.0);
display.clearDisplay();
display.setCursor(0, OLED_LINE4);
display.print("Retificador: ");
display.println(valorReceber);
display.display();
}
void myDelay() {
delay(5000);
}
void setup() {
/* inicializa display OLED */
Wire.begin(4, 15);
if (!display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR ))
Serial.println(“Display OLED: falha ao inicializar”);
else
{
Serial.println(“Display OLED: inicializacao ok”);
/* Limpa display e configura tamanho de fonte */
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
}
}
void loop() {
// put your main code here, to run repeatedly:
tensaoCA();
tensaoCC();
correnteBateria();
correnteRetificador();
myDelay();
}