cela pose plusieurs questions
1/ comment votre zigbee est attaché à votre ordinateur et comment l'avez vous configuré? vous supposez dans votre code Python que vous parlez au Xbee local à 9600 bauds et qu'il retransmet fidèlement ce qu'il reçoit sur une entrée série vers les ondes. est-ce que cela est fonctionnel? avez vous testé?
petit commentaire en python - pourquoi construire une String avec des concaténation (+) alors que tout est statique dans votre message?
print("Envoi au " + "/dev/ttyACM0 " + "à " + "9600 bauds" + "\n")
2/ côté récepteur vous utilisez la libraire standard du port série. est-ce que votre xbee est connecté et configuré à 9600 bauds sur ce port (0 et 1 de votre arduino) et retransmet-il fidèlement uniquement ce qu'il reçoit des ondes?
3/ while(Serial.available()==0);
ce n'est pas une bonne pratique de faire de l'attente active. vous bloquez votre arduino qui ne peut rien faire d'autre en attendant une commande de votre ordinateur. l'idéal est plutôt de faire un if. Si vous avez reçu un caractère alors faire une action, sinon passez cette étape, faire autre chose et laissez la boucle boucler. vous en aurez besoin par exemple si vous voulez faire autre chose que de bouger le servo, par exemple vérifier la batterie de votre aile volante, faire un calcul d'ajustement de trajectoire si vous avez un GPS, modifier la vitesse des moteurs en cas de coup de vent si vous avez un accéléromètre/un capteur qui mesure la position de votre aile volante, couper les moteurs en cas de choc (crash au sol), détection de la distance au sol pour se poser, etc...
4/ int pos = map(data,0,127,0,179);
vous avez lu 1 caractères qui est soit 'u', 'd', 'l' ou 'r'. la valeur de data est le code ASCII de ce caractère, soit 117, 100, 108 ou 114 respectivement. vous effectuez donc un calcul de fonction linéaire sur ce code d'entrée pour l'étirer un peu. 117, 100, 108 ou 114 vont devenir 164, 140, 152 et 160
je le sais parce que j'ai fait un petit code de test
void setup() {
Serial.begin(115200);
Serial.println(map('u',0,127,0,179));
Serial.println(map('d',0,127,0,179));
Serial.println(map('l',0,127,0,179));
Serial.println(map('r',0,127,0,179));
}
void loop() {}
donc vous allez demander à votre servo d'aller en 164, 140, 152 et 160 en fonction de la touche appuyée. la position est fixe. est-ce vraiment ce que vous voulez faire?