#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH110X.h>
// Инициализация OLED дисплея (замените на ваш адрес, если необходимо)
#define SH1107_I2C_ADDRESS 0x3C // Убедитесь, что адрес правильный
Adafruit_SH1107 display(128, 64, &Wire, -1); // -1 для RST, если не используется
// Пины для датчиков
const int sensorPins[] = {A0, A1, A2, A3, A6};
const int numSensors = sizeof(sensorPins) / sizeof(sensorPins[0]);
// Константы для преобразования
const float V_MAX = 5.0; // Максимальное напряжение на выходе (после делителя)
const float BAR_MAX = 10; // Максимальное давление в барах (1 бар = 14.5038 psi)
// Обозначения для датчиков
const char* sensorLabels[] = {"FL", "FR", "RL", "RR", "Res"};
void setup() {
display.begin(SH1107_I2C_ADDRESS, &Wire); // Инициализация дисплея с адресом
display.clearDisplay(); // Очистка дисплея
display.setTextSize(1); // Установка размера текста
display.setTextColor(1); // Установка цвета текста
display.setCursor(0, 0);
display.println("Pressure Sensors");
display.display();
}
void loop() {
displayReadings();
delay(1000); // Обновлять каждую секунду
}
void displayReadings() {
display.clearDisplay(); // Очистка дисплея
display.setCursor(0, 0); // Установка курсора в начало
for (int i = 0; i < numSensors; i++) {
float voltage = analogRead(sensorPins[i]) * (V_MAX / 1023.0); // Преобразование в напряжение
float pressure = (voltage / V_MAX) * BAR_MAX; // Преобразование в давление в барах
display.setCursor(0, (i + 1) * 10); // Установка курсора для каждой строки
display.print(sensorLabels[i]); // Выводим обозначение датчика
display.print(": ");
display.print(pressure, 1); // Один знак после запятой
display.print(" bar"); // Единицы измерения
}
display.display(); // Обновление дисплея
}
Loading
grove-oled-sh1107
grove-oled-sh1107