/* * Fab academy 2023 * Author: Essi Huusko * This is a program for Knitter's smart accessory which is documented on the https://fabacademy.org/2023/labs/oulu/students/essi-huusko/final-project.html * */ #include #include #include unsigned long prMillis = millis(); unsigned long breakTimer = millis(); unsigned long breakInterval = 1800000; unsigned long nextBreak = breakInterval; #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels // Declaration for an SSD1306 display connected to I2C (SDA, SCL pins) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); const int button = 0; const int led = 1; int counter = 0; int switchState = 1; void setup() { pinMode (button, INPUT); pinMode (led, OUTPUT); Serial.begin(115200); if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64 Serial.println(F("SSD1306 allocation failed")); for(;;); } display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0, 10); // Display static text display.setTextSize(2); display.setCursor(0,30); // Display static text display.println("Hei!"); display.display(); display.clearDisplay(); display.display(); } void loop() { digitalWrite (led, HIGH); prMillis = millis(); breakTimer = millis(); switchState = digitalRead(button); if(breakTimer >= nextBreak) { digitalWrite (led, LOW); display.setTextColor(WHITE); display.setCursor(0, 10); display.setTextSize(2); display.println("Time to stretch!"); display.display(); } if (switchState == 0){ if(breakTimer >= nextBreak) { digitalWrite (led, HIGH); nextBreak = millis() + breakInterval; display.clearDisplay(); display.display(); } else { counter=counter+1; display.setTextColor(WHITE); display.setCursor(50, 20); display.setTextSize(4); display.println(counter); display.display(); } while(millis() - prMillis < 2000) { ; } display.clearDisplay(); display.display(); } }