Peut-on conserver la liaison série avec une alim externe ?

Bonjour à tous,
Je debute en Arduino et je voudrais une petite précision sur l'alimentation de l'arduino:
Mon projet est une sorte de robot, et donc à terme, l'alimentation se fera uniquement sur une batterie (9.6V).
Mais pour la phase de mise au point, j'ai besoin du moniteur série et donc de la liaison usb.
Or, si j'alimente uniquement avec l'usb, je ne peux pas tester mes ponts en H car le courant disponible est trop faible .
Donc je voudrais savoir si c'est possible d'alimenter tout le circuit et l'arduino avec la batterie, puis de brancher le cable usb pour avoir la liaison pc.
Voila, j'espère que c'est assez clair,je vous ai mis un ptit shéma avec ^^
Merci d'avance.

Donc j voudrais savoir si c'est possible d'alimenter tous le circuit et l'arduino avec la batterie, puis de brancher la cable usb pour a voir la liaison pc

Oui c'est possible.

Il y a aussi l'option qui consiste à alimenter l'arduino avec le câble USB et le pont en H avec la batterie ce qui offre une bonne séparation des alimentations (utile en cas de problème lié au bruit sur les alimentations de puissance) pour autant que les masses des alimentations soient réunies.

Merci pour cette réponse rapide :slight_smile:
Du coup je confirme ca marche très bien ^^
Une autre ptit question qui a rien a voir : est ce que ya un moyen d'envoyer autre chose que des caractères à l'arduino avec le moniteur ? (du genre envoyer directement des int ou des float )

Ce serait vachement plus pratique quand même x)

Salut,

Pour le pb d'alim, j'avais coupé le fil VCC dans le câble USB pour que la carte ne soit alimentée que quand je mettais son alim en route, et ça marche très bien. Par contre, se rappelre que ce câble n'alimente plus rien :wink:

Pour les envois série, en fait, la liaison envoie des octets. C'est le terminal série qui les transforme en caractères pour afficher les données. Pour envoyer un word (16 bits) par exemple, je fais :

  word w = 0xF2B4;
  Serial.Write(lowByte(w));  // poids faible
  Serial.Write(highByte(w)); // poids fort

A ton récepteur de le récupérer du genre :

  byte d1, d2;
  word w;

  d1 = Serial.Read();  // poids faible
  d2 = Serial.Read();  // poids fort
  w = word(d2, d1);  // w = d2 * 256 + d1

C'est ce que je fais et ça marche très bien. Je n'ai jamais eu à envoyer plus que 16 bits, mais ça ne doit pas être plus compliqué.

Pour info, Serial.print(w) reviendrait à envoyer la chaîne de caractères "62132", soit 5 octets au lieu de 2 avec mon exemple, et convertir "32132" en une valeur numérique prend autant de temps que convertir 32132 en chaîne, bref, si tu es pressé, tu vois vers où te diriger :wink:

C'est dans le sens inverse que je voulais savoir (pc ===>arduino) mais merci quand même ^^.
C'est a dire ecrire un nombre dans le moniteur et le lire avec Serial.read().
Le probleme, c'est que la serial.read me renvoie le code ASCII du caractère que j'ai tapé ><
Juste pour les chiffres, c'est pas trop c**** de reconvertir, mais avec les nombres et les négatifs ...
Ptete que j'utilise la mauvaise fonction ,dite moi ^^

Et c'est là qu'il se faut se poser la question d'un protocole...
Voir http://arduino.cc/forum/index.php/topic,102540.0.html

Ok jvais regarder ça ^^