Source: https://www-soc.lip6.fr/trac/sesi-pmci/chrome/site/2015_cours6_arduino_codage_RC-5.pdf