Wednesday, August 21, 2019
Monday, 12 October 2015 12:46

Best EEPROM practices

(this article is a work in progress). My own advice will be added later...


Having a system that regularly writes parameters to the EEPROM can wear out the EEPROM, since it is only guaranteed to endure 100 k erase/write cycles. Writing the parameters to a circular buffer in EEPROM where each of the elements in the buffer can endure 100 k erase/write cycles can circumvent this. However, if the system is exposed to RESET conditions, such as power failures, the system needs to be able to identify the correct position in the circular buffer again. This document describes how to make safe high endurance parameter storage in EEPROM/

Read more:

Published in Arduino

As you may have noticed, each time you open or close COM port, your Arduino board resets. This may be good for development, but when you put something into production or just create an application that keeps the port open only while transmitting data, it's very disturbing.

There are two ways to prevent this from happening.

Published in Arduino

When you want to measure frequency in your Arduino project most likely you'll choose FreqCounter Library. However, despite FreqCounter is very precise, it may be unsuitable in some cases - because it affects PWM outputs of Atmega microcontroller, rendering analogWrite() functions inoperable.

In this article I'm going to show how to cope with it. However, an approach described here is not just a copy-and-paste solution, it will require adaptation to your project and you will have to do some things on your own. So this way, unfortunately, is not for beginners.

Published in Arduino
Monday, 05 August 2013 13:03

How it works: DS18B20 and Arduino

DS18B20There are many Arduinods18b20 sketches on the Web that provide sample code how to work with MAXIM’s (formerly DALLAS) DS18B20\DS18S20 digital temperature sensors. However, most of them do not describe the process in details. In this article, I’m going to show the gears that make the whole thing work.

Published in Arduino
Wednesday, 02 March 2011 23:00

Measuring frequency with Arduino

arduino megaThere are many signals that contain necessary information in frequency. For instance, SparkFun's HH100D humidity sensor outputs measurements via frequency signal (although it has i2C interface, those pins are used for reading calibration values. Actual measurements com via FOUT line).


There are two ways to measure a frequency with Arduino:

Published in Arduino
Friday, 03 December 2010 23:00

Reading iButton with Arduino

iButtons  readerWe all are familiar with iButton devices - a small chip used as a key almost everywhere:Those keys use Maxim's (formerly Dallas Semiconductor) 1-Wire protocol. It's a nice thing and it is used in many other devices, like temperature sensors (DS18B20, DS18S20 for instance).

As it comes from the name, 1-Wire devices require only one wire for data transfer. Some devices are also capable of using ithis line as a power source. (However, one will still need another wire - for ground).You can attach a large number of devices to the same line. That's especially well when you are using Arduino - OneWire line takes only one digital pin, and you theoretically can plug all you OneWire sensors, keys etc to this line.

Published in Arduino


HH10D is capacitive-type relative air humidity sensor. It is cheap (~$8) and relatively precise (±3%).

In this article I’ll describe how to connect and use it with your Arduino board.

You can download the datasheet from


Published in Arduino
Saturday, 16 June 2012 20:32

Arduino and watchdog timer

arduino-wdt Have you ever encountered situations when your Arduino-based device hangs?

There are many reasons for this - from millis() overflow in 49 days to moisture in outdoor sensors (causing them not to respond)...

But what if your device is not easily accessible and\or works for long periods without human supervision? Such situations should be prevented in this case. You don't want your plant watering system that you left to look after your plants and flowers during your vacation to hang on the second day, leaving your loved plants without water, really?

Most MCUs, including those used in Arduino, has a special feature, called Watchdog timer. Once it is configured, it checks for 'heartbeat' signals (or commands) that your MCU should issue. As soon as the time since the last pulse exceeds configured treshold, watchdog initiates reset sequence. This is really convenient, and ensures that your system will be in hanged state for no more than watchdog threshold.

I once encountered sudden hangs of my standalone arduino-based device. I run all possible tests, double-checked all circuitry, replaced MCU - with no effect. Finally I examined wires to external OneWire DS18B20 temperature sensor. The resistance between Vcc and GND was 600 Ohm! Then I looked through the window - it was foggy and raining... The insulation of the sensor was rather old and had a leak. As soon as I disconnected the wires leading from the sensor all problems were gone.
Semyon Tushev

I don't know, why there's not even a word about this in Arduino docs. Such things save a lot of trouble.

Published in Arduino


Here I publish articles related to my areas of interest, my brief notes that may save some time to others, as well as some of my works.

This site is a work in progress. I will add more sections in the future, such as

  • More photos to photogallery
  • More Joomla!-related articles
  • ...



New Posts

Spam/Forgery Notice

If you've received a spam email from, please know that this emails are...

07-03-2019 in Blog


Using dynamic GeoIP module with nginx (CentOS)

nginx introduced dynamic module support in v. 1.9.11. This brief article provides step-by-step procedure...

13-04-2016 in Linux, BSD, Unix


Visual difference between pseudo and true random data

This is is "random" image generated using PHP rand() function: And this is an image...

20-11-2015 in Blog

Scroll to top

We use cookies, just to track visits to our website, we store no personal details Privacy policy