2020-05-25 05:01:08 +03:00

176 lines
5.2 KiB
C++

//====================================================================
// OLED DISPLAY
//====================================================================
// LIBRARY INCLUDE
//--------------------------------------------------------------------
// Include Libraries
#include <Wire.h>
#include <SSD1306Wire.h>
// Display Instance
SSD1306Wire display(0x3c, 21, 22);
//--------------------------------------------------------------------
// OLED Initialization
//--------------------------------------------------------------------
void oled_init() {
display.init();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_10);
}
//--------------------------------------------------------------------
// OLED Display Text
//--------------------------------------------------------------------
void drawTextFlowDemo(String Text) {
display.setFont(ArialMT_Plain_10);
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.drawStringMaxWidth(0, 0, 128, Text);
}
//--------------------------------------------------------------------
// OLED LEFT TEXT Display
//--------------------------------------------------------------------
void drawTextLeft() {
display.setFont(ArialMT_Plain_10);
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.drawString(0, 10, "Left aligned (0,10)");
}
//--------------------------------------------------------------------
// OLED CENTER TEXT Display
//--------------------------------------------------------------------
void drawTextCenter(int X, int Y, int Size, String Text) {
//display.setFont(ArialMT_Plain_10);
if(Size == 1) {
display.setFont(ArialMT_Plain_10);
} else if(Size == 2) {
display.setFont(ArialMT_Plain_16);
} else if(Size == 3) {
display.setFont(ArialMT_Plain_24);
} else {
display.setFont(ArialMT_Plain_10);
}
display.setTextAlignment(TEXT_ALIGN_CENTER);
display.drawString(X, Y, Text);
}
//--------------------------------------------------------------------
// OLED RIGHT TEXT DISPLAY
//--------------------------------------------------------------------
// OLED Display
void drawTextRight() {
display.setFont(ArialMT_Plain_10);
display.setTextAlignment(TEXT_ALIGN_RIGHT);
display.drawString(128, 33, "Right aligned (128,33)");
}
//--------------------------------------------------------------------
// OLED DRAW RECTANGLE
//--------------------------------------------------------------------
void drawRectDemo() {
// Draw a pixel at given position
for (int i = 0; i < 10; i++) {
display.setPixel(i, i);
display.setPixel(10 - i, i);
}
display.drawRect(12, 12, 20, 20);
// Fill the rectangle
display.fillRect(14, 14, 17, 17);
// Draw a line horizontally
display.drawHorizontalLine(0, 40, 20);
// Draw a line horizontally
display.drawVerticalLine(40, 0, 20);
}
//--------------------------------------------------------------------
// OLED DRAW CIRCLE
//--------------------------------------------------------------------
void drawCircleDemo() {
for (int i=1; i < 8; i++) {
display.setColor(WHITE);
display.drawCircle(32, 32, i*3);
if (i % 2 == 0) {
display.setColor(BLACK);
}
display.fillCircle(96, 32, 32 - i* 3);
}
}
//--------------------------------------------------------------------
// OLED DRAW PROGRESS BAR
//--------------------------------------------------------------------
void drawProgressBarDemo(int Value) {
int progress = Value;
// draw the progress bar
display.drawProgressBar(0, 50, 120, 10, progress);
// draw the percentage as String
display.setTextAlignment(TEXT_ALIGN_CENTER);
display.drawString(64, 35, String(progress) + "%");
}
//--------------------------------------------------------------------
// OLED CLEAR DISPLAY
//--------------------------------------------------------------------
void oled_clear() {
display.clear();
}
//--------------------------------------------------------------------
// OLED SHOW NEW DATA
//--------------------------------------------------------------------
void oled_show() {
display.display();
}
//--------------------------------------------------------------------
// OLED DISPLAY KICKER WELCOME MESSAGE
//--------------------------------------------------------------------
void kicker_logo() {
// Starting The First Code
oled_clear();
drawTextCenter(128/2, 5, 3, "TAKEONE");
drawTextCenter(128/2, 30, 1, " - T E C H N O L O G Y - ");
drawTextCenter(128/2, 43, 2, "<< KICKER >>");
oled_show();
}
//--------------------------------------------------------------------
// OLED DISPLAY BATTERY LEVEL
//--------------------------------------------------------------------
void battery_level_display() {
// Counting Time
timetick = millis();
// Taking Action Based On Time Count
if(timetick - prevtick >= 5000)
{
prevtick = timetick;
String BV = String(BATTERY,2);
String BC = String(CHARGE, 0);
oled_clear();
drawTextFlowDemo("Battery Level : " + BV + " V Charge Level : " + BC + "%");
drawProgressBarDemo(BC.toInt());
oled_show();
}
}