/*
Тестовая программка возможностей ардуино по работе с OLED 0,96" экранчиком
Измерения постоянного напряжения и управления яркостью светодиода с помощью ШИМ

Экран подключен по i2c - +5, земля и на А4, А5 выводы
Переменный резистор 10К имитирует изменение напряжения на входе, красный +, черный минус, желтый на А0
Светодиод подключен через резистор 220 Ом на D11
*/
#include <OLED_I2C.h> // Библиотека простой рботы с экрнчиком

OLED  myOLED(SDA, SCL); // Remember to add the RESET pin if your display requires it...
int ledPin = 11;      // светодиод подключен к цифровому контакту 11 шим

extern uint8_t SmallFont[];
// extern uint8_t MediumNumbers[];
extern uint8_t BigNumbers[];

// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
  // Serial.begin(9600); // test serial output

  pinMode(ledPin, OUTPUT);   // объявляем  вывод ШИМ как выход:
 
  if(!myOLED.begin(SSD1306_128X64))
    while(1);   // In case the library failed to allocate enough RAM for the display buffer...
   
  myOLED.setFont(SmallFont);
}

// the loop routine runs over and over again forever:
void loop() {
  myOLED.setFont(SmallFont);
  myOLED.print("VOLTAGE", CENTER, 10);
 
  // read the input on analog pin 0:
  int sensorValue = analogRead(A0);

  analogWrite(ledPin, sensorValue / 4);// Значения AnalogRead варьируются от 0 до 1023, значения AnalogWrite от 0 до 255.

  myOLED.setFont(BigNumbers);
  myOLED.printNumF(float(sensorValue * 0.0048), 2, CENTER, 28);
  myOLED.update();
 
  // Serial.println(sensorValue * 0.0048);
  delay(100);  // delay in between reads for stability
  // myOLED.clrScr(); // test serial output
}