Übersetzungen dieser Seite:

Um Empfängersignal zu verarbeiten muss man zunächst den Empfänger an den Arduino anschliessen.
z.B. so:

Um das Empfängersingal auszulesen, bruacht man nur den Befehl

pulseIn()

(siehe auch hier)
Diese mißt den Puls an einem Pin direkt in Microsekunden. Ein normaler RC Impuls hat eine Breite zwischen 1ms und 2ms und kommt alle 20ms (50Hz) erneut. Während des Aufrufs von pulsIn() wartet das Programm mit der Weiterverarbeitung. Wenn alles gut geht, sind das max. 20ms. ISt aber die Verbindung unterbrochen, warum auch imemr, wartet der Befehl solange bis der Timeout (2. Parameter) abgelaufen ist. Das kann manchmal zu Problemen führen, vor allem wenn man neben dem Auslesen des Empfängers noch andere Dinge tun muss, z.B. mei einem Multicopter die Fluglage regeln. Deswegen sollte man bei größeren Programmen lieber den Empfänger per Interrupt abfragen. Sobald man einen Servo an den Arduino anschliessen möchte muss man auch auf die Interrupt Technik zurückgreifen. Denn sobald ein Servo aktiv ist, stört die Servo Bibliothek den pulsIn() Befehl. Hat man vorher noch konstnate Werte beim Empfang, fangen diese nach Einbinden der Servo Bibliothek an zu schwanken.
Deshalb verwende ich für den Anschluss grundsätzlich die digitalen Pins 2 und 3. Diese beiden Pins lösen bei richtiger Konfiguration automatisch einen Interrupt aus, wenn sich der Pegel ändert. Somit kann man ganz einfach die Signallänge ermitteln. Damit ihr das ganze nicht neu implementieren müßt, hab ich da schon mal was vorbereitet. Die RCReceiver Bibliothek nimmt euch einen großen Teil der Arbeit ab.
Schaut mal rein.

arduino/modellbau/empfaengersignale.txt · Zuletzt geändert: 2018/11/04 10:51 (Externe Bearbeitung)
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0