Скачайте и установите Adafruit SH1106 и Adafruit-GFX-Library в папку libraries (arduino-1.xx.xx\libraries)

Основные функции для работы с дисплеем

  • begin(SH1106_SWITCHCAPVCC, 0x3C) — Инициализация дисплея
  • clearDisplay() — очистить кадр.
  • display() — отрисовать кадр (выводит изображение на дисплей).
  • setTextSize(i) — установить размер текста(i-число).
  • setTextColor(color) — установить цвет текста (BLACK, WHITE).
  • print(s) — написать текст, число и т.д.(s-число, строка и т.д.).
  • println(s) — тоже самое что и print(s), но переводит курсор на новую строку (замена Enter на клавиатуре).
  • setRotation(i) — поворот дисплея на 90,180,270,360 градусов(i — число от 0 до 3)
  • drawBitmap (x, y, *bitmap, w, h, color) — рисует картинку(bitmap) в координатах x;y, ширины w, высоты h, цветом color.
  • drawPixel(x,y,color) закрасить пиксель в координатах x;y выбранным цветом (WHITE, BLACK).

При использовании print и println как правило данные записываются в RAM память. Что бы принудительно записать данные в FLASH память используйте макрос F().
Например:

display.println F("Hello, world!");

Простой вывод текста на дисплей

#include 
#include 
#include 

#define OLED_RESET 4
Adafruit_SH1106 display(OLED_RESET);//Создаём объект дисплей

void setup()
{
  display.begin(SH1106_SWITCHCAPVCC, 0x3C);//Инициализация дисплея
  display.clearDisplay();//Очистка буфера
  display.display();//Очистка буфера
  display.setCursor(0,0);//Устанавливаем курсор в левый-верхний угол
  display.setTextSize(1);//Установка размера шрифта
  display.setTextColor(WHITE);//Установка цвета текста
  display.println("Hello, world!");//Пишем на дисплей     
  display.display();//Отображаем то что написали
}

Пример динамического изменения кадров

#include 
#include 
#include 

#define OLED_RESET 4
Adafruit_SH1106 display(OLED_RESET);//Создаём объект дисплей
long counter = 0;//Переменная счётчик
void setup()
{
  display.begin(SH1106_SWITCHCAPVCC, 0x3C);//Инициализация дисплея
  display.clearDisplay();//Очистка буфера
  display.display();//Очистка буфера
  display.setTextSize(1);//Установка размера шрифта
  display.setTextColor(WHITE);//Установка цвета текста  
}
void loop()
{
 display.clearDisplay();//Начинаем заново рисовать кадр
 display.setCursor(0,0);//Устанавливаем курсор в левый-верхний угол
 display.print("Frame: ");//Пишем на кадре
 display.println(counter);//Пишем на кадре   
 display.display();//Выводим кадр на дисплей
 counter++;
}

Мы добавили счётчик кадров и выводим его каждый раз.

Пример использования дисплея и I2C сканера.

#include 
#include 
#include 

#define OLED_RESET 4
Adafruit_SH1106 display(OLED_RESET);//Создаём объект дисплей

void setup()
{
  display.begin(SH1106_SWITCHCAPVCC, 0x3C);//Инициализация дисплея
  display.clearDisplay();//Очистка дисплея
  display.display();
  display.setTextSize(1);//Установка размера шрифта
  display.setTextColor(WHITE);//Установка цвета текста
}

void loop()
{
  byte error, address;//Переменные для хранения ошибок и подсчёта адресов
  int nDevices;//Переменная для подсчёта количества устройств
  display.setCursor(0, 0);//Устанавливаем курсор в начало
  display.println("Scanning...");//Начинаем сканирование
  nDevices = 0;
  for (address = 1; address < 127; address++ )
  {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0)
    {
      display.print("I2C device found at address 0x");
      if (address < 16)
        display.print("0");
      display.print(address, HEX);
      nDevices++;
    }
    else if (error == 4)
    {
      display.print("Unknown error at address 0x");
      if (address < 16)
        display.print("0");
      display.println(address, HEX);
    }
  }
  if (nDevices == 0)
    display.println("No I2C devices found");
  else
    display.println("done");
  display.display();
  delay(5000);           // Ждём 5 секунд перед следующим сканированием
  display.clearDisplay();
}