As we saw in the previous post, the basic function of the "Blinker" object is to control the states of on and off of one or more channels autonomously. With it, we can control a few LEDs, a single LED, relays, or any other device that we want, reversing its value based on the seconds that we have defined.

But besides this, we can get other types of effects with the "callback" function. This function is passed
to the object "Blinker" at the time in which it is declared by the parameter "checker", but we can decide at
any time switch it to another function. This function receives an integer and we have to return another integer
with the new states of the different channels.

As we explained in the post The Blinker Object - Part I, the Blinker object works at bit
level and it associates each bit to a GPIO channel. Therefore, the state of each channel will depend on the bits
which are set to either the integer one or zero as returned by the associated function.

To demonstrate how it works, I will take the electrical diagram from the previous post, so you can see how easy
it would be to get different effects with minimal effort; the only limitations are this module, Python, our
Raspberry Pi and our knowledge.

In the Python code, I have defined six different functions: "random" that simply generates random numbers within
the range of 8 bits. The "shift2left", "shiftright" and "pingpong" functions show a simple effect of bit shift.
And in the "kitt" and “vumeter” functions, I attempt to simulate the effect of "Kitt" lights. For young folks,
"Kitt" was the protagonist of the series "Knight Rider", watch this video
if you want more information. ;)