9
votes

Problème pysérien avec Arduino - fonctionne avec la coquille Python mais pas dans un programme

D'accord, je suis donc positif que mon circuit arduino est correct et le code pour cela. Je le sais parce que lorsque j'utilise le moniteur série intégré à l'IDE Arduino et que j'envoie "H 'une LED s'allume, lorsque j'envoie" L' que le voyant s'éteint.

Maintenant, j'ai fait un programme Python < Pré> xxx

Lorsque j'exécute le code, le voyant clignote sur une seconde puis remonte. Cependant, lorsque je fais chacune de ces lignes séparément dans la coquille, cela fonctionne comme il est censé.

Des idées?


1 commentaires

Pourrait-il être lié à l'objet série étant recueilli des ordures?


4 Réponses :


6
votes

J'ai eu le même problème et cela fonctionne si j'ajoute un délai d'environ 2 secondes d'ouverture de la connexion série à l'écriture, 1 seconde n'était pas suffisante.


1 commentaires

Un délai de 2 secondes avant que l'écriture a résolu ce problème pour moi aussi.



8
votes

Lorsque vous ouvrez le port série, cela provoque la réinitialisation de l'Arduino. Étant donné que l'Arduino prend un peu de temps pour démarrer, toute l'entrée va au bitbucket (ou probablement au chargeur de démarrage qui sait que Dieu sait quoi avec elle). Si vous insérez un sommeil, vous attendez que l'Arduino mette de sorte que votre code série. C'est pourquoi cela fonctionne de manière interactive; Vous attendiez les 1,5 secondes nécessaires pour que le logiciel vienne.

J'ai confirmé que l'ouverture du port série réinitialise mon Arduino Uno ; J'ai flashé un programme qui clignotera le voyant de la configuration de la configuration de routine - appelant Ouvrir ("/ dev / tttyacm0") était suffisant pour déclencher la réinitialisation. Ceci est imho une ride confuse et sans papiers dans le support série.


1 commentaires

Voir ARDUINO Playground pour une explication.



1
votes

Juste pour en faire un peu plus clair Je modifierai le code afin que tout le monde puisse voir ce qui doit être ajouté!

import serial
import time
ser = serial.Serial("COM4",9600)
time.sleep(3)
ser.write("H")


0 commentaires

0
votes

En supposant que vous utilisiez un Arduino Uno

Le port USB et le bus Serial UNO exposé sur des broches 1 et 0 partagent le même rx / tx lignes. Je suggère d'obtenir une carte USB à ttl comme Celui ici afin que vous puissiez communiquer à l'Arduino sans utiliser le port USB. L'IDE Arduino a sa propre méthode de désengagement du pilote USB de sorte qu'un port série virtuel puisse être créé. Avoir votre ARDUNIO Utilisez logicielwaresérial à la place.

Voici un exemple I trouvé sur Internet où quelqu'un avait affluant Problèmes de bus.


0 commentaires