Hallo Leute,
ich möchte mit meinen Arduino einen RC Empfänger auswerten. Allerdings gleich 5 Kanäle.
Ich habe mal im Netz rumgeschaut und bin auf die Datei #include <RCReceive.h> gestoßen.
Anbei dieses Beispiel:
Dieser läuft auch wunderbar... aber wenn ich nun mehr als einen Kanal nutze wird der Script unglaublich Langsam.Code:include "makros.h" #include "debug.h" #include "RCReceive.h" const byte PIN_RC = 7; // Der Empfänger RCReceive rcReceiver; void setup() { Serial.begin(9600); rcReceiver.attach(PIN_RC); // put your setup code here, to run once: } void loop() { // Aktuellen RC-Wert lesen rcReceiver.poll(); // Nullpunktsbestimmung ? if (rcReceiver.hasNP() && !rcReceiver.hasError()) { doWork(); } else if (rcReceiver.hasError()) { // Fehlerbehandlung failsafe oder sowas... } } void doWork() { byte value = rcReceiver.getValue(); Serial.print(value); // put your main code here, to run repeatedly: }
Ich möchte eine Kamera über meine Funke bedienen. Dafür schalte ich mit Dioden die einzelnen Schalter -> das geht wunderbar.
Würde mich freuen wenn mir jemand bei den RC Problem helfen könnte.
MFG
- - - Aktualisiert - - -
Der Zweite Code laggt:
Code:#include "makros.h" #include "debug.h" #include "RCReceive.h" int zoomin = 3; int zoomout = 5; int foto = 4; int Focus = 2; int Video = 6; const byte PIN_RC7 = 7; const byte PIN_RC8 = 8; // Der Empfänger RCReceive rcReceiver; RCReceive rcReceiver2; void setup() { rcReceiver.attach(PIN_RC7); rcReceiver2.attach(PIN_RC8); // put your setup code here, to run once: } void loop() { pinMode(zoomin, OUTPUT); pinMode(zoomout, OUTPUT); // Aktuellen RC-Wert lesen rcReceiver.poll(); rcReceiver2.poll(); // Nullpunktsbestimmung ? if (rcReceiver.hasNP() && !rcReceiver.hasError()) { zoomfunktion(); } else if (rcReceiver.hasError()) { // Fehlerbehandlung failsafe oder sowas... } if (rcReceiver2.hasNP() && !rcReceiver2.hasError()) { fotofunktion(); } else if (rcReceiver2.hasError()) { // Fehlerbehandlung failsafe oder sowas... } } void zoomfunktion() { byte zoom = rcReceiver.getValue(); //Zoom if(zoom > 150){ digitalWrite(zoomin, HIGH); }else{ digitalWrite(zoomin, LOW); } if(zoom < 100){ digitalWrite(zoomout, HIGH); }else{ digitalWrite(zoomout, LOW); } } void fotofunktion () { //Foto byte foto = rcReceiver2.getValue(); if(foto > 150){ digitalWrite(foto, HIGH); }else{ digitalWrite(foto, LOW); } }







Zitieren

Lesezeichen