#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#include <Wire.h>
#include <SPI.h>
#define SCREEN_HEIGHT 64
#define SCREEN_WIDTH 128
#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
int vp;
float vpp;
void setup() {
pinMode(A0, INPUT);
Serial.begin(9600);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println("L'écran n'est pas connecté");
while (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
delay(10);
}
}
display.clearDisplay();
}
void loop() {
vp = analogRead(A0);
vpp = (vp / 1023.0) * 5.0; // Conversion en volts (0-5V)
// Effacer l'affichage précédent
display.clearDisplay();
// Afficher la tension
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(10, 0);
display.print("Tension : ");
display.print(vpp, 1);
display.print(" V");
// Dessiner la jauge proportionnelle
int barWidth = map(vp, 0, 1023, 0, SCREEN_WIDTH - 20); // Mappe la valeur sur la largeur de l'écran, avec un décalage
display.fillRect(10, 20, barWidth, 10, SSD1306_WHITE);
// Dessiner un cadre autour de la jauge
display.drawRect(10, 20, SCREEN_WIDTH - 20, 10, SSD1306_WHITE); // Encadrer la jauge
// Afficher la valeur binaire
display.setCursor(0, 40); // Déplacé sous la jauge
display.print("Motbinaire:");
printBinaire();
// Mettre à jour l'affichage
display.display();
}
void printBinaire() {
for (int i = 9; i >= 0; i--) {
if (vp & (1 << i)) {
display.print('1');
} else {
display.print('0');
}
}
}