#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 wyswietlacz(128, 64, &Wire);
const byte mikrofon = A0; // poziom dźwięku
const byte potencjometr = A1; // położenie potencjometru
const byte termometr = A2; // temperatura
const byte fototranzystor = A3; // poziom światła
void setup() {
// Zasilanie części wyświetlającej z pokładowego źródła napięcia, adres I2C
wyswietlacz.begin(SSD1306_SWITCHCAPVCC, 0x3C);
// Wybierz biały kolor znaków (widoczny)
wyswietlacz.setTextColor(1);
// Wyczyść wyświetlacz
wyswietlacz.clearDisplay();
// Ustaw kursor w wybranym miejscu
wyswietlacz.setCursor(0, 0);
// Załaduj tekst do wyświetlenia
wyswietlacz.print(F("POTENCJOMETR"));
// Rysuj prostokąt
wyswietlacz.drawRect(0, 8, 128, 5, 1);
wyswietlacz.setCursor(0, 16);
wyswietlacz.print(F("FOTOTRANZYSTOR"));
wyswietlacz.drawRect(0, 24, 128, 5, 1);
wyswietlacz.setCursor(0, 32);
wyswietlacz.print(F("MIKROFON"));
wyswietlacz.drawRect(0, 40, 128, 5, 1);
wyswietlacz.setCursor(0, 48);
wyswietlacz.print(F("TERMOMETR"));
wyswietlacz.drawRect(0, 56, 128, 5, 1);
// Wyświetl załadowaną grafikę
wyswietlacz.display();
}
void loop() {
// Zmierz wartość położenia potencjometru
int potencjometrWartosc = analogRead(potencjometr);
// Rysuj prostokąt, który wymaże poprzedni wynik
wyswietlacz.fillRect(104, 0, 23, 7, 0);
// Ustaw kursor w wybranym miejscu
wyswietlacz.setCursor(104, 0);
// Wyświetl zmierzoną wartość
wyswietlacz.print(potencjometrWartosc);
// Rysuj prostokąt, który wymaże poprzedni wskaźnik
wyswietlacz.fillRect(1, 9, 126, 3, 0);
// Rysuj prostokąt - wskaźnik
wyswietlacz.fillRect(1, 9, map(potencjometrWartosc, 0, 1023, 0, 126), 3, 1);
// Zmierz poziom jasności
int fototranzystorWartosc = analogRead(fototranzystor);
wyswietlacz.fillRect(104, 16, 23, 7, 0);
wyswietlacz.setCursor(104, 16);
wyswietlacz.print(fototranzystorWartosc);
wyswietlacz.fillRect(1, 25, 126, 3, 0);
wyswietlacz.fillRect(1, 25, map(fototranzystorWartosc, 0, 1023, 0, 126), 3, 1);
// Zmierz poziom dźwięku
int mikrofonWartosc = analogRead(mikrofon);
wyswietlacz.fillRect(104, 32, 23, 7, 0);
wyswietlacz.setCursor(104, 32);
wyswietlacz.print(mikrofonWartosc);
wyswietlacz.fillRect(1, 41, 126, 3, 0);
wyswietlacz.fillRect(1, 41, map(mikrofonWartosc, 0, 1023, 0, 126), 3, 1);
// Zmierz temperaturę
int termometrWartosc = analogRead(termometr);
wyswietlacz.fillRect(104, 48, 23, 7, 0);
wyswietlacz.setCursor(104, 48);
// Wyświetl zmierzoną wartość z dokładnością do jednej cyfry po przecinku
wyswietlacz.print(termometrWartosc * 0.125 - 22, 1);
wyswietlacz.fillRect(1, 57, 126, 3, 0);
// Rysuj wskaźnik dla przedziału +15..+30 stopni
wyswietlacz.fillRect(1, 57, map(termometrWartosc, 296, 416, 0, 126), 3, 1);
// Wyświetl załadowaną grafikę
wyswietlacz.display();
}