Следующим шагом необходимо указать тип используемого в проекте дисплея. Для этого достаточно в файле Adafruit_SSD1306-master\Adafruit_SSD1306.h раскомментировать соответствующую строку. Всего доступны 3 варианта, например для дисплея 128х64 код будет выглядеть так:
#define SSD1306_128_64
// #define SSD1306_128_32
// #define SSD1306_96_16
Теперь все готово, и можно выводить информацию на дисплей. Перезапускаем Arduino IDE, чтобы загрузились новые библиотеки. В качестве примера рассмотрим несложный код.
#include
Adafruit_SSD1306 display(0);
static const unsigned char PROGMEM logo16_glcd_bmp[] = {
B00000000, B11000000,
B00000001, B11000000,
B00000001, B11000000,
B00000011, B11100000,
B11110011, B11100000,
B11111110, B11111000,
B01111110, B11111111,
B00110011, B10011111,
B00011111, B11111100,
B00001101, B01110000,
B00011011, B10100000,
B00111111, B11100000,
B00111111, B11110000,
B01111100, B11110000,
B01110000, B01110000,
B00000000, B00110000
};
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("Hello, world!");
display.drawBitmap(2, 14, logo16_glcd_bmp, 16, 16, 1);
display.drawLine(0, 40, 128, 40, WHITE);
display.drawLine(10, 50, 118, 50, WHITE);
display.display();
}
void loop() {
}
Разберем код подробнее.
Переменная display хранит объект, содержащий все методы для работы с дисплеем. Далее объявляется битовый массив PROGMEM logo16_glcd_bmp, который, как нетрудно догадаться, хранит непосредственно изображение - один бит соответствует одному пикселу. В функции setup происходит инициализация дисплея, там же указывается адрес 0xC3, который мы нашли ранее. Затем вызываются функции clearDisplay, setTextSize, println, назначение которых понятно из названия. При вызове всех этих функций данные заносятся в промежуточный блок памяти. И лишь при вызове метода display() эти данные реально переносятся на экран. Такая технология называется “двойной буфер”, она позволяет избежать мерцания при обновлении экрана.
Результат - загружаем программу в Arduino и видим запрограммированную нами картинку.
Самостоятельная работа: Вывести на экран переменную в различных форматах. Для этого воспользоваться функцией println, аналог которой для последовательного порта выглядит так:
int value = 24;
Serial.println(value);
Serial.println(value, DEC);
Serial.println(value, HEX);
Serial.println(value, OCT);
Serial.println(value, BIN);
Дополнительно можно вывести значения с датчика температуры, который мы рассматривали в предыдущей главе.