[Mitxela] wanted to build a different kind of mouse, one that worked like an Etch-a-Sketch toy with one X knob and one Y knob. Armed with some rotary encoders and a microcontroller, that shouldn’t be hard. But when you use a pin-limited ATtiny85, you are going to need some tricks.
The encoders put out a two-bit Gray code and close a button when you depress them. Plus you need some pins for the V-USB stack to handle the USB interface. [Mitxela] decided to convert the encoders to output analog voltages using a simple resistor DAC. That would only require two analog inputs, and another anlaog input could read both switches.
One problem: there still wasn’t quite enough I/O. Of course, with AVRs you can always repurpose the reset pin as an analog pin, but you lose the ability to program the device at low voltage. And naturally, there’s a workaround for this too, allowing you to keep the reset pin and still read its analog value. You just have to make sure that value doesn’t go below about 2.5V so the device stays out of reset. Once that was in place, the rest went easy, as you can see in the video below.
The “normal” way to build a spectrum analyzer is to collect a bunch of samples and run a Fast Fourier Transform (FFT) on them all in one shot. As the name implies, the FFT is fast, and the result is the frequency components of the sampled data. [agp.cooper]’s “wrong” way to do it takes the Goertzel algorithm, which is used for detecting the intensity of a particular frequency, and scanning across the frequency range of interest. It’s a lot slower than a single FFT but, importantly for the ATtiny85 that he implements this on, it’s less demanding of the RAM.
When you take a microcontroller class in university, one of the early labs they have you drudge through on your way to, promised, mastery over all things embedded, is a tiny music generator.
It’s a more challenging lab than one would expect. It takes understanding the clock of the microcontroller and its sometimes temperamental nature. It takes a clear mental picture of interrupts, and is likely one of the first experiences a burgeoning designer will have worrying about the execution time of one of their loops. Also tables, data structures, and more. It even requires them to go out of their comfort zone a learn about an unrelated field, a challenge often faced in practicing engineering.
Luckily [Łukasz Podkalicki] has done a great job of documenting the adventure. He’s got everything from the schematic and code to the PWM traces on the oscilloscope.
It’s also worth mentioning that he’s got a few other really nice tutorials for the ATtiny13 microcontroller on his blog. A tiny party light generator and a IR receiver among them.
[Pawel] has a weather station, and its nerve-center is a Raspberry Pi. He wanted to include a light sensor but the problem is, the Pi doesn’t have a built-in ADC to read the voltage off the light-dependent resistor that he (presumably) had in his junk box. You can, of course, buy I2C ADC chips and modules, but when you’ve already got a microcontroller that has ADC peripherals on board, why bother?
[Pawel] wired up a tremendously simple circuit, downloaded some I2C slave-mode code, and added an LED for good measure. It’s all up on GitHub if you’re interested.
We’re covering this because we rarely see people coding for I2C slave devices. Everyone and their mom uses I2C to connect to sensors, for which the Arduino “Wire” library or “i2c-tools” on the Pi do just fine. But what do you do when you want to make the I2C device? [Pawel]’s project makes use of TinyWireS, a slave-mode SPI and I2C library for AVR ATtiny Arduino projects.
Here, [Pawel] just wanted a light sensor. But if you’re building your own devices, the sky is the limit. What’s the most esoteric I2C sensor that you can imagine? (And is it really the case that we haven’t seen an I2C slave device hack since 2010?)
How hot is the water coming out of your tap? Knowing that the water in their apartment gets “crazy hot,” redditor [AEvans28] opted to whip up a visual water temperature display to warn them off when things get a bit spicy.
This neat little device is sequestered away inside an Altoids mint tin — an oft-used, multi-purpose case for makers. Inside sits an ATtiny85 microcontroller — re-calibrated using an Arduino UNO to a more household temperature scale ranging from dark blue to flashing red — with additional room for a switch, while the 10k ohm NTC thermristor and RGB LED are functionally strapped to the kitchen faucet using electrical tape. The setup is responsive and clearly shows how quickly [AEvans28]’s water heats up.
Okay, we haven’t even hit Halloween yet, but if you’re planning some kind of holiday project, now’s a good time to start ordering your parts, especially if you’re designing your own PCB. While there’s no PCB involved, [designer2k2] built a desktop “hollow” Christmas tree using some WS2812 RGB LEDs controlled by a microcontroller and powered by USB.
The board running [designer2k2]’s project is a Digispark, a USB powered board by Digistump which contains an ATtiny85. The LEDs, four different sized NeoPixel rings, plus a single pixel for the top, are connected together using some solid wire which makes for a very cool look. The code that runs on the ATtiny is the part that really makes this tree. The code cycles through colors and some light chaser effects, as well as a mode that shows a green tree with some white lights. The whole project is topped off by a routine that spells “XMAS” as you look at the tree from the top down.
We’ve seen some otherChristmastreehacks over the years controlled by various things, but this one is a fairly simple, cool design. [Designer2k2] also released the code for the tree and I’m sure a lot of us could come up with some more light designs.
DUO BINARY is a very, very small computer system in every possible sense. It runs on an ATtiny84, which has even got “tiny” in its name. The user interface is a single button for data entry and a single LED for feedback, making this binary keyboard look frivolously over-complicated. It uses a devilish chimera of Morse code and a truncated ASCII to enter data, and the LED blinks the same back at you.