#include <SSD1306Ascii.h>
#include <SSD1306AsciiAvrI2c.h>
#include <JC_Button.h>
#define PIN_UP_BTN 2
#define PIN_DWN_BTN 3
// 0X3C+SA0 - 0x3C or 0x3D
#define I2C_ADDRESS 0x3C
SSD1306AsciiAvrI2c oled;
// Usare la lista di 24 font comporta errore per superamento spazio flash
// per questo c'è commented negli array.
const char* fontName[] = {
/*"Arial14",
"Arial_bold_14",
"Callibri11",
"Callibri11_bold",
"Callibri11_italic",
"Callibri15",
"Corsiva_12",
"fixed_bold10x15",
"font5x7",
"font8x8",
"Iain5x7",
"lcd5x7",
"Stang5x7",
"System5x7", commented */
"TimesNewRoman16",
"TimesNewRoman16_bold",
"TimesNewRoman16_italic",
"utf8font10x16",
"Verdana12",
"Verdana12_bold",
"Verdana12_italic",
"X11fixed7x14",
"X11fixed7x14B",
"ZevvPeep8x16"
};
const uint8_t* fontList[] = {
/*Arial14,
Arial_bold_14,
Callibri11,
Callibri11_bold,
Callibri11_italic,
Callibri15,
Corsiva_12,
fixed_bold10x15,
font5x7,
font8x8,
Iain5x7,
lcd5x7,
Stang5x7,
System5x7, commented */
TimesNewRoman16,
TimesNewRoman16_bold,
TimesNewRoman16_italic,
utf8font10x16,
Verdana12,
Verdana12_bold,
Verdana12_italic,
X11fixed7x14,
X11fixed7x14B,
ZevvPeep8x16
};
uint8_t nFont = sizeof(fontList)/sizeof(uint8_t*);
Button upBtn(PIN_UP_BTN);
Button dwnBtn(PIN_DWN_BTN);
uint8_t fontIndex = 0;
uint8_t oldFontIndex = nFont;
void setup() {
upBtn.begin();
dwnBtn.begin();
Serial.begin(115200);
oled.begin(&Adafruit128x64, I2C_ADDRESS);
/*for (uint8_t i = 0; i < nFont; i++) {
oled.setFont(System5x7);
oled.clear();
Serial.println(fontName[i]);
//oled.println();
oled.setFont(fontList[i]);
oled.println("*+,-./0123456789:");
oled.println("abcdefghijklmno");
oled.println("ABCDEFGHIJKLMNO");
delay(1000);
}*/
oled.clear();
Serial.print("nFont = ");
Serial.println(nFont);
}
void loop() {
upBtn.read(); // pulsante verde SU
dwnBtn.read(); // pulsante giallo GIU
if (upBtn.wasPressed()) {
if (fontIndex > 0)
fontIndex--;
//Serial.println(fontIndex);
}
if (dwnBtn.wasPressed()) {
if (fontIndex < nFont-1)
fontIndex++;
//Serial.println(fontIndex);
}
if (oldFontIndex != fontIndex) {
oldFontIndex = fontIndex;
Serial.print(fontIndex);
Serial.print(" ");
Serial.println(fontName[fontIndex]);
oled.clear();
oled.setFont(fontList[fontIndex]);
oled.println("*+,-./0123456789:");
oled.println("abcdefghijklmno");
oled.println("ABCDEFGHIJKLMNO");
}
}