Generate musical tones at 440 Hz and 432 Hz with Arduino

Generate musical tones at 440Hz and 432Hz with Arduino

There is a lot of talk about musical scales, of music at 440Hz and 432Hz without at times understanding the meaning of it. In this article we will see how to generate musical scales, the theory behind them, and how to create music at 440Hz or 432Hz. We will do it all using an Arduino board, and a small speaker (or buzzer).

Seeweb - Cloud Hosting

What is Cloud Hosting

Cloud hosting is a service, provided by companies such as, which ensures the permanence of our site on the web, optimally managing the resources regarding the space and traffic that our site needs.

Installing OpenCV 4.x on Linux Ubuntu 18

OpenCV 4.x installation on Ubuntu 18

For more than a year, there have been some articles published on this site that make use of the fantastic OpenCV 3 library. The new OpenCV 4 version has just been released and as usual we will publish the compilation and installation procedure on Linux Ubuntu 18 systems.

Geiger Counter - Measuring radiation levels with Arduino

Geiger Counter – Measuring Radiation Levels with Arduino

Going back to the old boards that I found in a box, I found this Geiger counter perfectly functional to be interfaced as a shield to Arduino. In this article we will see its features together, and at the same time better understanding what a Geiger counter, or radiation sensor, is and how it works.

What is if __name__ is __main__ and why use it

What is if __name__ == “__main__” and why use it

For those who program in Python, they will be able to see the following construct within many codes, especially in the final part if __name__ == “__main__”: followed by a series of instructions enclosed in the indentation. What is it for? Why is it so common?

Thread in Python - Lock and Deadlock (part 4)

Thread in Python – Lock and Deadlock (part 4)

   In this article we will continue the Multithreading speech, introducing another very important tool: the Lock. Thanks to these, synchronization between the various threads can be managed more efficiently. We will also talk about another common problem in the thread world: deadlocks.

Thread in Python - Multithreading (part 3)

Thread in Python – Multithreading (part 3)

     In this third part of the Thread in Python series, we will look at some aspects of multithreading. In fact, in fact, threads can be very different from each other and often recursion methods to create and manage them, such as for loops, can no longer be used. There are therefore tools that allow you to manage different threads like ThreadPoolExecutor. However, thread management remains a complex operation that, if not well managed, can lead to problems such as the Race Condition. In this article we will look at these two aspects in detail.