Serielle Schnittstelle funktioniert nicht?

8

Ich habe ein Programm erstellt, das Daten an mein Arduino sendet, das erkennt, was gesendet wurde und dann den richtigen Pin entsprechend der gedrückten Taste einschaltet.

Wenn Sie die Arduino-Software von meinem Windows-Computer aus verwenden, funktioniert die Arduino-Skizze einwandfrei. Ich kann jeden Pin ein- und ausschalten, indem ich entweder W A S oder D sende.

Beim Senden über Knoten blinkt das RX-Licht auf dem Arduino, aber nichts anderes passiert.

Kann jemand helfen?

Node.js Programm:

%Vor%

Arduino-Programm:

%Vor%     
Ryan Walmsley 05.06.2012, 18:23
quelle

3 Antworten

9

Ich habe mich kürzlich damit beschäftigt. Der Arduino wird automatisch zurückgesetzt, wenn er serielle Kommunikation von den meisten anderen Dingen als der Arduino IDE empfängt. Aus diesem Grund können Sie von der IDE aus senden, aber nicht von node.js.

Ich habe ein Uno und setze einen Kondensator zwischen Reset und Ground. Hier ist eine Seite mit einigen guten Infos zum Thema.
Viel Glück. Ссылка

    
ZnArK 06.06.2012, 20:39
quelle
1

Beim Kondensator und Reset Problem ... Es gibt einen kleinen Kondensator zwischen einer der seriellen Steuerleitungen und zurückgesetzt auf dem Arduino in den späteren Modellen. Dieser Kondensator bewirkt, dass der Arduino zurückgesetzt wird, wenn der Port geöffnet wird, aber ansonsten den normalen seriellen Betrieb nicht beeinträchtigt.

Dieser Reset-Trick ermöglicht, dass der Code-Upload den Arduino als Teil des Upload-Prozesses zurücksetzt. Wenn der Arduino gestartet wird, wird der Code-Bootloader zuerst für kurze Zeit ausgeführt, bevor der geladene Code ausgeführt wird.

Der Upload-Prozess ist: Setzen Sie den Arduino zurück, der den Boot-Loader startet, starten Sie den Upload-Prozess in der Arduino IDE, stellen Sie die Kommunikation her, laden Sie den geladenen Code hoch und führen Sie ihn aus. Wenn der Arduino hochfährt, wartet er für kurze Zeit auf Uploads, wenn keiner empfangen wird, geht es weiter zum Ausführen des Codes.

Ich finde das sehr nützlich, da es uns ermöglicht, den Arduino einfach durch Schließen und Öffnen des Ports zurückzusetzen. In den alten Arduino, ohne diesen Kondensator, mussten Sie den Reset-Knopf zur richtigen Zeit drücken, um den Code zum Hochladen zu bekommen. Und das Timing war so, dass der Arduino viel mehr Zeit brauchte, bevor er mit dem hochgeladenen Code anfing.

In dem hier beschriebenen Problem glaube ich nicht, dass er irgendwelche Probleme aufgrund des verwendeten Reset-Tricks hatte. Es hätte nur den Effekt gehabt, den Arduino zurückzusetzen, als er die serielle Schnittstelle öffnete, und aus dem Aussehen seiner Informationen ist dies ein gewünschter Nebeneffekt.

    
dfowler7437 09.01.2013 18:34
quelle
1

Ich benutze Knoten jeden Tag, um Aktionen zu meinem Arduino über USB oder über BT zu senden und es funktioniert in beiden Fällen gut. Ich denke, dein Problem kommt von Briefen. Sie sollten stattdessen einen Puffer mit dem ASCII-Wert des Buchstabens senden:

%Vor%

Ich denke auch, dass Sie mit einer "logischen" Schnittstelle besser wären, mit Datenheadern, einer Anzahl von Aktionen, solchen Sachen. Es ist nicht erforderlich für Sie, aber es macht Ihren Code robuster und einfacher in der Zukunft zu ändern.

Hier ist ein Beispiel, wie ich es mache. Erstens, Knoten:

%Vor%

Dann nennst du sie wie du:

%Vor%

Auf diese Weise ist es für den Arduino einfach, Serial.read () die Daten: (Beachten Sie, dass Sie Datenheader und Datenfuß irgendwo definieren müssen)

%Vor%

Ich hoffe ich bin klar und ich hoffe es hilft! Prost!

    
ladislas 21.08.2013 13:51
quelle