Spacecam
07.05.2015, 10:24
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:
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:
}
Dieser läuft auch wunderbar... aber wenn ich nun mehr als einen Kanal nutze wird der Script unglaublich Langsam.
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:
#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);
}
}
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:
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:
}
Dieser läuft auch wunderbar... aber wenn ich nun mehr als einen Kanal nutze wird der Script unglaublich Langsam.
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:
#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);
}
}