If you’ve run out of I/O pins on a project and need a way to add user input you can find a slew of port expanders that work with various communications protocols like I2C and 1-Wire. But if you just want to add in some buttons without reaching for an extra IC you’ll love this hack. [John Boxall] shows how to add four buttons using one ADC pin.
The concept is nothing new. The buttons make up an R2R resistive ladder. When one of them is pressed, it completes the circuit for a voltage divider. The results are measured by the analog-to-digital converter of an IC to tell which button was pressed. The difficult part is calculating the resistor values. [John] is using eight resistors made up of just two different values. Every button and every combination of buttons has a unique voltage result which can be discerned by the chip. He even made a truth table so you don’t have to.
The example circuit seen in the video after the break uses an Arduino. But this concept is directly applicable to any microcontroller. And it should be quite easy to use an ADC interrupt to drive all of the button-read events. Continue reading “R2R ladder connects multiple buttons to one ADC pin”
[Udo Klein] was working with some 1N4148 transistors and was interested in the specs relating to their performance at different temperatures. The forward voltage actually changes quite a bit depending on temperature and wondered if this could be reliably measured. He hacked his own LED shield for the Arduino to use as a 1×20 thermal imaging system.
The screenshot above is mapping the voltage measurements from a row of diodes (see the video after the break to get the full picture). He’s holding an ice pack over the row of diodes and observing the change. The on-screen display is facilitated by a Python script which is pulling data from the Arduino. Since there aren’t enough analog inputs to read all twenty diodes separately they have been multiplexed. Four I/O pins each enable five of the diodes, readings are taken with five analog inputs before moving on to the next set.
What can this be used for? That is precisely the wrong question… sometimes you’ve just got to go where your curiosity takes you. Continue reading “Reading diodes to create a thermal imaging system”
If you haven’t yet wrapped up your Christmas shopping, you may want to consider building [AlanFromJapan’s] implementation of the ever-classic “Clapper”. With its theme song burned into the brain of anyone old enough to remember the 80s, the clapper was a wonderful device that certainly put the “L” in laziness.
Looking for an excuse to play around with an opamp and microphone [Alan] decided to build his own version of the Clapper based off this similar circuit, which he calls the ClapClap. He built the device using an electret mic that feeds a signal through a small amplifier on the way to the ADC of an ATmega328 microcontroller. The mcu constantly polls the ADC looking for the sound of clapping hands, a solution that works, but isn’t as clean as [Alan] wanted.
He went back to the drawing board, this time building a circuit around an ATtiny2313 microcontroller. Most of the other components remained the same, though the new, smaller design sports some nice PCBs he had made at Seeedstudio. Rather than constantly polling the ADC, this version of the ClapClap looks for peaks in the signal coming from the mic to identify the clapping of hands.
He says that the newer version works great, though he still has a software bug or two that need fixing before he parks himself on the couch for all eternity.
Some think that grinding the beans and filling the coffee maker is part of the coffee-drinking ritual, but [Jamie] isn’t one of them. Instead, he’s been working to make this coffeemaker a web-enabled device. He built it as part of a class project, and has implemented most of what you need to make a cup of Joe automatically.
You can see a small pump attached to the back of the coffee maker. It sucks water from a pitcher (slightly visible to the left of the coffee maker) to fill the reservoir. He experimented with a couple of different water level sensing solutions. His most recent is a PCB with several traces of different length. As those traces are covered by water, a voltage can be read via ADC to establish water level.
He’s using an Arduino and Ethernet shield to add connectivity for the device. The problem is that there aren’t enough ADC pins left on the Arduino to read the water level sensor. Because of this, he added a self-build shield that uses a PIC to do the ADC measurements and push digital data across to the Arduino. A bit complicated, and it doesn’t load the grounds automatically (yet?). But that’s not to say we don’t appreciate complicated coffee hacks.
Since we are in the midst of featuring a wide assortment of ATtiny hacks, [Kenneth] wrote in to share a project he has been developing over the last few months, the SerialCouple.
Most all development platforms have the ability to function as an analog to digital converter, but you don’t always need a full-featured board when all you require is serial output for your computer. With his SerialCouple board, [Kenneth] is trying to take some complexity out of the process by building a standalone thermocouple ADC board. The SerialCouple is designed to take analog readings from a thermocouple, converting them to digital values that can be sent to any device over a serial connection. The grunt work is done by a Maxim MAX31855 chip, which converts the thermocouple’s analog data to digital temperature readings. The digital representation of the temperature is then retrieved by the on-board ATtiny2313, which sends the data out the serial port.
If a standalone thermocouple ADC board is something you’ve been looking for, be sure to swing by his site to take a look at his code and schematics.
Continue reading to see a short video demo that explains how the SerialCouple works.
Continue reading “ATtiny Hacks: SerialCouple – A standalone thermocouple ADC board with serial out”
Following Maker Faire, we’ve had a few days to poke around with Digilent’s 32-bit Arduino-compatible chipKIT boards and compiler. We have some initial performance figures to report, along with impressions of the hardware and software.
Continue reading “chipKIT Uno32: first impressions and benchmarks”
[Daniel Garcia] sent us a quick tutorial he put together demonstrating how to use an ATmega168 to perform analog to digital conversions. This timely tutorial would make for a nice complimentary project for those of you who decided to build your own digital to analog converter after reading our post from a few days ago.
The ATmega168 has six pins that are typically used for digital I/O, but they can be used for analog input as well. In his example, he uses a trimpot as an analog input device, connecting it to one of the aforementioned analog pins. Its value is returned as a 16-bit number which is then displayed on the attached LCD. The LCD display and the breadboard layout used in this project are covered in his previous writeups, so be sure to give those a read through before working through this tutorial.