Archive for July, 2010


This project refers to an Arduino sketch that implements an online Morse Code web encoder. The Morse Code is until now a global communication system. However, it is now rarely used (it has been previously extensively used in the Navy and the Army in general). In this project, the Arduino works as a server, which remote clients can be connected to with the help of TCP sockets and send occasional messages on a regular alphanumeric form.

For example: “SOS! USA NAVY (12/02/1920, 23:00)”

Continue reading

The presence of errors in software development (and not only) is inevitable. However, over time the programs improve and tend to perfection through various techniques and methods we have developed.

The deterministic problems are easy to spot because they always lead to the same error. There are tools that run through the source code of an application to find possible deterministic errors (these tools are especially useful in applications written with scripting languages such as Python, Bash Scripting, etc).

Continue reading

This project refers to an Arduino sketch that implements a motion detector using a passive infrared sensor (PIR), a piezo speaker, two switches for functions such as ON, OFF and an LED as function indicator. When the detector is in OFF state then it performs no real function (just turns off the function indicator), and when in ON state, then the program turns on the function indicator and checks whether there is motion (the detection range of the detector is about 6 feet) in the area (via the sensor PIR) to produce a tune with piezo speaker. This process is repeated continuously as long as there is movement and until the switch OFF is pressed.

Continue reading

Below I quote a function in C to convert a standard Linux kernel process into background service (Daemon Service). If you wish to develop a server to provide services, it may be helpful. Although there are several manuals on the Internet on how to create background services, most of them don’t show a complete example, while others are barely functioning. The following function converts a standard process into a service taking everything you need into account. Also, this function is the result of a combination of several textbooks and numerous studies about this issue. Finally, it has been tested on personal applications servers and it is performing well.

Continue reading

Below I quote a simple implementation in C that you can use in your applications for the management of software signals in POSIX operating systems (such as the GNU/Linux). Of course, this implementation comes from a personal project of the past, especially where I grappled with system programming. You can modify this implementation to work best with your needs.

Continue reading

Before I mention the function that I have developed for the production of random numbers from the monolithic Linux kernel, I would first like to say something about the issue of random numbers.

The issue of producing truly random numbers is important and had even since the beginning puzzled computer scientists. In mathematics, it is very difficult to define the random and, generally, randomness is very difficult to prove with no assumptions. In the past, many scientists tried to develop mathematical models and algorithms to develop random number generators.

One of the greatest scientists of Computer Science, John von Neumann (the basic idea of the architecture of all computer systems today was his own design) jokingly said: ‘Anyone who considers arithmetical methods of producing random digits is, of course, in a state of sin.’.

Continue reading

The QT provides an adorable way to store the settings of a program with a GUI (and not only) by means of the QSettings library. Below, we quote a personal version of the project ‘parkman‘ (Parking Manager).

Continue reading

Below I quote a simple but useful library (implemented in C++) which contains functions for comparing double precision floating point numbers.

Continue reading

This project refers to an Arduino sketch which allows the rotation of three dimensional shapes using appropriate sensors. Essentially, the Arduino collects values from the sensors and corresponds them to the [0, 360] range (rotation angle). Every time we get a pair of values (X, Y) for the rotation of the shape, the pair is sent over the USB serial port to the PC.

The PC runs a Python script which produces three-dimensional shapes with OpenGL. Also, the script obtains the pairs via the USB serial port and renews the current shape of the screen. For performance reasons, the three-dimensional shape is renewed only when there are changes in the pair (X, Y).

Finally, you should know that to run the Python script properly the Arduino should already be running and input sensors should have been calibrated regarding their edges. The calibration is performed automatically in the first 15 seconds (use two potentiometers as an example for both input sensors).

Continue reading

This project refers to an Arduino sketch which implements a POV (Persistence Of Vision) case for the representation of text messages which can contain the visible characters of the character set ASCII.

Continue reading