178 lines
4.1 KiB
Arduino
178 lines
4.1 KiB
Arduino
//Library inclusions
|
|
#include <Wire.h>
|
|
#include <Adafruit_GFX.h>
|
|
#include <Adafruit_SSD1306.h>
|
|
#include <Fonts/FreeMono9pt7b.h>
|
|
#include "setup.h"
|
|
#include "dseg7_7seggchan_mini_font_48p_regular.h"
|
|
#include "dseg7_classic_mini_font_11p_regular.h"
|
|
#include "DejaVu_Sans_Mono_font_12p_regular.h"
|
|
#include <hardware/adc.h>
|
|
#include "images.h"
|
|
|
|
#define SCREEN_WIDTH 128
|
|
#define SCREEN_HEIGHT 64
|
|
#define OLED_RESET -1
|
|
#define SCREEN_ADDRESS 0x3C
|
|
|
|
float voltage = 0;
|
|
float current = 0;
|
|
float wattage = 0;
|
|
int usb_score = -1;
|
|
int uptime_min = 0;
|
|
int uptime_sec = 0;
|
|
|
|
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
|
|
void setup() {
|
|
adc_init();
|
|
adc_set_temp_sensor_enabled(true);
|
|
Serial.begin(115200);
|
|
Wire.setSDA(I2C_SDA);
|
|
Wire.setSCL(I2C_SCL);
|
|
Wire.begin();
|
|
|
|
if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)){
|
|
Serial.println("Display Error: Check Connections");
|
|
Serial.print("SDA=");
|
|
Serial.println(I2C_SDA);
|
|
Serial.print("SCL:");
|
|
Serial.println(I2C_SCL);
|
|
while(true){
|
|
delay(100);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void loop() {
|
|
drawDisplay();
|
|
|
|
}
|
|
|
|
void drawDisplay() {
|
|
if(!use_default_fonts){
|
|
display.clearDisplay();
|
|
display.setTextColor(WHITE);
|
|
display.setTextSize(1);
|
|
if(use_7seggchan){
|
|
display.setFont(&DSEG7_7SEGGCHAN_MINI_Regular_48);
|
|
display.setCursor(84, 66);
|
|
if(usb_score == -1){
|
|
display.println("-");
|
|
}
|
|
else if (usb_score == -2) {
|
|
display.println(" ");
|
|
}
|
|
else {
|
|
display.println(usb_score);
|
|
}
|
|
display.drawFastVLine(80,16,48,WHITE);
|
|
}
|
|
display.drawFastHLine(0,16,128,WHITE);
|
|
display.setCursor(0,64);
|
|
display.setFont(&DialogInput_plain_12);
|
|
display.print("W:");
|
|
display.setCursor(0, 48);
|
|
display.print("A:");
|
|
display.setCursor(0,32);
|
|
display.print("V:");
|
|
display.setFont(&DSEG7_Classic_Mini_Regular_11);
|
|
display.setCursor(13, 64);
|
|
display.print(wattage);
|
|
display.setCursor(13,48);
|
|
display.print(current);
|
|
display.setCursor(13,32);
|
|
display.print(voltage);
|
|
if(use_bitmaps){
|
|
display.setCursor(16,0);
|
|
display.drawBitmap(0,0,temperature_bitmap,16,16,WHITE);
|
|
display.setFont(&DSEG7_Classic_Mini_Regular_11);
|
|
display.setCursor(16,16);
|
|
}
|
|
else {
|
|
display.setCursor(0,16);
|
|
}
|
|
display.print(analogReadTemp(),1);
|
|
display.print(" C°");
|
|
if(use_bitmaps){
|
|
display.drawBitmap(65,0,clock_bitmap,16,16,WHITE);
|
|
display.setCursor(82,16);
|
|
}
|
|
else{
|
|
display.setCursor(82,16);
|
|
}
|
|
display.drawFastVLine(62,0,16,WHITE);
|
|
if(uptime_min<10){
|
|
display.print("0");
|
|
}
|
|
display.print(uptime_min);
|
|
display.print(":");
|
|
display.setFont(&DSEG7_Classic_Mini_Regular_11);
|
|
if(uptime_sec < 10){
|
|
display.print("0");
|
|
}
|
|
display.print(uptime_sec);
|
|
display.display();
|
|
}
|
|
else {
|
|
display.clearDisplay();
|
|
display.drawFastHLine(0,16,128,WHITE);
|
|
display.setTextColor(WHITE);
|
|
display.setTextSize(1);
|
|
display.setCursor(0,56);
|
|
display.setFont(NULL);
|
|
display.print("W:");
|
|
display.setCursor(0, 44);
|
|
display.print("A:");
|
|
display.setCursor(0,32);
|
|
display.print("V:");
|
|
display.setFont(NULL);
|
|
display.setCursor(13, 56);
|
|
display.print(wattage);
|
|
display.setCursor(13,44);
|
|
display.print(current);
|
|
display.setCursor(13,32);
|
|
display.print(voltage);
|
|
if(use_bitmaps){
|
|
display.setCursor(16,0);
|
|
display.drawBitmap(0,0,temperature_bitmap,16,16,WHITE);
|
|
display.setFont(NULL);
|
|
display.setCursor(16,8);
|
|
}
|
|
else {
|
|
display.setCursor(0,8);
|
|
}
|
|
display.print(analogReadTemp(),1);
|
|
display.print(" C");
|
|
if(use_bitmaps){
|
|
display.setCursor(16,0);
|
|
display.drawBitmap(0,0,temperature_bitmap,16,16,WHITE);
|
|
display.setCursor(16,16);
|
|
}
|
|
else {
|
|
display.setCursor(0,8);
|
|
}
|
|
|
|
if(use_bitmaps){
|
|
display.drawBitmap(65,0,clock_bitmap,16,16,WHITE);
|
|
display.setCursor(82,8);
|
|
}
|
|
else{
|
|
display.setCursor(94,8);
|
|
}
|
|
display.drawFastVLine(62,0,16,WHITE);
|
|
if(uptime_min<10){
|
|
display.print("0");
|
|
}
|
|
display.print(uptime_min);
|
|
display.print(":");
|
|
display.setFont(NULL);
|
|
if(uptime_sec < 10){
|
|
display.print("0");
|
|
}
|
|
display.print(uptime_sec);
|
|
display.display();
|
|
}
|
|
}
|
|
|