#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for SSD1306 display connected using I2C
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#define buttonPullup 19
long currentTime = 0;
bool startStopTimer = false;
long referenceTime;
void setup() {
Serial.begin(9600);
// initialize the OLED object
if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;)
;
}
pinMode(buttonPullup,INPUT_PULLUP);
// Clear the buffer.
display.clearDisplay();
}
/*// Display Text
display.setTextSize(1); // Set text size
display.setTextColor(WHITE); // Set text color
display.setCursor(0, 28); // Set cursor position
display.println("Hello world!");
display.display(); // Display the content on the screen
delay(2000);
display.clearDisplay(); // Clear the screen
// Display Inverted Text
display.setTextColor(BLACK, WHITE); // 'inverted' text
display.setCursor(0, 28);
display.println("Hello world!");
display.display();
delay(2000);
display.clearDisplay();
// Changing Font Size
display.setTextColor(WHITE);
display.setCursor(0, 24);
display.setTextSize(2);
display.println("Hello!");
display.display();
delay(2000);
display.clearDisplay();
// Display Numbers
display.setTextSize(1);
display.setCursor(0, 28);
display.println(123456789);
display.display();
delay(2000);
display.clearDisplay();
// Display ASCII Characters
display.setCursor(0, 24);
display.setTextSize(2);
for (int i = 1; i < 8; i++) {
display.write(i);
}
display.display();
delay(2000);
display.clearDisplay();
// Scroll full screen
display.setCursor(0, 0);
display.setTextSize(1);
display.println("Full");
display.println("screen");
display.println("scrolling!");
display.display();
display.startscrollright(0x00, 0x07); // Scroll the screen to the right
delay(5000);
display.stopscroll();
delay(1000);
display.startscrollleft(0x00, 0x07); // Scroll the screen to the left
delay(5000);
display.stopscroll();
delay(1000);
display.clearDisplay();
// Scroll part of the screen
display.setCursor(0, 0);
display.setTextSize(1);
display.println("Scroll");
display.println("some part");
display.println("of the screen.");
display.display();
display.startscrollright(0x00, 0x00); // Scroll the first column of the screen to the right
delay(4000);
display.stopscroll();
display.clearDisplay();
// Display bitmap
display.drawBitmap(32, 0, sunfounderIcon, 64, 64, WHITE);
display.display();*/
void StartTimer()
{
startStopTimer = !startStopTimer;
if(startStopTimer)
{
referenceTime = millis();
}
}
void DisplayTimer()
{
display.clearDisplay();
long displayNumber = (referenceTime + 900000) - millis();
display.setTextSize(1);
display.setCursor(0, 28);
display.println(displayNumber);
display.display();
}
void loop() {
if(digitalRead(buttonPullup)==0)
{
while((digitalRead(buttonPullup)==0)){}
delay(5);
StartTimer();
}
if(startStopTimer)
{
DisplayTimer();
}
delay(5);
}