Giter Site home page Giter Site logo

pomodial's Introduction

pomodial

Now your keyboard can yell at you at pomodoro frequency!

Pomodial installed on a Signum 3.1

Pomodial video on youtube

Pomodial on the youtubes


A rotary encoder controlled countdown timer with an OLED display that doesn't lose rotary encoder polls, and is fine enough to track each individual click of the encoder for precise settings.

This is currently built into a keyboard, but all it does is share power with the keyboard, so this could be its own standalone device.

TBH this was mostly about getting an arduino nano to process input from a rotary encoder ACURATELY while running an i2c OLED. Please feel free to copy rotary encoder running portions to get your project working. I could not find anything online that did this well enough to track individual rotary encoder shifts without spazzing out and jumping around.

Requirements

  • If using a Nano, you must use the interrupt pins D2 and D3 for the rotary encoder A and B pins.
  • You must use the SSD1306 ASCII library, the Adafruit one is hueg leik xbox and slow slow slow.
  • I'm using a mechanical rotary encoder module that only has three resistors on the board with the connection. I've seen others that have components for smoothing out the signals, timing might be a little different on those.
  • If you're sharing power with the keyboard, you should unplug the keyboard from the computer before programming the nano, as there might be competing voltages and problems. I don't think this is actually a problem, but it's probably a good practice.
  • If you use the faster SPI OLED, you might not have any timing problems at all, so the delays might need to be adjusted

NOTES

  • There are some technical inconsistencies in how the rotary encoder A vs B inputs are processed, this could be cleaned up, but I was just happy to get the rotary encoder to the point where it wasn't slipping reads.
  • If you run this a a different clock speed, you may want need to tune the delay in the interrupt function, as that was tuned for the clock in the ATmega328p. This delay serves to let the reads of the traversal settle down, as the interrupt catches all the jitters in the mechanical rotary encoder's brush traversal. An optical encoder might not have this problem.
  • The buzzer is off this build currently, but I will be adding a hilariously gigantic one to it soon.
  • Youtube video of gigantic (but surprisingly polite) buzzer linked below Pomodial on the youtubes

TODO

  • Add comments about the jitter delay timing
  • Add architecture for swapping inputs for things like menu selections through rotary encoder
  • Set up Persistent Pomodoro process
    • Something like the pause-less version, that enforces 'doros and breaks
    • won't stop beeping until you acknowledge the transition to the next item.
    • But maybe has a full lockdown where it will still remind you
  • Another thing

pomodial's People

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

rscircus

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.