/*********** Program sterowania wyswitlaczem OLED SSD1306 128x64 pikseli pomiar A0 odczyt polozenia potencjometru w % ***********/ #include #include #include #define SCREEN_WIDTH 128 // wyswietlacz OLED dlugosc w pikselach #define SCREEN_HEIGHT 64 // wyswietlacz OLED wysokosc w pikselach // Deklaracja dla wyswietlacza SSD1306 polaczenego do I2C (SDA, SCL pins) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); int sensorPin = A0; // wybor portu ADC potencjometru - A0 int ledPin = 13; // wybór pin LED int sensorValue = 0; // zmienna zapisujaca wartosc A0 void setup() { pinMode(sensorPin, INPUT); pinMode(ledPin,OUTPUT); digitalWrite(ledPin,LOW); Serial.begin(115200); if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Adres 0x3D dla OLED 128x64 Serial.println(F("SSD1306 allocation failed")); for(;;); } display.clearDisplay(); display.setTextSize(1); // Rozmiar normaly 1:1 czcionki display.setTextColor(SSD1306_WHITE); // ustawianie czcioni na kolor bialy display.setCursor(0,0); // ustawnienie kursora na gora-lewy rog display.println("SSD1306 Wartosc A0"); display.setCursor(74,34); //kursor na pozyjcje 74 od lewej i 34 of gory display.println("Obrot Pot"); display.setTextSize(2); // ustawianie czcionki podwojniej wielkosci display.setTextColor(SSD1306_WHITE); display.setCursor(80,5); display.drawRect(0, 10, 67, 35, SSD1306_WHITE); // box wartosci A0 display.display(); } int align2(int q){ // Space in 100s and 10s if (q < 100) {display.print(" ");} if (q < 10) {display.print(" ");} } int align3(int q){ // Space in 1000s if (q < 1000) {display.print(" ");} align2(q); } void loop() { sensorValue = analogRead(sensorPin); // odczyt wartosci portu A0 int perCent = float(sensorValue * 100.0/1018); display.drawLine(0,47,0,62, SSD1306_WHITE); display.fillRect(1, 50, perCent, 10, SSD1306_WHITE); display.setTextSize(1); // ustawianie czcinki normalej 1:1 display.setTextColor(SSD1306_WHITE); // ustawianie koloru czcioni na biala display.setCursor(102,50); align2(perCent); display.print(perCent); display.println("%"); display.fillRect(1, 11, 65, 33, SSD1306_BLACK); // box o tle czarnym display.setCursor(10,20); display.setTextSize(2); align3(sensorValue); display.println(sensorValue); display.setTextSize(1); display.display(); delay(100); display.fillRect(1, 50, perCent, 10, SSD1306_BLACK); display.setTextColor(SSD1306_BLACK); display.setCursor(102,50); align2(perCent); display.print(perCent); display.println("%"); }