Hi, bin ziemlich neu was Arduino programierung anbelangt und möchte mit einem RC-Empfänger über einen Kippschalter an der Funksteuerung eine Funktion über das Arduino ausführen. Wer kann helfen? Bin ein wenig verwirrt, mit welchem befehl ich da arbeiten muss, wre THRESHOLD eine Alternative?
Welche Daten gibt der RC-Empfänge für die Betätigung eines Kippschalter an der Funksteuerung aus?
Grüße Uwe
Das ist ein PWM Signal...
[erstaunt]ein PWM-Signal für einen Kippschalter?[/erstaunt]
Welches Tastverhältnis, Frequenz?
Grüße Uwe
uwefed:
[erstaunt]ein PWM-Signal für einen Kippschalter?[/erstaunt]
Bei Deinem Fachwissen stellt sich mir grad die Frage? War das sarkastisch gemeint?
Prinzipiell sind bei den meisten RC-Anlagen alle Kanäle gleich ausgelegt, als PWM-Signal. Damit kann man optionale Kanäle beliebig aufrüsten. Entweder mit nem Poti für nen weiteren Proportionalkanal, oder eben nen Kippschalter für nen Schaltkanal. Im Endeffekt schaltet der dann auch nur zwei Widerstandswerte, die das PWM-Signal steuern.
Wobei ja in den modernen Versionen dieser Dinger im Wesentlichen auch alles von nem kleinen Rechner geregelt wird.
English but might help -
Duane B
vieledinge:
uwefed:
[erstaunt]ein PWM-Signal für einen Kippschalter?[/erstaunt]Bei Deinem Fachwissen stellt sich mir grad die Frage? War das sarkastisch gemeint?
Prinzipiell sind bei den meisten RC-Anlagen alle Kanäle gleich ausgelegt, als PWM-Signal. Damit kann man optionale Kanäle beliebig aufrüsten. Entweder mit nem Poti für nen weiteren Proportionalkanal, oder eben nen Kippschalter für nen Schaltkanal. Im Endeffekt schaltet der dann auch nur zwei Widerstandswerte, die das PWM-Signal steuern.
Wobei ja in den modernen Versionen dieser Dinger im Wesentlichen auch alles von nem kleinen Rechner geregelt wird.
Danke für Deine Meinung über mein Fachwissen. Es ist aber nicht allumfassend.
Soweit ich weiß sind die Ausgangssignale am RC-Empfänger keine PWM sondern PPM moduliert ( 1 Impuls von 1mS bis 2mS Länge alle 20mS wiederholt).
Wenn das das Signal ist dann kann Arduino es ganz einfach mit der Funktion pulseIn() erfassen. http://arduino.cc/en/Reference/PulseIn
Grüße Uwe
uwefed:
Soweit ich weiß sind die Ausgangssignale am RC-Empfänger keine PWM sondern PPM moduliert ( 1 Impuls von 1mS bis 2mS Länge alle 20mS wiederholt).
Grmpf. Stimmt natürlich...
vieledinge:
uwefed:
[erstaunt]ein PWM-Signal für einen Kippschalter?[/erstaunt]Bei Deinem Fachwissen stellt sich mir grad die Frage? War das sarkastisch gemeint?
Nein, war nur erstaunt.
Grüße Uwe
Super, danke euch schon mal für die Antworten, aber mit diesem "pulsIn" komme ich gar nicht klar,
irgendwie weiß ich nicht was ich mit "duration" anfangen soll. bzw. was es bedeuten soll, also nicht die Übersetzung sondern die Anwendung. Ich hab da mal rumgespielt und versucht nen Code zu schreiben, aber bekomme immer einen Fehler bei "duration"
/*
RC-ON
*/
int led = 8; // LED auf Pin8
int rc = 12; // RC_In von Kanal 6
void setup() {
//Definition der Ein- und Ausgänge
pinMode(led, OUTPUT); // LED Ausgang
pinMode(rc, INPUT); // RC Eingang
}
// Start der Routine
void loop() {
duration = pulseIn(rc, HIGH);
digitalWrite(led, HIGH); // Schatet die LED an
}
bekomme immer einen Fehler bei "duration"
Wenn du nicht verrätst, welchen Fehler du bekommst, darf man dir eigentlich nicht helfen.
Aber fragen kann ich ja mal:
Hast du pulseIn mal nachgesehen ? http://arduino.cc/en/Reference/PulseIn
Könnte die Fehlermeldung bedeuten, dass du die Variable namens "duration" nicht deklariert hast ?
Siehst du die Zeile
unsigned long duration;
?
Was willst du nun mit der Pulsdauer anfangen ?
Sind das schon genug Fragen ?
Da hast du recht, zu viele offene Fragen,
Wenn du nicht verrätst, welchen Fehler du bekommst, darf man dir eigentlich nicht helfen.
Dazu bekomme ich die Fehlermeldung "duratin" was not declared in this scope.
Was willst du nun mit der Pulsdauer anfangen ?
ich möchte eine Led ansprechen erst einmal.
Siehst du die Zeile
unsigned long duration;
Ja aber weiß nicht so genau was ich damit anfangen soll?
Ich rate Dir mal die Fernsteuerung für eine Woche in die Ecke zu legen und ein Tutorial oder ein BeginnerBuch über Arduino großteils durchzuarbeiten.
Wir können Dir weiterhelfen aber die Grund-Grund-Regeln der C-Programmierung solltest Du schon kennen.
zB: http://arduino.cc/en/Tutorial/HomePage
Zu Deinem Problem:
Eine Variabile muß deklariert werden bevor Du sie benutzt.
mit "int led = 8;" machst Du es ja auch.
"duration = pulseIn(rc, HIGH);"
gibt Dir je nach Schalterstellung eine Zahl zwischen 1000 und 2000 zurück.
Du mußt den Wert kontrollieren und dementsprechend die LED ein oder Ausschalten.
if (duration>1500)
schalte LED ein
else
schalte LED aus.
Grüße Uwe
Danke!!!!