Cet article traite de la migration de l’application CPL décrite dans un article précédant “Application domotique avec Arduino et CPL ” accessible ici vers une plateforme Arduino Leonardo.
La carte Arduino Leonardo (présentation ICI) est la première carte Arduino à utiliser une “vrai” liaison USB :
The Leonardo differs from all preceding boards in that the ATmega32u4 has built-in USB communication, eliminating the need for a secondary processor. This allows the Leonardo to appear to a connected computer as a mouse and keyboard, in addition to a virtual (CDC) serial / COM port. It also has other implications for the behavior of the board; these are detailed on the getting started page.
Un des premiers changements est de changer la liaison série par défaut de l Arduino Uno vers la liaison série non USB de l’Arduino Leonardo (car la liaison série par défaut de l’Arduino Uno est l’USB). La librairie Xbee doit donc être modifie (merci a http://arduino.cc/forum/index.php/topic,111354.0.html) en remplaçant la ligne:
_serial = &Serial;
par :
#if defined(USBCON) _serial = &Serial1; #else _serial = &Serial; #endif
Il faut aussi modifier la création de l’objet X10 pour ne pas utiliser une interruption “custom” car elles ne fonctionnent pas sur l’Arduino Leonardo voir http://vort.org/tag/bugs/ et http://code.google.com/p/arduino/issues/detail?id=714
On va donc utilise une interruption standard sur le pin 2 grâce au code suivant :
X10ex x10ex = X10ex( 1, // Zero Cross Interrupt Number (2 = "Custom" Pin Change Interrupt) 2, // Zero Cross Interrupt Pin (Pin 4-7 can be used with interrupt 2) 9, // Power Line Transmit Pin 10, // Power Line Receive Pin true, // Enable this to see echo of what is transmitted on the power line powerLineEvent, // Event triggered when power line message is received 1, // Number of phases (1 = No Phase Repeat/Coupling) 50 // The power line AC frequency (e.g. 50Hz in Europe, 60Hz in North America) );
au lieu de
X10ex x10ex = X10ex( 2, // Zero Cross Interrupt Number (2 = "Custom" Pin Change Interrupt) 4, // Zero Cross Interrupt Pin (Pin 4-7 can be used with interrupt 2) 5, // Power Line Transmit Pin 6, // Power Line Receive Pin true, // Enable this to see echo of what is transmitted on the power line powerLineEvent, // Event triggered when power line message is received 1, // Number of phases (1 = No Phase Repeat/Coupling) 50 // The power line AC frequency (e.g. 50Hz in Europe, 60Hz in North America) );
Après ça… tout fonctionne 😉
J’upload ici le REPO complet fonctionnel : ED2