Ich versuche einmal hier im Forum mein glück.
Kann mir vielleicht einer von euch ein kleines Programm für den Arduino Pro Mini schreiben.
Ich habe mich hier schon mit der Suche durchgearbeitete aber nichts gefunden was mir weiter hilft.
Meine Voraussetzungen.
Sender und Empfänger Modellfernsteuerung.
Arduino Pro Mini
Ein umgebautes Servo (Motor vom Poti mechanisch getrennt und das Poti auf Mitte gebracht) so das der Motor bei Empfänger Impuls von 1500 nicht mehr läuft.
Zwei Endschalter (Microschalter). Die Endschalter haben 3 Anschlüsse.
Mit diesem umgebauten Servo möchte ich eine Gewinde Platte mit Hilfe einer Gewindespindel
zwischen den zwei Endschaltern verfahren. Der Motor soll bei Erreichen des Endschalters stehen
bleiben und dann nur mit dem zweiten Signal in die Gegenrichtung zum andern Endschalter fahren.
Geschaltet wird mit einem 2 Stufenschalter am Sender.
Stufe 1 = Impuls 950 und Stufe 2 = Impuls 2050
Und als Start Voraussetzung dürfte der Motor beim Anlegen der Spannung (Einschalten)
nicht einfach losfahren.
Vielen Dank im Vorraus.
Joachim
@agmue
Danke! Diese Seite habe ich schon gefunden.
Nur funktionier das Programm bei mir nicht, auch weiss ich nicht
warum der eingang des Schaltkanals auf zwei Eingänge gelegt wurde.
Ein schaltkanal 1-0-2 hat nur einen Signalausgang am Empfänger.
So hier habe ich ein Programm gefunden was genau das machen soll was
ich brauche. Leider habe ich auch hier meine Probleme.
Kann vielleicht mal einer von euch hier rüber schauen und mir eventuell
weiterhelfen.
Problem ist das ich nur eine Endschalter zum laufen bekomme.
Sobald ich mit den Schaltkanal den Motor umpole läuft das Servo endlos
weiter ohne auf den Endschalter zu reagieren.
Vielleicht habe ich auch nur die Endschalter falsch angeschlossen.
Aber auf dem Bild ist für mich nicht ersichtlich welcher Anschluss an den Endschalter geht.
Am Endschalter sind COM__NO__NC.
wenn ich dich richtig verstanden habe, läuft er Richtung Endschalter Pin4 wenn Pin 4 nicht beschaltet ist,aber er läuft nicht wenn Pin 4 auf GND oder +5V liegt
Joachim-JG:
... auch weiss ich nicht warum der eingang des Schaltkanals auf zwei Eingänge gelegt wurde.
Es handelt sich um zwei unterschiedliche Ansätze. Du wertest die Länge des Servosignals, das vom Empfänger kommt, mittels Interrupt aus, um mit dem Arduino ein neues Servosignal zu generieren.
Bei dem von mir verlinkten Beispiel erhält der Arduino ein Signal für rechts und eins für links Drehen, so als wenn man zwei Taster hätte. Die Einbindung der Endschalter wäre aber von der Logik vergleichbar. Das gilt auch für die Mittelstellung.
Ich hätte nicht darauf gewettet, aber freue mich, daß Du die Kurve gekriegt hast
Dann ver(schlimm)bessere ich mal. Ich beziehe mich auf die von Dir verlinkte Seite.
Zunächst fallen mir die zwei LEDs ohne Vorwiderstand ins Auge, was ich grundsätzlich für problematisch halte. Ich habe hier im Forum schon gezeigt, daß das funktionieren kann, aber nicht muß.
Die Endschalter haben beim Umschalten einen kurzen undefinierten Zustand, was nicht nötig ist. Wenn man den Eingang mittels INPUT_PULLUP auf HIGH legt und den Schalter als Öffner mit GND verbindet - der dritte Pin bleibt unbeschaltet, hat man auch gleich eine Bruchüberwachung für das Kabel. Die Logik im Programm läßt sich ja leicht anpassen.
Der Stil des Sketches deutet auf mehrere Autoren:
#define PIN1 2
const int msdown = 5;
int led1 = 6;
Zum Lesen finde ich es angenehmer, Konstanten als solche erkennen zu können, also
const int led1 = 6; // output pin for LED 1
const int led2 = 7; // output pin for LED 2
const int led3 = 8; // output pin for LED 3
const int led4 = 9; // output pin for LED 4
const int led13 = 13; // onboard LED indictor incase no others are attached
Die Grenzwerte für die Microsekunden würde ich gut kommentiert als Konstanten definieren, damit Du auch in ein paar Monaten noch verstehst, was Du gemacht hast.
Serial.begin(115200); wird nirgendwo verwendet.
Wenn Du irgendwas davon umsetzen möchtest, bekommst Du bei Bedarf ausführlichere Erläuterungen. Und ich kenne mindestens zwei Forumsmitglieder, die mich freundlicherweise korrigieren, wenn das Greenhorn Unsinn schreibt.