/**
Arduino Uno PIND register demo
https://wokwi.com/arduino/projects/314168546236039745
Copyright (C) 2021, Uri Shaked.
*/
// подключение OLED
// дефайн перед подключением либы - использовать microWire (лёгкая либа для I2C)
//#define USE_MICRO_WIRE
// дефайн перед подключением либы - скорость SPI
//#define OLED_SPI_SPEED 4000000ul
#include <GyverOLED.h>
// инициализация:
// GyverOLED<модель, буфер, интерфейс, CS, DC, RST> oled;
// "по умолчанию" - можно не указывать
// модель дисплея:
// SSD1306_128x32
//SSD1306_128x64
// SSH1106_128x64 (ТОЛЬКО С БУФЕРОМ)
// буфер:
// OLED_NO_BUFFER (без буфера)
// OLED_BUFFER (с буфером на стороне МК) - по умолчанию
// интерфейс:
// OLED_I2C - по умолчанию
// OLED_SPI (указать пины CS, DC, RST/RES)
// примеры:
//GyverOLED<SSD1306_128x32, OLED_BUFFER> oled;
//GyverOLED<SSD1306_128x32, OLED_NO_BUFFER> oled;
//GyverOLED<SSD1306_128x64, OLED_BUFFER> oled;
GyverOLED<SSD1306_128x64, OLED_NO_BUFFER> oled;
//GyverOLED<SSD1306_128x64, OLED_BUFFER, OLED_SPI, 8, 7, 6> oled;
//GyverOLED<SSH1106_128x64> oled;
// для I2C можно передать адрес: GyverOLED oled(0x3C);
// битмап создан в ImageProcessor https://github.com/AlexGyver/imageProcessor
// с параметрами вывода vertical byte (OLED)
//const uint8_t bitmap_32x32[] PROGMEM = {
// 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xF0, 0x70, 0x70, 0x30, 0x30, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF0, 0x70, 0x30, 0x30, 0x20, 0x00, 0x00,
//0x00, 0x30, 0x78, 0xFC, 0x7F, 0x3F, 0x0F, 0x0F, 0x1F, 0x3C, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x80, 0x80, 0x40, 0xE0, 0xF0, 0xF8, 0xFC, 0xFF, 0x7F, 0x33, 0x13, 0x1E, 0x1C, 0x1C, 0x0E, 0x07, 0x00,
//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0
//--------
int pinD[] = {0, 1, 2, 3, 4, 5,}; // definition of pins for the switch. for PIND you need to use pins 0 ... 7.
//-----
void setup() {
int size = sizeof(pinD) / sizeof(int);// determining the number of array elements.
for (int i = 0; i < size; i++) { //
pinMode(pinD[i], INPUT_PULLUP); // setting the pins as inputs and tightening the built-in resistor.
}
//Serial.begin(9600);
oled.init(); // инициализация
}
void loop() {
// --------------------------
//oled.clear(); // очистить дисплей (или буфер)
//oled.update(); // обновить. Только для режима с буфером! OLED_BUFFER
// --------------------------
//oled.home();
oled.setCursor(5, 1); // курсор в (пиксель X, строка Y)
oled.setScale(2); // курсор в 0,0
//oled.autoPrintln(true); // автоматически переносить текстxt(true); // инвертируй текст!
//oled.invertText(true); // инвертируй текст!
// --------------------------
// СЕРВИС
// oled.setContrast(10); // яркость 0..255
//oled.setPower(true); // true/false - включить/выключить дисплей
//oled.flipH(true); // true/false - отзеркалить по горизонтали
//oled.flipV(true); // true/false - отзеркалить по вертикали
//oled.isEnd(); // возвращает true, если дисплей "кончился" - при побуквенном выводе
// --------------------------
//oled.clear();
oled.print("Hello!"); // печатай что угодно: числа, строки, float, как Serial!
oled.print(PIND);
//oled.update();
delay(2000);
//Serial.print(PIND); // display the value in the monitor.
//delay(1000);
}