// Code Page 437
// https://www.ascii-codes.com/
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // display display width, in pixels
#define SCREEN_HEIGHT 64 // display display height, in pixels
// declare an SSD1306 display object connected to I2C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
Serial.begin(9600);
// initialize display display with address 0x3C for 128x64
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
while (true);
}
delay(500); // wait for initializing
screenTemplate();
}
void loop() {
for (int i = 0; i < 20; i++)
{
displayWeight(20 - i, i, WHITE);
delay(500);
displayWeight(20 - i, i, BLACK);
}
};
void displayWeight(int weight, int temp, int color) {
display.setTextColor(color);
display.setTextSize(2);
display.setCursor(0, 15);
display.print(weight);
display.setCursor(0, 45);
display.print(temp);
display.display();
}
void screenTemplate()
{
display.clearDisplay(); // clear display
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.setTextSize(1);
display.println("Weight:");
display.setCursor(35, 10);
display.setTextSize(2);
display.print("g");
display.setCursor(0, 35);
display.setTextSize(1);
display.println("Temperature:");
display.setCursor(35, 45);
display.cp437(true); // code page 437 for extra characters
display.write(167);
display.print("C");
display.display();
}