// ГРАФИЧЕСКИЙ OLED ДИСПЛЕЙ 128х64 (I2C)
#include <iarduino_OLED.h> // Библиотека
iarduino_OLED myOLED(0x3C); // Объект (адрес 0x3C)
//iarduino_OLED myOLED(0x3D); // (0x3D для Proteus)
extern uint8_t SmallFontRus[]; // Шрифт текста
extern uint8_t MediumFontRus[]; // Шрифт текста
extern uint8_t MediumNumbers[]; // Шрифт цифр
extern uint8_t BigNumbers[]; // Шрифт цифр
extern uint8_t MegaNumbers[]; // Шрифт цифр
extern uint8_t Img_Logo[]; // Картинка
extern uint8_t Img_Alarm[]; // Картинка
extern uint8_t Img_Antenna[]; // Картинка
extern uint8_t Img_Arrow_down[]; // Картинка
extern uint8_t Img_Arrow_left[]; // Картинка
extern uint8_t Img_Arrow_right[]; // Картинка
extern uint8_t Img_Arrow_up[]; // Картинка
extern uint8_t Img_Battery_0[]; // Картинка
extern uint8_t Img_Battery_1[]; // Картинка
extern uint8_t Img_Battery_2[]; // Картинка
extern uint8_t Img_Battery_3[]; // Картинка
extern uint8_t Img_Battery_charging[]; // Картинка
extern uint8_t Img_Battery_low[]; // Картинка
extern uint8_t Img_BigBattery_low[]; // Картинка
extern uint8_t Img_Bluetooth[]; // Картинка
extern uint8_t Img_Call[]; // Картинка
extern uint8_t Img_Call_in[]; // Картинка
extern uint8_t Img_Call_out[]; // Картинка
extern uint8_t Img_Check[]; // Картинка
extern uint8_t Img_Checkbox_off[]; // Картинка
extern uint8_t Img_Checkbox_on[]; // Картинка
extern uint8_t Img_Dynamic[]; // Картинка
extern uint8_t Img_Dynamic_off[]; // Картинка
extern uint8_t Img_Dynamic_on[]; // Картинка
extern uint8_t Img_Level_1[]; // Картинка
extern uint8_t Img_Level_2[]; // Картинка
extern uint8_t Img_Level_3[]; // Картинка
extern uint8_t Img_Level_4[]; // Картинка
extern uint8_t Img_Light[]; // Картинка
extern uint8_t Img_Melody[]; // Картинка
extern uint8_t Img_Message[]; // Картинка
extern uint8_t Img_Netlevel_1[]; // Картинка
extern uint8_t Img_Netlevel_2[]; // Картинка
extern uint8_t Img_Netlevel_3[]; // Картинка
extern uint8_t Img_Radio_off[]; // Картинка
extern uint8_t Img_Radio_on[]; // Картинка
extern uint8_t Img_Settings[]; // Картинка
const uint8_t myImageInRAM[] =
{ 9, 8, // ЛЕВО
B00111100, // #### // = 0x3C
B01000010, // # # // = 0x42
B10010001, // # # # // = 0x91
B10100101, // # # # # // = 0xA5
B10100001, // НИЗ # # # ВЕРХ // = 0xA1
B10100101, // # # # # // = 0xA5
B10010001, // # # # // = 0x91
B01000010, // # # // = 0x42
B00111100}; // #### // = 0x3C
const uint8_t myImageInROM[] PROGMEM =
{9, 8, 0x3C, 0x42, 0x91, 0xA5, 0xA1, 0xA5, 0x91, 0x42, 0x3C};
void setup() {
myOLED.begin(); // Инициируем работу с дисплеем
myOLED.setCoding(TXT_UTF8);
//myOLED.autoUpdate(false);
// Запрещаем вывод данных.
// Информация выводится после обращения к update()
}
void loop() {
// 1. Вывод Больших букв
myOLED.clrScr(); // Чистим экран
//myOLED.update();
myOLED.setFont(MediumFontRus); // Указываем шрифт
myOLED.print("БОЛЬШИЕ:", 0, 15);
myOLED.setFont(SmallFontRus); // Указываем шрифт
myOLED.print("ABCDEFGHIJKLM", OLED_C, 24);
myOLED.print("NOPQRSTUVWXYZ", OLED_C, 33);
myOLED.print("АБВГДЕЁЖЗИЙКЛМНОП", OLED_C, 48);
myOLED.print("РСТУФХЦЧШЩЪЫЬЭЮЯ", OLED_C, 57);
//myOLED.update();
delay(3000); // Ждём 3 секунды
// 2. Вывод Маленьких букв
myOLED.clrScr(); // Чистим экран
myOLED.setFont(MediumFontRus); // Указываем шрифт
myOLED.print("МАЛЕНЬКИЕ:", 0, 15);
myOLED.setFont(SmallFontRus); // Указываем шрифт
myOLED.print("abcdefghijklm", OLED_C, 24);
myOLED.print("nopqrstuvwxyz", OLED_C, 33);
myOLED.print("абвгдеёжзийклмноп", OLED_C, 48);
myOLED.print("рстуфхцчшщъыьэюя", OLED_C, 57);
delay(3000); // Ждём 3 секунды
// 3. Вывод Специальных символов
myOLED.clrScr(); // Чистим экран
myOLED.setFont(MediumFontRus); // Указываем шрифт
myOLED.print("СИМВОЛЫ:", 0, 15);
myOLED.setFont(SmallFontRus); // Указываем шрифт
myOLED.print("{}[]()<>?!#$%&*", OLED_C, 24);
myOLED.print("~`'\"^_-+=,.:;|/", OLED_C, 48);
delay(3000); // Ждём 3 секунды
// 4. Вывод Цифр
myOLED.clrScr(); // Чистим экран
myOLED.setFont(SmallFontRus); // Указываем шрифт
myOLED.print("ЦИФРЫ:", 0, 7);
myOLED.print("MediumNumbers", 0, 15);
myOLED.setFont(MediumNumbers); // Указываем шрифт
myOLED.print("0123456789", 0, 40);
delay(3000); // Ждём 3 секунды
myOLED.clrScr(); // Чистим экран
myOLED.setFont(SmallFontRus); // Указываем шрифт
myOLED.print("ЦИФРЫ:", 0, 7);
myOLED.print("BigNumbers", 0, 15);
myOLED.setFont(BigNumbers); // Указываем шрифт
myOLED.print("012345678", 0, 45);
delay(3000); // Ждём 3 секунды
myOLED.clrScr(); // Чистим экран
myOLED.setFont(SmallFontRus); // Указываем шрифт
myOLED.print("ЦИФРЫ:", 0, 7);
myOLED.print("MegaNumbers", 0, 15);
myOLED.setFont(MegaNumbers); // Указываем шрифт
myOLED.print("01234", 0, 55);
delay(3000); // Ждём 3 секунды
// 5. Вывод Цифр в разной системе счисления
myOLED.clrScr(); // Чистим экран
myOLED.setFont(MediumFontRus); // Указываем шрифт
myOLED.print("СИСТЕМЫ:", 0, 15);
myOLED.setFont(SmallFontRus); // Указываем шрифт
// Целое положительное число
myOLED.print(123456789, 0, 24);
// Целое отрицательное число
myOLED.print(-123456789, 0, 32);
// Число в 16-ричной системе счисления
myOLED.print(123456789, 0, 40, HEX);
// Число в 8-ричной системе счисления
myOLED.print(123456789, 0, 48, OCT);
// Число в 2-ичной системе счисления
myOLED.print(123, 0, 56, BIN);
// Число в 12-ричной системе счисления
myOLED.print(123, 0, 64, 12);
// Число с плавающей точкой (по умолчанию 2 знака)
myOLED.print(-123.456789, 0, 72);
// Число с плавающей точкой, указываем 3 знака
myOLED.print(123.456789, 0, 80, 3);
delay(3000); // Ждём 3 секунды
// 6. Вывод текста крупным шрифтом
myOLED.setFont(MediumFontRus);
myOLED.clrScr(); // Чистим экран
myOLED.print(F("iArduino"), 15, 39);
delay (500);
myOLED.print(F("ABC"), 0, 15);
delay (500);
myOLED.print(F("XYZ"), 92, 63);
delay (500);
myOLED.print(F("abc"), 92, 15);
delay (500);
myOLED.print(F("xyz"), 0, 63);
delay (3000); // Ждём 3 секунды
myOLED.clrScr(); // Чистим экран
myOLED.print(F("iАрдуино"), OLED_C, 39);
delay (500);
myOLED.print(F("АБВ"), OLED_L, 15);
delay (500);
myOLED.print(F("ЭЮЯ"), OLED_R, 63);
delay (500);
myOLED.print(F("абв"), OLED_R, 15);
delay (500);
myOLED.print(F("эюя"), OLED_L, 63);
delay (3000); // Ждём 3 секунды
myOLED.clrScr(); // Чистим экран
myOLED.print(77, 0, 23);
delay (500);
myOLED.print("+");
delay (500);
myOLED.print(77);
delay (500);
myOLED.print("=");
delay (500);
myOLED.print(77+77);
delay (500);
myOLED.print(77, 0, 55, HEX);
delay (500);
myOLED.print("+");
delay (500);
myOLED.print(77, OLED_N, OLED_N, HEX);
delay (500);
myOLED.print("=");
delay (500);
myOLED.print(77+77, OLED_N, OLED_N, HEX);
delay (3000); // Ждём 3 секунды
myOLED.clrScr(); // Чистим экран
myOLED.print(F("{}[]()<>?!"), OLED_C, 15);
myOLED.print(F("#$%&*~`'\"^"), OLED_C, 39);
myOLED.print(F("_-+=,.:;|/"), OLED_C, 63);
delay (3000); // Ждём 3 секунды
// 7. Вывод текста в разных кодировках
myOLED.setFont(SmallFontRus);
// Вывод текста в кодировке UTF-8:
myOLED.clrScr(); // Чистим экран
myOLED.print("UTF8", 0, 7);
myOLED.setCoding(TXT_UTF8);
myOLED.print("Ардуино iArduino", OLED_C, 39);
delay (3000); // Ждём 3 секунды
// Вывод текста в кодировке CP866:
myOLED.clrScr(); // Чистим экран
myOLED.print("CP866", 0, 7);
myOLED.setCoding(TXT_CP866);
myOLED.print("Ардуино iArduino", OLED_C, 39);
delay (3000);
// Вывод текста в кодировке WINDOWS-1251:
myOLED.clrScr(); // Чистим экран
myOLED.print("WIN1251", 0, 7);
myOLED.setCoding(TXT_WIN1251);
myOLED.print("Ардуино iArduino", OLED_C, 39);
delay (3000); // Ждём 3 секунды
// Вывод текста по коду символов:
myOLED.clrScr(); // Чистим экран
myOLED.print("CODE", 0, 7);
myOLED.setCoding(false);
myOLED.print("\200\340\244\343\250\255\256 iArduino", OLED_C, 39);
myOLED.setCoding(TXT_UTF8);
delay (3000); // Ждём 3 секунды
// 8. Графическое отображение фигур
myOLED.clrScr(); // Чистим экран
// Квадрат, закрасить (true), цвет белый (true)
myOLED.drawRect (10, 20, 50, 60, true, true);
// Квадрат, закрасить (true), цвет черный (false)
myOLED.drawRect (15, 25, 45, 55, true, false);
// Линия, цвет черный (false)
myOLED.drawLine (10, 20, 50, 60, false);
// Линия, цвет черный (false)
myOLED.drawLine (10, 60, 50, 20, false);
// Круг, не закрасить (false), цвет белый (true)
myOLED.drawCircle (30, 40, 10, false, true);
// Круг, закрасить (true), цвет белый (true)
myOLED.drawCircle (30, 40, 5, true, true);
// Точка, цвет черный (false)
myOLED.drawPixel (30, 40, false);
// Квадрат, не закрасить (false), цвет белый (true)
myOLED.drawRect (60, 20, 100, 60, false, true);
// Квадрат, закрасить (true)), цвет белый (true)
myOLED.drawRect (65, 25, 95, 55, true, true);
// Линия, цвет белый (true)
myOLED.drawLine (60, 20, 100, 60, true);
// Линия, цвет белый (true)
myOLED.drawLine (60, 60, 100, 20, true);
// Круг, не закрасить (false), цвет черный (false)
myOLED.drawCircle (80, 40, 10, false, false);
// Круг, закрасить (true), цвет черный (false)
myOLED.drawCircle (80, 40, 5, true, false);
// Точка, цвет белый (true)
myOLED.drawPixel (80, 40, true );
delay(3000); // Ждём 3 секунды
// 9. Вывод картинок
myOLED.clrScr(); // Чистим экран
myOLED.setFont(MediumFontRus); // Указываем шрифт
myOLED.print("КАРТИНКИ:", 0, 15);
// Выводим Логотип iArduino
myOLED.drawImage(Img_Logo, 0, 31);
// Выводим Будильник
myOLED.drawImage(Img_Alarm, 30, 30);
// Выводим Антенна
myOLED.drawImage(Img_Antenna, 42, 30);
// Выводим Стрелка вниз
myOLED.drawImage(Img_Arrow_down, 55, 30);
// Выводим Стрелка влево
myOLED.drawImage(Img_Arrow_left, 66, 30);
// Выводим Стрелка вправо
myOLED.drawImage(Img_Arrow_right, 77, 30);
// Выводим Стрелка вверх
myOLED.drawImage(Img_Arrow_up, 88, 30);
// Выводим Батарейка с зарядом 0
myOLED.drawImage(Img_Battery_0, 0, 41);
// Выводим Батарейка с зарядом 1
myOLED.drawImage(Img_Battery_1, 15, 41);
// Выводим Батарейка с зарядом 2
myOLED.drawImage(Img_Battery_2, 30, 41);
// Выводим Батарейка с зарядом 3
myOLED.drawImage(Img_Battery_3, 45, 41);
// Выводим Батарейка заряжается
myOLED.drawImage(Img_Battery_charging, 60, 41);
// Выводим Батарейка разряжена
myOLED.drawImage(Img_Battery_low, 75, 41);
// Выводим Батарейка разряжена
myOLED.drawImage(Img_BigBattery_low, 100, 41);
// Выводим Значок Bluetooth
myOLED.drawImage(Img_Bluetooth, 0, 52);
// Выводим Звонок вызова
myOLED.drawImage(Img_Call, 7, 52);
// Выводим Входящий звонок
myOLED.drawImage(Img_Call_in, 17, 52);
// Выводим Исходящий звонок
myOLED.drawImage(Img_Call_out, 27, 52);
// Выводим Галочка
myOLED.drawImage(Img_Check, 37, 52);
// Выводим Галочка
myOLED.drawImage(Img_Checkbox_off, 46, 52);
// Выводим Галочка
myOLED.drawImage(Img_Checkbox_on, 56, 52);
// Выводим Динамик
myOLED.drawImage(Img_Dynamic, 66, 52);
// Выводим Динамик выключен
myOLED.drawImage(Img_Dynamic_off, 76, 52);
// Выводим Динамик включен
myOLED.drawImage(Img_Dynamic_on, 88, 52);
// Выводим Свет
myOLED.drawImage(Img_Light, 100, 52);
// Выводим Звонок мелодии
myOLED.drawImage(Img_Melody, 111, 52);
// Выводим Сообщение (конверт)
myOLED.drawImage(Img_Message, 117, 52);
// Выводим Уровень приёма 1 (низкий)
myOLED.drawImage(Img_Level_1, 0, 63);
// Выводим Уровень приёма 2 (ниже среднего)
myOLED.drawImage(Img_Level_2, 13, 63);
// Выводим Уровень приёма 3 (выше среднего)
myOLED.drawImage(Img_Level_3, 26, 63);
// Выводим Уровень приёма 4 (уверенный)
myOLED.drawImage(Img_Level_4, 39, 63);
// Выводим Уровень приёма сети 1 (ниже среднего)
myOLED.drawImage(Img_Netlevel_1, 52, 63);
// Выводим Уровень приёма сети 2 (средний)
myOLED.drawImage(Img_Netlevel_2, 62, 63);
// Выводим Уровень приёма сети 3 (выше среднего)
myOLED.drawImage(Img_Netlevel_3, 72, 63);
// Выводим Радио выключено
myOLED.drawImage(Img_Radio_off, 82, 63);
// Выводим Радио включено
myOLED.drawImage(Img_Radio_on, 92, 63);
// Выводим Значёк настроек
myOLED.drawImage(Img_Settings, 102, 63);
delay(10000); // Ждём 10 секунд
// 10. Вывод смайликов из массива
myOLED.clrScr(); // Чистим экран
myOLED.drawImage(myImageInRAM, 36, 27, IMG_RAM);
myOLED.drawImage(myImageInROM, 81, 27, IMG_ROM);
delay(3000); // Ждём 3 секунды
}