j'ai remplacé le print par un write, je ne connais pas bien la différence.
Un print manipule des chaines de caractères. Comme le print qui envoie des chaines à la console.
Un write manipule des octets sans s'occuper de leur valeur.
Le texte dans la variable mot ne semble pas initialisé, j'essaie d'y mettre la valeur vide avec la syntaxe suivante
mot == ""; est ce correct ?
Non ce n'est pas correcte et pour 2 raisons. En C on ne peut pas affecter une chaine à une autre comme ça. En plus l'opérateur == est un opérateur de test (test d'égalité) qui retourne un booléen.
Mot représente un pointeur sur un tableau en faisant mot = ""; tu modifies le pointeur pas son contenu.
Si tu veux initialiser ta chaine le plus simple c'est de faire:
mot[0] = "\0";
L'autre solution c'est d'utiliser des objets String (attention à la majuscule). Voir là http://arduino.cc/en/Reference/StringObject. Dans la librairies String il y a des surcharges d'opérateurs classiques qui permettent de faire des affectations de chaines avec = et des concaténation avec +.