Migrating to U8G2
This commit is contained in:
@ -1,9 +1,10 @@
|
|||||||
#include <Wire.h>
|
#include <Wire.h>
|
||||||
#include <Adafruit_GFX.h>
|
//#include <Adafruit_GFX.h>
|
||||||
#include <Adafruit_SSD1306.h>
|
//#include <Adafruit_SSD1306.h>
|
||||||
#include <RotaryEncoder.h>
|
#include <RotaryEncoder.h>
|
||||||
#include <FlexiTimer2.h>
|
#include <FlexiTimer2.h>
|
||||||
#include <EEPROM.h>
|
#include <EEPROM.h>
|
||||||
|
#include <U8g2lib.h>
|
||||||
|
|
||||||
#define VERSION "0.9b"
|
#define VERSION "0.9b"
|
||||||
|
|
||||||
@ -120,7 +121,7 @@ bool encPressRegistered;
|
|||||||
|
|
||||||
//unsigned long lastInteractionTime; // used for display timeout
|
//unsigned long lastInteractionTime; // used for display timeout
|
||||||
|
|
||||||
Adafruit_SSD1306 display(128, 64, &Wire, -1);
|
U8G2_SSD1306_128X64_NONAME_2_HW_I2C u8g2(U8G2_R2, SCL, SDA, U8X8_PIN_NONE);
|
||||||
RotaryEncoder encoder(ENC_D1_PIN, ENC_D2_PIN, RotaryEncoder::LatchMode::TWO03);
|
RotaryEncoder encoder(ENC_D1_PIN, ENC_D2_PIN, RotaryEncoder::LatchMode::TWO03);
|
||||||
|
|
||||||
const unsigned char splash_logo[] PROGMEM = {
|
const unsigned char splash_logo[] PROGMEM = {
|
||||||
@ -176,7 +177,7 @@ void setup() {
|
|||||||
pinMode(outsPins[i], OUTPUT);
|
pinMode(outsPins[i], OUTPUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS);
|
/*display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS);
|
||||||
display.setRotation(2);
|
display.setRotation(2);
|
||||||
display.clearDisplay();
|
display.clearDisplay();
|
||||||
|
|
||||||
@ -189,7 +190,9 @@ void setup() {
|
|||||||
display.print(F("V:"));
|
display.print(F("V:"));
|
||||||
display.print(F(VERSION));
|
display.print(F(VERSION));
|
||||||
display.display();
|
display.display();
|
||||||
delay(800);
|
delay(800);*/
|
||||||
|
//u8g2.setI2CAddress(SCREEN_ADDRESS);
|
||||||
|
u8g2.begin();
|
||||||
|
|
||||||
updateScreen();
|
updateScreen();
|
||||||
calculateCycles();
|
calculateCycles();
|
||||||
|
|||||||
@ -1,53 +1,13 @@
|
|||||||
void updateScreen() {
|
void updateScreen() {
|
||||||
|
|
||||||
display.clearDisplay();
|
u8g2.firstPage();
|
||||||
|
do {
|
||||||
//lastInteractionTime = millis(); //not sure if it's a right place for this, but should do for now
|
//u8g2.clearBuffer();
|
||||||
|
|
||||||
//Tabs
|
|
||||||
display.drawRect(0, 48, 128, 1, SSD1306_WHITE);
|
|
||||||
display.setCursor(4, 52);
|
|
||||||
display.setTextSize(1);
|
|
||||||
|
|
||||||
if (displayTab == 0) {
|
|
||||||
if (insideTab == true || shiftBtnPushed == true) {
|
|
||||||
display.drawRoundRect(0, 46, 24, 18, 3, SSD1306_WHITE);
|
|
||||||
display.setTextColor(SSD1306_WHITE);
|
|
||||||
} else {
|
|
||||||
display.fillRoundRect(0, 46, 24, 18, 3, SSD1306_WHITE);
|
|
||||||
display.setTextColor(SSD1306_BLACK);
|
|
||||||
}
|
|
||||||
display.print(F("BPM"));
|
|
||||||
} else {
|
|
||||||
display.setTextColor(SSD1306_WHITE);
|
|
||||||
display.print(F("BPM"));
|
|
||||||
}
|
|
||||||
|
|
||||||
for (byte i = 1; i <= 6; i++) {
|
|
||||||
if (displayTab == i) {
|
|
||||||
if (insideTab == true || shiftBtnPushed == true) {
|
|
||||||
display.drawRoundRect(i*12 + 12, 46, 13, 18, 3, SSD1306_WHITE);
|
|
||||||
display.setTextColor(SSD1306_WHITE);
|
|
||||||
} else {
|
|
||||||
display.fillRoundRect(i*12 + 12, 46, 13, 18, 3, SSD1306_WHITE);
|
|
||||||
display.setTextColor(SSD1306_BLACK);
|
|
||||||
}
|
|
||||||
display.print(" ");
|
|
||||||
display.print(i);
|
|
||||||
} else {
|
|
||||||
display.setTextColor(SSD1306_WHITE);
|
|
||||||
display.print(" ");
|
|
||||||
display.print(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
display.drawRect(0, 46, 128, 2, SSD1306_BLACK); //to crop off parts of tabs round rect
|
|
||||||
|
|
||||||
//Submenu
|
//BPM Tab
|
||||||
if (insideTab) {
|
|
||||||
display.fillRoundRect(60, menuItem*12, 68, 10, 2, SSD1306_WHITE);
|
|
||||||
}
|
|
||||||
if (displayTab == 0) { //BPM
|
if (displayTab == 0) { //BPM
|
||||||
|
u8g2.setFont(u8g2_font_5x7_tr);
|
||||||
|
//Menu items
|
||||||
if (masterClockMode == 0 && bpmModulationRange == 0) {
|
if (masterClockMode == 0 && bpmModulationRange == 0) {
|
||||||
lastMenuItem = 1;
|
lastMenuItem = 1;
|
||||||
} else if (masterClockMode == 0 && bpmModulationRange != 0) {
|
} else if (masterClockMode == 0 && bpmModulationRange != 0) {
|
||||||
@ -56,31 +16,78 @@ void updateScreen() {
|
|||||||
lastMenuItem = 0;
|
lastMenuItem = 0;
|
||||||
}
|
}
|
||||||
if (menuItem == 0 && insideTab) {
|
if (menuItem == 0 && insideTab) {
|
||||||
display.setTextColor(SSD1306_BLACK);
|
u8g2.drawButtonUTF8(4, 8, U8G2_BTN_BW0|U8G2_BTN_INV, 20, 3, 2, "CLK:" );
|
||||||
} else {
|
} else {
|
||||||
display.setTextColor(SSD1306_WHITE);
|
u8g2.drawButtonUTF8(4, 8, U8G2_BTN_BW0, 20, 3, 2, "CLK:" );
|
||||||
}
|
}
|
||||||
display.setCursor(62, 1);
|
|
||||||
display.println(F("CLK:"));
|
|
||||||
if (masterClockMode == 0) {
|
if (masterClockMode == 0) {
|
||||||
if (menuItem == 1) {
|
if (menuItem == 1) {
|
||||||
display.setTextColor(SSD1306_BLACK);
|
u8g2.drawButtonUTF8(4, 20, U8G2_BTN_BW0|U8G2_BTN_INV, 20, 3, 2, "MOD:" );
|
||||||
} else {
|
} else {
|
||||||
display.setTextColor(SSD1306_WHITE);
|
u8g2.drawButtonUTF8(4, 20, U8G2_BTN_BW0, 20, 3, 2, "MOD:" );
|
||||||
}
|
|
||||||
display.setCursor(62, 13);
|
|
||||||
display.println(F("MOD:"));
|
|
||||||
if (menuItem == 2) {
|
|
||||||
display.setTextColor(SSD1306_BLACK);
|
|
||||||
} else {
|
|
||||||
display.setTextColor(SSD1306_WHITE);
|
|
||||||
}
|
}
|
||||||
if (bpmModulationRange != 0) {
|
if (bpmModulationRange != 0) {
|
||||||
display.setCursor(62, 25);
|
if (menuItem == 2) {
|
||||||
display.println(F("RNG:"));
|
u8g2.drawButtonUTF8(4, 32, U8G2_BTN_BW0|U8G2_BTN_INV, 20, 3, 2, "RNG:" );
|
||||||
|
} else {
|
||||||
|
u8g2.drawButtonUTF8(4, 32, U8G2_BTN_BW0, 20, 3, 2, "RNG:" );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//Values
|
||||||
|
if (menuItem == 0 && insideTab && masterClockMode == 0) {
|
||||||
|
u8g2.drawButtonUTF8(31, 8, U8G2_BTN_BW0|U8G2_BTN_INV, 30, 4, 2, "INT" );
|
||||||
|
} else if ((menuItem != 0 || !insideTab) && masterClockMode == 0) {
|
||||||
|
u8g2.drawButtonUTF8(31, 8, U8G2_BTN_BW0, 30, 4, 2, "INT" );
|
||||||
|
}
|
||||||
|
if (menuItem == 0 && masterClockMode == 1) {
|
||||||
|
u8g2.drawButtonUTF8(31, 8, U8G2_BTN_BW0|U8G2_BTN_INV, 30, 4, 2, "EXT" );
|
||||||
|
} else if (menuItem != 0 && masterClockMode == 1) {
|
||||||
|
u8g2.drawButtonUTF8(31, 8, U8G2_BTN_BW0, 30, 4, 2, "EXT" );
|
||||||
|
}
|
||||||
|
|
||||||
|
if (masterClockMode == 0) {
|
||||||
|
if (menuItem == 1 && bpmModulationRange != 0 && bpmModulationChannel == 0) {
|
||||||
|
u8g2.drawButtonUTF8(31, 20, U8G2_BTN_BW0|U8G2_BTN_INV, 30, 4, 2, "CV1" );
|
||||||
|
} else if (menuItem != 1 && bpmModulationRange != 0 && bpmModulationChannel == 0) {
|
||||||
|
u8g2.drawButtonUTF8(31, 20, U8G2_BTN_BW0, 30, 3, 2, "CV1" );
|
||||||
|
}
|
||||||
|
if (menuItem == 1 && bpmModulationRange != 0 && bpmModulationChannel == 1) {
|
||||||
|
u8g2.drawButtonUTF8(31, 20, U8G2_BTN_BW0|U8G2_BTN_INV, 30, 4, 2, "CV2" );
|
||||||
|
} else if (menuItem != 1 && bpmModulationRange != 0 && bpmModulationChannel == 1){
|
||||||
|
u8g2.drawButtonUTF8(31, 20, U8G2_BTN_BW0, 30, 3, 2, "CV2" );
|
||||||
|
}
|
||||||
|
if (menuItem == 1 && bpmModulationRange == 0) {
|
||||||
|
u8g2.drawButtonUTF8(31, 20, U8G2_BTN_BW0|U8G2_BTN_INV, 30, 4, 2, "OFF" );
|
||||||
|
} else if (menuItem != 1 && bpmModulationRange == 0) {
|
||||||
|
u8g2.drawButtonUTF8(31, 20, U8G2_BTN_BW0, 30, 4, 2, "OFF" );
|
||||||
|
}
|
||||||
|
String bpmModStr = String(bpmModulationRange * 10);
|
||||||
|
char bpmModChar[3];
|
||||||
|
bpmModStr.toCharArray(bpmModChar, 3);
|
||||||
|
if (menuItem == 2 && bpmModulationRange != 0) {
|
||||||
|
u8g2.drawButtonUTF8(31, 32, U8G2_BTN_BW0|U8G2_BTN_INV, 30, 4, 2, bpmModChar );
|
||||||
|
} else if (menuItem != 2 && bpmModulationRange != 0) {
|
||||||
|
u8g2.drawButtonUTF8(31, 32, U8G2_BTN_BW0, 30, 4, 2, bpmModChar );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String bpmStr = String(bpm);
|
||||||
|
char bpmChar[5];
|
||||||
|
bpmStr.toCharArray(bpmChar, 5);
|
||||||
|
u8g2.setFont(u8g2_font_logisoso26_tn);
|
||||||
|
if (!insideTab && shiftBtnPushed) {
|
||||||
|
u8g2.drawButtonUTF8(96, 28, U8G2_BTN_BW1|U8G2_BTN_INV|U8G2_BTN_HCENTER, 62, 0, 0, bpmChar );
|
||||||
|
u8g2.setFont(u8g2_font_7x13B_mr);
|
||||||
|
u8g2.drawButtonUTF8(96, 44, U8G2_BTN_BW1|U8G2_BTN_HCENTER, 62, 0, 0, "BPM" );
|
||||||
|
} else if (menuItem != 2 && bpmModulationRange != 0) {
|
||||||
|
u8g2.drawButtonUTF8(96, 28, U8G2_BTN_BW0|U8G2_BTN_HCENTER, 64, 0, 0, bpmChar );
|
||||||
|
u8g2.setFont(u8g2_font_7x13B_mr);
|
||||||
|
u8g2.drawButtonUTF8(96, 44, U8G2_BTN_BW0|U8G2_BTN_HCENTER, 64, 0, 0, "BPM" );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
/*
|
||||||
} else { //CHANNELS
|
} else { //CHANNELS
|
||||||
lastMenuItem = 3;
|
lastMenuItem = 3;
|
||||||
if (menuItem == 0 && insideTab) {
|
if (menuItem == 0 && insideTab) {
|
||||||
@ -117,47 +124,9 @@ void updateScreen() {
|
|||||||
}
|
}
|
||||||
display.setCursor(62, 37);
|
display.setCursor(62, 37);
|
||||||
display.println(F("CV2:"));
|
display.println(F("CV2:"));
|
||||||
}
|
}*/
|
||||||
|
|
||||||
//Submenu Values
|
/*else { //CHANNELS
|
||||||
if (displayTab == 0) { //BPM
|
|
||||||
if (menuItem == 0 && insideTab) {
|
|
||||||
display.setTextColor(SSD1306_BLACK);
|
|
||||||
} else {
|
|
||||||
display.setTextColor(SSD1306_WHITE);
|
|
||||||
}
|
|
||||||
display.setCursor(94, 1);
|
|
||||||
if (masterClockMode == 0) {
|
|
||||||
display.println(F("INT"));
|
|
||||||
} else if (masterClockMode == 1) {
|
|
||||||
display.println(F("EXT"));
|
|
||||||
}
|
|
||||||
if (masterClockMode == 0) {
|
|
||||||
if (menuItem == 1) {
|
|
||||||
display.setTextColor(SSD1306_BLACK);
|
|
||||||
} else {
|
|
||||||
display.setTextColor(SSD1306_WHITE);
|
|
||||||
}
|
|
||||||
display.setCursor(94, 13);
|
|
||||||
if (bpmModulationRange != 0 && bpmModulationChannel == 0) {
|
|
||||||
display.println(F("CV1"));
|
|
||||||
} else if (bpmModulationRange != 0 && bpmModulationChannel == 1) {
|
|
||||||
display.println(F("CV2"));
|
|
||||||
} else if (bpmModulationRange == 0) {
|
|
||||||
display.println(F("OFF"));
|
|
||||||
}
|
|
||||||
if (menuItem == 2) {
|
|
||||||
display.setTextColor(SSD1306_BLACK);
|
|
||||||
} else {
|
|
||||||
display.setTextColor(SSD1306_WHITE);
|
|
||||||
}
|
|
||||||
display.setCursor(94, 25);
|
|
||||||
if (bpmModulationRange != 0) {
|
|
||||||
display.println(bpmModulationRange * 10);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} else { //CHANNELS
|
|
||||||
if (menuItem == 0 && insideTab) {
|
if (menuItem == 0 && insideTab) {
|
||||||
display.setTextColor(SSD1306_BLACK);
|
display.setTextColor(SSD1306_BLACK);
|
||||||
} else {
|
} else {
|
||||||
@ -267,6 +236,35 @@ void updateScreen() {
|
|||||||
display.print(abs(subDivs[channels[displayTab - 1].subDiv]));
|
display.print(abs(subDivs[channels[displayTab - 1].subDiv]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
display.display();
|
//Tabs
|
||||||
|
u8g2.drawHLine(0, 51, 128);
|
||||||
|
u8g2.setFont(u8g2_font_5x7_tr);
|
||||||
|
|
||||||
|
if (displayTab == 0) {
|
||||||
|
if (insideTab == true || shiftBtnPushed == true) {
|
||||||
|
u8g2.drawButtonUTF8(4, 60, U8G2_BTN_BW1, 0, 3, 2, "BPM" );
|
||||||
|
} else {
|
||||||
|
u8g2.drawButtonUTF8(4, 60, U8G2_BTN_BW1|U8G2_BTN_INV, 0, 3, 2, "BPM" );
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
u8g2.drawButtonUTF8(4, 60, U8G2_BTN_BW0, 0, 3, 2, "BPM" );
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 1; i <= 6; i++) {
|
||||||
|
if (displayTab == i) {
|
||||||
|
if (insideTab == true || shiftBtnPushed == true) { //hot mess, but for some reason it didn't want to take string/char variables
|
||||||
|
u8g2.drawButtonUTF8(i*13 + 13, 60, U8G2_BTN_BW1, 0, 3, 2, (i == 1) ? "1" : (i == 2) ? "2" : (i == 3) ? "3" : (i == 4) ? "4" : (i == 5) ? "5" : (i == 5) ? "5" : (i == 6) ? "6" : "0");
|
||||||
|
} else {
|
||||||
|
u8g2.drawButtonUTF8(i*13 + 13, 60, U8G2_BTN_BW1|U8G2_BTN_INV, 0, 3, 2, (i == 1) ? "1" : (i == 2) ? "2" : (i == 3) ? "3" : (i == 4) ? "4" : (i == 5) ? "5" : (i == 5) ? "5" : (i == 6) ? "6" : "0");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
u8g2.drawButtonUTF8(i*13 + 13, 60, U8G2_BTN_BW0, 0, 3, 2, (i == 1) ? "1" : (i == 2) ? "2" : (i == 3) ? "3" : (i == 4) ? "4" : (i == 5) ? "5" : (i == 5) ? "5" : (i == 6) ? "6" : "0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//u8g2.sendBuffer();
|
||||||
|
} while ( u8g2.nextPage() );
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user