Tonight I’m making a little Arduino mains relay timer. It’s for the box fan in my room. The timer built into the fan broke years ago but even before it did, the ticking noise was distracting when trying to go to sleep! But leaving it on all night means I wake up extra dehydrated. Hence, an electronic 2-hour timer for my fan.


Here's the code. (not yet tested tho!)
It compiles to 1222 entire bytes and uses a whole 10 bytes of RAM! I love embedded processors :crt_w_prompt: :blobsunglasses:

revisions to code: replace the hardcoded LOW/HIGH with constants, as it turns out the relay module is active-low; replace clockCounting with clockStart and == with >= in the comparison, whoops.

Show thread

Here’s the finished box plugged in and working. Not very exciting looking, but does the job and hopefully will continue to do so for years!

Show thread

@kirby unplug it, haha. I can use the off switch on the fan itself if I need to turn it off manually.

@kirby you know what, I think tomorrow I’ll change it so pressing it while it’s on does turn it off. Doesn’t hurt to have that option.

@s0 I'm so used to debouncing buttons that I still double-take when it clearly isn't needed. Noice!

@stibbons yeah, it's one of those things that's definitely good practise, but in this case all I need is to distinguish 0-499 ms press from 500+ ms press! The delay(500) does a good enough job of it -- since I don't have any concurrent timers/tasks, I might as well just hang waiting to sample again. If this was high-reliability I would probably debounce & check a minimum bound on the press duration too.

Sign in to participate in the conversation

cybrespace: the social hub of the information superhighway jack in to the mastodon fediverse today and surf the dataflow through our cybrepunk, slightly glitchy web portal support us on patreon or liberapay!