//#include "U8glib.h" #include #include #include #include Adafruit_SSD1306 display(128,64,&Wire,-1); const byte inputA = 4; const byte inputB = 5; const int input_s = 6; const int outputA = 8; const int outputB = 9; int counter = 0; int switchCounter = 0; int aState; int sState; int aLastState; int sLastState; int oldVal = 0; int value = 0; void setup() { pinMode (outputA,OUTPUT); pinMode (outputB,OUTPUT); pinMode (inputA,INPUT); pinMode (inputB,INPUT); pinMode (input_s, INPUT_PULLUP); digitalWrite(inputA,HIGH); digitalWrite(inputB,HIGH); attachInterrupt(inputA,isr,FALLING); attachInterrupt(inputB,isr,RISING); attachInterrupt(input_s,isr,RISING); Serial.begin (9600); // Reads the initial state of the outputA aLastState = digitalRead(inputA); sLastState = digitalRead(input_s); // initialize with the I2C addr 0x3C display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Clear the buffer. display.clearDisplay(); // Display Text // display.setFont('u8g_font_fur30'); display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(16,0); display.println("POMODORO"); // display.display(); // delay(2000); display.setCursor(20,15); display.println("-------"); display.display(); display.setCursor(0,30); display.setTextSize(1); display.println("solo pom"); display.println("start a party"); display.println("settings"); display.display(); Serial.println("starting"); /* // 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(); // Specifying Base For Numbers display.setCursor(0,28); display.print("0x"); display.print(0xFF, HEX); display.print("(HEX) = "); display.print(0xFF, DEC); display.println("(DEC)"); display.display(); delay(2000); display.clearDisplay(); // Display ASCII Characters display.setCursor(0,24); display.setTextSize(2); display.write(3); 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); delay(2000); display.stopscroll(); delay(1000); display.startscrollleft(0x00, 0x07); delay(2000); display.stopscroll(); delay(1000); display.startscrolldiagright(0x00, 0x07); delay(2000); display.startscrolldiagleft(0x00, 0x07); delay(2000); display.stopscroll(); 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); */ } void loop() { aState = digitalRead(inputA); // Reads the "current" state of the outputA // If the previous and the current state of the outputA are different, that means a Pulse has occured if (aState != aLastState){ // If the outputB state is different to the outputA state, that means the encoder is rotating clockwise if (digitalRead(inputB) != aState) { counter ++; digitalWrite(outputB, LOW); digitalWrite(outputA, HIGH); //updateMenuWVal(counter); } else { counter --; digitalWrite(outputA, LOW); digitalWrite(outputB, HIGH); //updateMenuWVal(counter); } Serial.print("Position: "); Serial.println(counter); } //sState = digitalRead(input_s); // if (sState == false && sLastState == true){ // switchCounter++; // Serial.print("Switch: "); // Serial.println(switchCounter); // } aLastState = aState; // Updates the previous state of the outputA with the current state // sLastState = sState; } void isr(){ display.clearDisplay(); // // Display Text display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(16,0); display.println("POMODORO"); display.display(); display.display(); delay(2000); display.setCursor(20,15); display.println("-------"); display.display(); display.setCursor(0,30); display.setTextSize(1); display.println("solo pom"); display.println("start a party"); display.println("settings"); display.display(); if (val < 0){ display.setCursor(0,0); display.setTextColor(SSD1306_BLACK); display.println(F("Ho")); display.setCursor(0,0); display.setTextColor(SSD1306_WHITE); display.println(F("Hi")); Serial.println("REACHED HERE"); display.display(); } oldVal = val; }