Forum: Mikrocontroller und Digitale Elektronik Servo am Arduino Positionsanzeige mit LED


von Rudi M. (Gast)


Lesenswert?

nachdem ich bei Google oder Youtube nichts Konkretes gefunden habe, 
stelle ich hier mal meine Frage. Vielleicht ist es ja ganz einfach, aber 
ich bin erstens 77 und zweitens absoluter Anfänger im Thema ARDUINO

Ich will (mehrere) Servos für eine Weichensteuerung unabhängig mit einem 
MEGA ansteuern. Die Servos bewegen sich ca. 30 Grad, die Spannung wird 
in den Endstellungen abgeschaltet.   Das kriege ich auch hin.

Jetzt hätte ich gerne die jeweilige Position des Servos durch LEDs 
angezeigt.
Hierzu finde ich nichts.

Geht das ohne zusätzlichen Aufwand? Kann man das im Sketch einbinden 
ohne zusätzliche Pins zu belegen?

Am Servo liegt jetzt ja keine Spannung mehr an.

Über eure Tipps freut und bedankt sich

Rudi

von STK500-Besitzer (Gast)


Lesenswert?

Möchtest du die LEDs in dein Stellwerk einbauen, oder wosu brauchst du 
die?
Wenn kein Strom fließt, kann leider auch nichts leuchten.

von Rudi M. (Gast)


Lesenswert?

ja, ins Stellpult einbauen.

ich kann mir vorstellen, dass das schon so mancher Modellbahner gemacht 
hat.

Meine eigene Idee wäre evtl. 2 MEGAs parallel ansteuern,
an einem die Moment-Ausgänge für die Servos, am anderen die 
Dauer-Ausgänge für die LEDs programmieren.

jeder Vorschlag hilft mir bei meinem Verständnis für Arduino weiter

Rudi

von Rene F. (Gast)


Lesenswert?

Hm, warum nicht mit Magneten und Reedkontakten die echte Weichenstellung 
abgreifen. Da hätte man auch gleich eine Kontrolle, ob der Stellvorgang 
funktioniert hat

von Rudi M. (Gast)


Lesenswert?

das ist natürlich die herkömmliche Lösung, die auch sicher und 
zuverlässig funktioniert. Allerdings würde ich anstelle der Reedkontakte 
Hallsensoren verwenden. Die sind wesentlich kleiner und unauffälliger zu 
kaschieren.

Eine elektronisch/digitale Lösung im Eigenbau würde mich aber mehr 
reizen

Rudi

von Hubert G. (hubertg)


Lesenswert?

Rudi M. schrieb:
> Meine eigene Idee wäre evtl. 2 MEGAs parallel ansteuern,

Was spricht dagegen?
Wie steuerst du den Arduino jetzt an?

von Stefan F. (Gast)


Lesenswert?

Rudi M. schrieb:
> Jetzt hätte ich gerne die jeweilige Position des Servos durch LEDs
> angezeigt. Hierzu finde ich nichts.

Ich verstehe dich so, dass du einen Arduino vorliegen hast, der deine 
Servos ansteuert. Zusätzlich sollen nun LEDs die Positionen der Servos 
anzeigen.

Im Prinzip sollte der Arduino stets wissen können, in welcher Position 
sich die Servos befinden. Dann kann er also auch entsprechende LEDs 
anzeigen.

Wo siehst du da die Schwierigkeit? Vielleicht:

a) Du weißt nicht, wie man LEDs ansteuert
b) Zu wenig Pins frei
c) Der Status nach dem Einschalten der Stromversorgung ist unklar
d) Du willst die tatsächliche Postion der Servos erfassen und anzeigen, 
nicht die Soll-Position.

Beschreibe dein Vorhaben nochmal genauer und gebe auch an, was das für 
Servos sind bzw. welche Eigenschaften sie haben (Anschlüsse, Spannung, 
DC/AC, Stromstärke, Timing) - nicht das wir uns in die Ansteuerung von 
völlig anderen Produkten verrennen. Den Teil den du bereits hinbekommst, 
solltest du zeigen, damit wir darauf aufbauen können.

von Rudi M. (Gast)


Lesenswert?

erstmal danke für eure Antworten

zu a) LEDs ansteuern ist ja die erste Übung beim Arduino. Allerdings 
liegen
       dabei ständig 5 Volt an. In meinem Programm wird die Spannung am
       Servo nach Erreichen der Position abgeschaltet.

zu b) es werden 10 - 12 Weichen geschaltet, damit sind beim MEGA nicht
      genügend Pins frei.
      Ich bräuchte pro Weiche noch zusätzlich 1 Pin für den Eingang und
      2 Pins für die beiden LEDs.
      Zumindest verstehe ich das so.

zu c) der Status beim Einschalten ist momentan noch nicht wichtig

zu d) die tatsächliche Position wäre ideal. Allerdings denke ich, dass 
die
      Servos vom Arduino exakt angesteuert werden und könnte deshalb 
auch
      die Anzeige der Soll-Position akzeptieren.

es sind die üblichen 5 Volt China-Servos für Modellbau.

hier mein Test-Sketch für 3 Servos, wobei die Pin-Belegung der Eingänge 
und Ausgänge zum Testen willkürlich festgelegt wurde:

    #include <Servo.h>


Servo W1;
Servo W2;
Servo W3;

int T1 = 52;
int T2 = 53;
int T3 = 40;
int T4 = 41;
int T5 = 46;
int T6 = 47;


void setup() {

  pinMode(T1, INPUT);
  pinMode(T2, INPUT);
  pinMode(T3, INPUT);
  pinMode(T4, INPUT);
  pinMode(T5, INPUT);
  pinMode(T6, INPUT);
}

 void loop() {

  if(digitalRead(T1) == HIGH)  {         //Servo W1 an Pin 9
    W1.attach(9);
    W1.write(0);
    delay(500);
    W1.detach();
  }

  if(digitalRead(T2) == HIGH) {
    W1.attach(9);
    W1.write(20);
    delay(500);
    W1.detach();
  }

 if(digitalRead(T3) == HIGH)  {          //Servo W2 an Pin A2
    W2.attach(A2);
    W2.write(0);
    delay(500);
    W2.detach();
  }
 if(digitalRead(T4) == HIGH)  {
    W2.attach(A2);
    W2.write(60);
    delay(500);
    W2.detach();
  }
  if(digitalRead(T5) == HIGH)  {         //Servo W3 an Pin 3
    W3.attach(3);
    W3.write(0);
    delay(500);
    W3.detach();
  }
 if(digitalRead(T6) == HIGH)  {
    W3.attach(3);
    W3.write(60);
    delay(500);
    W3.detach();
  }
}

von Stefan F. (Gast)


Lesenswert?

Zu wenig Pins kannst du relativ leicht durch Schieberegister (74HC595) 
umgehen - davon kann man theoretisch beliebig viele hintereinander 
schalten.

Dir ist also bewusst, dass man zur Erfassung der tatsächlichen Position 
zusätzliche Sensoren braucht, die du in diesem Fall einsparen möchtest. 
Also wirst du nur die Soll-Position anzeigen, die der Mikrocontroller 
zuvor an den jeweiligen Servo gesendet hat.

von Thomas G. (Firma: Frickelhauptquartier) (taximan)


Lesenswert?

Ich würde das so machen:
die Servos werden ja mit PWM angesteuert, 2 Weichenstellungen -> 2 
PWM-Zeiten (zb 13 ms Richtung 1, 18 ms Richtung 2) PWM = 13 ms Pin X 
low, PWM =18 ms Pin X High. Porterweiterung mittels Schieberegister

von Rudi M. (Gast)


Lesenswert?

Stefanus F. schrieb:
> Zu wenig Pins kannst du relativ leicht durch Schieberegister (74HC595)
> umgehen - davon kann man theoretisch beliebig viele hintereinander
> schalten.
>
> Dir ist also bewusst, dass man zur Erfassung der tatsächlichen Position
> zusätzliche Sensoren braucht, die du in diesem Fall einsparen möchtest.
> Also wirst du nur die Soll-Position anzeigen, die der Mikrocontroller
> zuvor an den jeweiligen Servo gesendet hat.

hallo Stefanus,

wie bereits geschrieben, könnte ich mit der Soll-Position leben.

Das Thema Schieberegister ist für mich neu und muss ich mal danach 
googeln.

Rudi

von Hubert G. (hubertg)


Lesenswert?

Also ein Arduino Mega hat (nicht nachgezählt) etwa 60 I/O.
Pro Weiche brauchst du drei I/O.

von Stefan F. (Gast)


Lesenswert?

Hubert G. schrieb:
> Also ein Arduino Mega hat (nicht nachgezählt) etwa 60 I/O.
> Pro Weiche brauchst du drei I/O.

Schieberegister haben allerdings den Charme, nur wenige Cent zu kosten. 
Sie beschützen das Arduino Board vor so mancher Dummheit.

von Rudi M. (Gast)


Lesenswert?

es sind laut Datenblatt 54 I/O Pins.

12 Weichen belegen 36 Pins
24 LEDs belegen 24 Pins

somit wären mindestens 60 Pins nötig und damit am MEGA nicht 
ausreichend.

Oder verstehe ich was falsch ?

Rudi

von Hubert G. (hubertg)


Lesenswert?

Wieso brauchst du für die Weichen je 3Pin und die Led je 2?

von Rudi M. (Gast)


Lesenswert?

mein laienhaftes Verständnis:

pro Weiche  1 x Input,  2 x Output

pro LED     1 x Input,  1 x Output  (pro Weiche  2  LEDs

Rudi

von Hubert G. (hubertg)


Lesenswert?

Rudi M. schrieb:
> pro Weiche  1 x Input,  2 x Output
>
> pro LED     1 x Input,  1 x Output  (pro Weiche  2  LEDs
>
> Rudi

Für dem Input brauchst du nur einen Pin und für die Led auch nur einen.
Ich weiss nicht wie du das Servo abschaltest. Wenn du da einen eigenen 
Pin benötigst, dann sind es nur 48 I/O.

Der Mega hat 54 digitale I/O und 16 analoge I/O. Die analogen lassen 
sich aber auch als digitale verwenden.

von HildeK (Gast)


Lesenswert?

Rudi M. schrieb:
> mein laienhaftes Verständnis:
>
> pro Weiche  1 x Input,  2 x Output
>
> pro LED     1 x Input,  1 x Output  (pro Weiche  2  LEDs
>
> Rudi

Mal mal eine Skizze, wie du das meinst. Ich verstehe nicht (bin auch 
kein Modellbahner), wozu der Input bei der Weiche, wozu der Input bei 
der LED.

Die LEDs sollen vermutlich den Zustand der Weiche anzeigen? Dann reicht 
auch ein Pin für zwei LEDs, wenn es eine Weiche mit nur zwei Zuständen 
ist:
1
                              VCC
2
                               +
3
                               |
4
                               |
5
                               V -> LED
6
                               -
7
                               |
8
                               |
9
                              .-.
10
                              | |
11
                              | |
12
                              '-'
13
                               |
14
                   Output µC---o
15
                               |
16
                              .-.
17
                              | |
18
                              | |
19
                              '-'
20
                               |
21
                               |
22
                               V ->  LED
23
                               -
24
                               |
25
                               |
26
                              ===
27
                              GND
28
(created by AACircuit v1.28.6 beta 04/19/05 www.tech-chat.de)
Wenn du den Output des µC auf HIGH stellst, leuchtet du untere LED, bei 
LOW die obere.

von Rudi M. (Gast)


Lesenswert?

Hubert schrieb:
"Für dem Input brauchst du nur einen Pin und für die Led auch nur einen.
Ich weiss nicht wie du das Servo abschaltest. Wenn du da einen eigenen
Pin benötigst, dann sind es nur 48 I/O."


ich verstehe das jetzt so, dass für das Servo und die LEDs ein 
gemeinsamer Input-Pin verwendet wird. Richtig?

Die Abschaltung der Servos erfolgt wie in dem Sketch ( weiter oben) 
gezeigt mit

        Wx.detach();

Rudi

von J. T. (chaoskind)


Lesenswert?

Ich hab jetzt nicht alles gelesen... Aber wenn ich das richtig 
verstanden hab, hast du Endlagenschalter an deinen Servos? Kannst du 
nicht einfach deren Signal abgreifen?

von Hubert G. (hubertg)


Lesenswert?

Rudi M. schrieb:
> ich verstehe das jetzt so, dass für das Servo und die LEDs ein
> gemeinsamer Input-Pin verwendet wird. Richtig?

Richtig.

>
> Die Abschaltung der Servos erfolgt wie in dem Sketch ( weiter oben)
> gezeigt mit
>
>         Wx.detach();

Mir sagt das Wx.detach();nichts, kenne die Funktion nicht. Aber selbst 
wenn du für diese Funktion einen eigenen Pin benötigst, sind es erst 48 
I/O.

von Rudi M. (Gast)


Lesenswert?

keine Endlagenschalter vorhanden.

Natürlich könnte ich Microschalter anbringen und damit die Ist-Position 
anzeigen.
Das will ich aber nicht unbedingt, Soll-Position würde reichen

Rudi

von J. T. (chaoskind)


Lesenswert?

Rudi M. schrieb:
> keine Endlagenschalter vorhanden.

Denn hab ich da was in falschen Hals bekommen...
Sorry ich stell grad fest, dass mir heut irgendwie die Ruhe fehlt.

von leo (Gast)


Lesenswert?

Rudi M. schrieb:
> Meine eigene Idee wäre evtl. 2 MEGAs parallel ansteuern,

Fuer 16 Servos + 32 LEDs (+ 16 Hallsensoren):

1 x PCA9685 Board (i2c, 16 PVMs aka Servos)
4 x 74HC595 (je 8 x Out Shift fuer LEDs)
ev. 2 x 74HC4051 (analog in Multiplexer f. Hallsensoren)

Damit hast du noch zig Pins frei f. die Modellanlagen der Nachbarn ;-)

leo

von Rudi M. (Gast)


Lesenswert?

@ Hubert

"detach" habe ich aus einem Video bei Youtube zur Weichensteuerung um 
die Spannung am Servo wieder abzuschalten. Das funktioniert ja gut.

Wo habe ich meinen Denkfehler zur Anzahl der Pins?

Meine Denke:

ich brauche pro Servo 1 x Input, 2 x Output   =  3 Pins

            pro LED   1 x Input, 1 x Output   =  2 Pins

 meine Rechnung:   12 Servos    12 x 3  =  36 Pins
                   24 LEDs      24 x 2  =  48 Pins


wenn für Servo und LED derselbe Input genommen werden kann komme ich auf
      12 Input-Pins gemeinsam
      24 Output-Pins für die Servos
      24 Output-Pins für die LEDs

also insgesamt 60 Pins.

Wie kommst Du auf nur 48 Pins ?

Wo denke ich falsch ?

Rudi

von Hubert G. (hubertg)


Lesenswert?

Rudi M. schrieb:
> wenn für Servo und LED derselbe Input genommen werden kann komme ich auf
>       12 Input-Pins gemeinsam
>       24 Output-Pins für die Servos
>       24 Output-Pins für die LEDs
>
> also insgesamt 60 Pins.
>
> Wie kommst Du auf nur 48 Pins ?

Ich weiss jetzt nicht wie du das Servo abschaltest und daher 2 Pin 
brauchst. Aber für die Leds brauchst du nur je einen Pin. Wie das geht 
hat HildeK ja schon aufgezeichnet.

von Rudi M. (Gast)


Lesenswert?

leo schrieb:
> Rudi M. schrieb:
>> Meine eigene Idee wäre evtl. 2 MEGAs parallel ansteuern,
>
> Fuer 16 Servos + 32 LEDs (+ 16 Hallsensoren):
>
> 1 x PCA9685 Board (i2c, 16 PVMs aka Servos)
> 4 x 74HC595 (je 8 x Out Shift fuer LEDs)
> ev. 2 x 74HC4051 (analog in Multiplexer f. Hallsensoren)
>
> Damit hast du noch zig Pins frei f. die Modellanlagen der Nachbarn ;-)
>
> leo

danke an  Leo,

das ist mir als Arduino Anfänger noch zu hoch. Werde aber mal googeln, 
vielleicht hilt´s weiter.
Trotzdem Dank für Deine Antwort

von Rudi M. (Gast)


Lesenswert?

ist ja toll wie das hier läuft. Ich komme mit dem Lesen eurer Antworten 
und Tipps kaum nach.

Für heute will ich euch allen danken und euch und mir noch einen 
geruhsamen Sonntagabend gönnen.

Ich werde dann alles nachvollziehen und mich mit Sicherheit und weiteren 
Fragen wieder an euch wenden.


a guat´s Nächtle wünscht aus dem Ländle

Rudi

von Roller (Gast)


Lesenswert?

Rudi M. schrieb:

> zu a) LEDs ansteuern ist ja die erste Übung beim Arduino. Allerdings
> liegen
>        dabei ständig 5 Volt an. In meinem Programm wird die Spannung am
>        Servo nach Erreichen der Position abgeschaltet.
>


>  void loop() {
>
>   if(digitalRead(T1) == HIGH)  {         //Servo W1 an Pin 9
>     W1.attach(9);
>     W1.write(0);
>     delay(500);
>     W1.detach();
>   }

Wenn du annimmst, daß mit detach() die Spannung am Servo abgeschaltet 
wird, dann liegst du falsch. Diese Funktion löscht nur eine 
Pin-Zuordung.

Siehe https://www.arduino.cc/en/Reference/ServoDetach

detach(): Detach the Servo variable from its pin. If all Servo variables 
are detached, then pins 9 and 10 can be used for PWM output with 
analogWrite().

Deine Servos hängen nachher alle parallel an der Versorgung, zumindest 
wenn du nicht zusätzliche Hardware vorsiehst, um sie abzuschalten.

von chris (Gast)


Lesenswert?

Rudi M. schrieb:
> pro LED   1 x Input, 1 x Output   =  2 Pins

Wozu brauchst du denn für die LEDs einen Input???

von Frank E. (Firma: Q3) (qualidat)


Angehängte Dateien:

Lesenswert?

Allgemeiner Vorschlag für Projekte mit vielen LEDs am Mikrocontroller: 
WS2812 (u.ä.)!

Dazu installiert man die NeoPixel-Lib von Adafruit und danach benötigt 
man für nahezu beliebig viele RGB-LEDs nur noch eine (!!!) Datenleitung 
am Arduino.

Die RGB-LEDs gibts als ca. 1cm breiten Klebestreifen, der beliebig 
auseinander geschnitten werden kann. Verbinden muss man die Teile nur 
mit 3 Leitungen (Plus, Masse, Daten). Man benötigt keine Vorwiderstände 
...

Sofern man die LEDs nicht zur Beleuchtung in full power Weiss, sondern 
nur zum Signalisieren in R, G, B verwendet, hält sich auch der 
Stromverbrauch in Grenzen. Die Lib bietet auch Befehle zur 
Helligkeitsbegrenzung.

Die - deutlich weniger romantische Variante - wäre es, anstelle realer 
LEDs ein virtuelles Stellwerk auf einem Monitor zu restellen ...

: Bearbeitet durch User
von Thomas G. (Firma: Frickelhauptquartier) (taximan)


Lesenswert?

Ist natürlich auch eine Möglichkeit, muss man auch erst mal drauf 
kommen.

von Manfred (Gast)


Angehängte Dateien:

Lesenswert?

chris schrieb:
> Wozu brauchst du denn für die LEDs einen Input???

Wenn Du den Thread liest, fällt auf:
Rudi M. schrieb:
> Allerdings würde ich anstelle der Reedkontakte Hallsensoren verwenden.

Übersetzt: Rudi will den tatsächlichen Istzustand abfragen.

Da frage ich jetzt, ob der µC damit überhaupt beschäftigt werden muss, 
Endschalter und LED gehen in reiner Hardware. Aktuelle LEDs in weiß, 
blau und grün sind schon unter einem mA eindeutig ablesbar.

von Rudi M. (Gast)


Lesenswert?

jede LED braucht doch einen eigenen Input, damit LED "xyz" weiss, dass 
der Taster "xyz" gedrückt wurde. Soweit meine Logik.

Wie geschrieben ist die Abfrage des Ist-Zustandes nicht unbedingt 
erforderlich.
Auch die Anzeige des Soll-Zustandes wäre für mich o.k., da es sich um 
eine relativ kleine Anlage handelt. Ausserdem weniger 
Verdrahtungsaufwand.

@Roller:
ich hab´s nachgemessen, Du hast Recht. 5 Volt liegen ständig an.
An + und GND natürlich sowieso, ebenfalls  an + und Steuerleitung.
In besagtem Video spricht der Autor allerdings von deaktivieren der 
Servos.
Das habe ich falsch interpretiert.
Seiner Aussage nach wird mit "detach" das Zittern der Servos verhindert.

Rudi

von Stefan F. (Gast)


Lesenswert?

Rudi M. schrieb:
> jede LED braucht doch einen eigenen Input, damit LED "xyz" weiss, dass
> der Taster "xyz" gedrückt wurde. Soweit meine Logik.

Dann schreibe das doch so auf, dann verstehen wir es alle:

Pro Weiche wird benötigt:

2 Eingänge für 2 Taster
1 Ausgang für zwei LEDs
1 Ausgang für das PWM Signal zum Servo

Ich finde den Vorschlag mit dem PCA9685 sehr gut, das ist mit Sicherheit 
die einfachste Lösung, viele Servos anzusteuern. Dazu gibt es fertige 
Arduino Libraries.

Für den Rest hast du dann wahrscheinlich schon genug Pins übrig. 
Ansonsten benutze Schieberegister (74HC595 für Ausgänge und 74HC165 für 
Eingänge) oder PCF8574 Chips mit I²C Bus. Auch dafür gibt es fertige 
Arduino Libraries.

Alles über I²C laufen zu lassen hat den Vorteil, dass du den 
Mikrocontroller besonders leicht durch jeden beliebigen anderen ersetzen 
kannst. Sicher wird für Dich irgendwann WLAN interessant. Mit dem 
Arduino Framework und einem ESP8266 Modul (z.B. NodeMCU oder Wemos D1) 
dürfte dieser Wechsel ziemlich einfach sein.

von Hubert G. (hubertg)


Lesenswert?

Wenn du für die Weichenschaltung zwei Taster und nicht (wie von mir 
angenommen)einen Schalter hast, dann brauchst du je Weichenservo 4 I/O. 
Da reicht ein Arduino Mega ja leicht aus und es bleiben noch mindestens 
12 I/O in Reserve.
Wenn du nicht vorhast das ganze wesentlich größer zu machen, würde ich 
mir das mit Portexpander und dergleichen nicht antun. Das lässt sich bei 
Bedarf immer noch problemlos nachrüsten wenn man die I2C-Leitungen 
freilässt.
Anschauen oder besser nachmessen sollte man, was mit dem PWM-Pin beim 
"detach" tatsächlich passiert. Ist der Pin dann hochohmig oder liegt er 
auf einem festen Potential.

von Oliver R. (roliver75)


Lesenswert?

Hallo Rudi,

Servo 3 Pin? Klar einem Servo und 2 Taster zum stellen. Eine Lösung 
wäre, pro Servo nur ein Taster und im Programm die Position merken, denn 
wenn Rechts dann nach Links bei Tastendruck und wenn Links dann nach 
Rechts. Somit nur ein Taster für jedes Servo, und schon ist der Pin für 
die zwei LED frei. Eine Led wie oben mit R an Gnd und die andere am 
selben Pin des Kontrollers mit R auf +5V.

somit nur 3 Pin:

1x Servo
1x Taster
1x 2 LED

Cool oder..


und Taster entprellen, und detach() ist gut dann Summen die Servo nicht 
mehr, benötigen aber immer noch Strom.

Gruß

Oliver

char SW1;


if(digitalRead(T1) == HIGH)  {
  if (SW1 == 'R')
   {
     W1.attach(9);
     W1.write(0);
     SW1 = 'L';  // bin Links
     delay(500);
     W1.detach();
   }
  else
   {
     W1.attach(9);
    W1.write(20);
    SW1 = 'R';  // bin Rechts
    delay(500);
    W1.detach();
   }
}

Beitrag #5848969 wurde vom Autor gelöscht.
von Rudi M. (Gast)


Lesenswert?

hallo Oliver,
ja das wäre cool !

Aber - beim Compilieren Deines Sketchs bekomme ich die Fehlermeldung
"expected unqualified-id before "if"

Ich kann da nichts falsches erkennen. Kannst Du einem Anfänger 
weiterhelfen ?

Rudi

von Oliver R. (roliver75)


Lesenswert?

bei mir gehts...
1
#include <Servo.h>
2
3
4
Servo W1;
5
Servo W2;
6
Servo W3;
7
8
int T1 = 52;
9
int T2 = 53;
10
int T3 = 40;
11
int T4 = 41;
12
int T5 = 46;
13
int T6 = 47;
14
char SW1 = '0';
15
16
17
void setup() {
18
19
  pinMode(T1, INPUT);
20
  pinMode(T2, OUTPUT); //jetzt Ausgang für die LEDs
21
  pinMode(T3, INPUT);
22
  pinMode(T4, INPUT);
23
  pinMode(T5, INPUT);
24
  pinMode(T6, INPUT);
25
}
26
27
 void loop() {
28
29
  if(digitalRead(T1) == HIGH)  {
30
  if (SW1 == 'R')
31
   {
32
     W1.attach(9);
33
     W1.write(0);
34
     digitalWrite(T2, HIGH); // LED nach GND an
35
     SW1 = 'L';  // bin Links
36
     delay(500);
37
     W1.detach();
38
   }
39
  else
40
   {
41
     W1.attach(9);
42
    W1.write(20);
43
    digitalWrite(T2, LOW); // LED nach +5V an
44
    SW1 = 'R';  // bin Rechts
45
    delay(500);
46
    W1.detach();
47
   }
48
 }
49
50
 if(digitalRead(T3) == HIGH)  {          //Servo W2 an Pin A2
51
    W2.attach(A2);
52
    W2.write(0);
53
    delay(500);
54
    W2.detach();
55
  }
56
 if(digitalRead(T4) == HIGH)  {
57
    W2.attach(A2);
58
    W2.write(60);
59
    delay(500);
60
    W2.detach();
61
  }
62
  if(digitalRead(T5) == HIGH)  {         //Servo W3 an Pin 3
63
    W3.attach(3);
64
    W3.write(0);
65
    delay(500);
66
    W3.detach();
67
  }
68
 if(digitalRead(T6) == HIGH)  {
69
    W3.attach(3);
70
    W3.write(60);
71
    delay(500);
72
    W3.detach();
73
  }
74
}

von Rudi M. (Gast)


Lesenswert?

ja klar...

vorher war ja nur ein Teil vom Sketch, habe ich zu spät bemerkt.

Ich werde das jetzt mal ausprobieren

wenn das so klappt, wäre das die geniale Lösung

Rudi

von Oliver R. (roliver75)


Lesenswert?

ja nur die Taster, bitte noch entprellen sonst ist es eine glück Sache 
mit den schalten...

einfach aber schlecht...
1
... Schnipp ...
2
3
if(digitalRead(T1) == HIGH)  { //Taste gedrückt?
4
   delay (50);
5
   if(digitalRead(T1) == HIGH)  { // immer noch gedrückt??
6
    if (SW1 == 'R')
7
     {
8
       W1.attach(9);
9
       W1.write(0);
10
       digitalWrite(T2, HIGH);
11
       SW1 = 'L';  // bin Links
12
       delay(500);
13
       W1.detach();
14
     }
15
    else
16
     {
17
       W1.attach(9);
18
      W1.write(20);
19
      SW1 = 'R';  // bin Rechts
20
      digitalWrite(T2, LOW);
21
      delay(500);
22
      W1.detach();
23
     }
24
  }
25
 }
26
27
... schnapp ...

von Rudi M. (Gast)


Lesenswert?

hallo Oliver,

das verwirrt mich jetzt alles ein bisschen.

Könntest Du mir Deinen Sketch für nur ein Servo mit 2 LEDs abändern?
Evtl. für eine Arduino UNO. Einfach mal zum Ausprobieren.
So ist mir das unübersichtlich.

Die Ansteuerung mit nur 1 Taster wäre super.

Wenn ich selber ändere bzw. reduzieren will, bekomme ich Fehlermeldungen 
die ich nicht ganz verstehe.

Meine Bitte ist vielleicht etwas unverschämt, aber mit  77 Jahren muss 
ich mich da erst langsam einarbeiten

Rudi

von Oliver R. (roliver75)


Lesenswert?

Ja Klar, moment... suche Taster Servo und UNO...

von Roller (Gast)


Lesenswert?

Oliver R. schrieb:
> ja nur die Taster, bitte noch entprellen sonst ist es eine glück Sache
> mit den schalten...
>
> einfach aber schlecht...
>
>
1
> ... Schnipp ...
2
> 
3
> if(digitalRead(T1) == HIGH)  { //Taste gedrückt?
4
>    delay (50);
5
>    if(digitalRead(T1) == HIGH)  { // immer noch gedrückt??
6
>     if (SW1 == 'R')
7
>      {
8
>        W1.attach(9);
9
>        W1.write(0);
10
>        digitalWrite(T2, HIGH);
11
>        SW1 = 'L';  // bin Links
12
>        delay(500);
13
>        W1.detach();
14
>      }
15
>     else
16
>      {
17
>        W1.attach(9);
18
>       W1.write(20);
19
>       SW1 = 'R';  // bin Rechts
20
>       digitalWrite(T2, LOW);
21
>       delay(500);
22
>       W1.detach();
23
>      }
24
>   }
25
>  }
26
> 
27
> ... schnapp ...
28
>

Entprellen von Tastern ist natürlich immer gut, aber die Ergänzung in 
deinem letzten Beispiel ist unnötig. Dein Beispiel davor funktioniert 
genauso gut, da nach Tastendruck und erkannter Aktion erst mal 500 msec 
(wegen delay(500)) nichts mehr abgefragt wird.
Der Nachteil der 1-Taster Lösung ist, wenn man zu lange auf die Taste 
drückt, wechselt das Servo alle 500 msec die Position.

@Rudi
Weshalb müssen es Taster sein? Willst du mit Taster und LEDs einen 
visuellen Streckenplan (Stellpult) bauen?

Mit einem simplen Ein/Aus Kippschalter wäre es etwas einfacher. Es 
reicht eine Eingangsleitung und es muss nur der aktuelle Schaltzustand 
abgefragt werden. Vor allem hast du damit automatisch den letzten 
Zustand von Weichen und LEDs 'gespeichert', und kannst in beim 
Einschalten des Prozessors wiederherstellen.

Bei einer Tasterlösung mußt du entweder immer den gleichen 
Anfangszustand herstellen, oder die letzte Einstellung anderweitig über 
einen Powerfail hinweg retten.

von Oliver R. (roliver75)


Angehängte Dateien:

Lesenswert?

Hallo Rudi,
hier bitte:
1
#include <Servo.h>
2
3
4
Servo W1;
5
6
int T1 = A0; 
7
int L1 = 8;
8
int S1 = 7;
9
10
char SW1 = '0';
11
12
13
void setup() {
14
15
  pinMode(A0, INPUT);
16
  pinMode(8, OUTPUT);
17
}
18
19
 void loop() {
20
21
  if(digitalRead(T1) == HIGH)  {
22
   delay (20);
23
   if(digitalRead(T1) == HIGH)  {
24
    if (SW1 == 'R')
25
     {
26
       W1.attach(S1);
27
       W1.write(00);
28
       digitalWrite(L1, HIGH);
29
       SW1 = 'L';  // bin Links
30
       delay(500);
31
       W1.detach();
32
     }
33
    else
34
     {
35
       W1.attach(S1);
36
      W1.write(200);
37
      SW1 = 'R';  // bin Rechts
38
      digitalWrite(L1, LOW);
39
      delay(500);
40
      W1.detach();
41
     }
42
  }
43
 }
44
}

Gruß

Oliver

von HildeK (Gast)


Lesenswert?

Rudi M. schrieb:
> jede LED braucht doch einen eigenen Input, damit LED "xyz" weiss, dass
> der Taster "xyz" gedrückt wurde. Soweit meine Logik.

Nein. Es reicht doch, wenn dein Prozessor weiß, dass Taster "xyz" 
gedrückt wird und dann die LED "xyz" zusätzlich einschaltet - und die 
andere aus.
Hast du meinen letzten Post angesehen?
Und mit obigem Vorschlag, nur einen Taster zum Umschalten zu verwenden, 
sind es nur zwei Pins pro Weiche.

HildeK schrieb:
1
>                               VCC
2
>                                +
3
>                                |
4
>                                |
5
>                                V -> LED
6
>                                -
7
>                                |
8
>                                |
9
>                               .-.
10
>                               | |
11
>                               | |
12
>                               '-'
13
>                                |
14
>                    Output µC---o
15
>                                |
16
>                               .-.
17
>                               | |
18
>                               | |
19
>                               '-'
20
>                                |
21
>                                |
22
>                                V ->  LED
23
>                                -
24
>                                |
25
>                                |
26
>                               ===
27
>                               GND
28
> (created by AACircuit v1.28.6 beta 04/19/05 www.tech-chat.de)

von Oliver R. (roliver75)


Lesenswert?

Hallo Rudi,

siehe oben, mit Bilder und Video...

ja nur ein Pin für beide LED...


Gruß

Oliver

von Rudi M. (Gast)


Lesenswert?

hallo Oliver,

zunächst vielen Dank für Deine Mühe.

Heute werde ich nicht mehr dazu kommen, das aufzubauen und zu probieren.

Trotzdem hoffe ich , dass ich baldmöglichst eine Erfolgsmeldung geben 
kann.

bis dahin


und auch danke an HildeK.
die Schaltung mit 2 LEDs an einem Output habe ich probiert, funzt prima 
!!


Grüssle aus dem Ländle

Rudi

von Stefan F. (Gast)


Lesenswert?

Wenn ich mir die Bilder ansehe, wird mir schwindelig.
Erscheinen die bei euch auch seltsam verzerrt?

von Rudi M. (Gast)


Lesenswert?

etwas verzerrt, aber trotzdem erkennbar

Rudi

von HildeK (Gast)


Lesenswert?

Stefanus F. schrieb:
> Wenn ich mir die Bilder ansehe, wird mir schwindelig.
> Erscheinen die bei euch auch seltsam verzerrt?

Ja, kommt immer wieder vor. Mir ist die Ursache unklar. Ev. mit dem 
falschen Bildbearbeiter gedreht?
Tipp: Klick auf den Filenamen des Bildes, es erscheint dann korrekt 
(zumindest im Firefox).

von Joachim B. (jar)


Lesenswert?

Rudi M. schrieb:
> jede LED braucht doch einen eigenen Input, damit LED "xyz" weiss, dass
> der Taster "xyz" gedrückt wurde. Soweit meine Logik.

braucht die LED einen eigenen Input, auch an der Ampel?
oder weiß die Grüne nicht das sie nur an sein darf wenn die Rote NICHT 
leuchtet.

> Wie geschrieben ist die Abfrage des Ist-Zustandes nicht unbedingt
> erforderlich.
> Auch die Anzeige des Soll-Zustandes wäre für mich o.k., da es sich um
> eine relativ kleine Anlage handelt. Ausserdem weniger
> Verdrahtungsaufwand.

du weisst doch wann dein Servo startet und stoppt, das wären die 
Endlagen und da könntest du dir einen Merker setzen und die LED 
einschalten

von Rudi M. (Gast)


Lesenswert?

hallo Oliver,

bin jetzt mal auf die Schnelle Deinen Sketch gedanklich durchgegangen.

Ein paar Zeilen verstehe ich nicht:

a)  was bedeutet die Zeile vor dem Setup

                 char SW1 = '0';


b)  was bedeuten die Zeilen

         if(digitalRead(T1) == HIGH)  {
        delay (20);
        if(digitalRead(T1) == HIGH)  {
         if (SW1 == 'R')


c)  W1.write(00);

    W1.write(200);

ich lese das so:    00 ist linke Position
                   200 ist rechte Position

ist dann jeder Zwischenwert möglich? Ich benötige ca. 30 Grad 
Drehwinkel.

Ich hatte jetzt noch keine Zeit zum Probieren und wäre für Deine 
Aufklärung dankbar.

Rudi

von Oliver R. (roliver75)


Lesenswert?

Hallo,


1. nur zur Initialisierung: char SW1 = '0'; kann auch durch char SW1 = 
'L';
   ersetzt werden.

2. ist zur Entprellung des Taster, da aber nach der Servo Steuerung so 
und
   so 500ms gewartet wird ist das nicht nötig.

3. waren werte für mein Servo damit der sich im Video auch deutlich 
bewegt,
   sollte durch deine Werte ersetzt werden.

die 30° musste man durch ändern der Werte ermittel.


Gruß

Oliver

: Bearbeitet durch User
von Rudi M. (Gast)


Lesenswert?

sodele,

Testaufbau am Breadboard mit Sketch von Oliver ist gemacht und läuft wie 
gewünscht


     beim ersten Tastendruck dreht das Servo nach links

          beim zweiten Tastendruck dreht das Servo nach rechts

               gleichzeitig wechseln sich die LEDs  ab

und es werden nur 3 Pins am Arduino benötigt.

Einziger Schönheitsfehler ist, dass bei längerem Tastendruck das Servo 
ständig hin- und her läuft.

Kann man das im Sketch evtl. noch ändern?

Ist jedoch auch so akzeptabel, da zur Weichenstellung ein kurzer 
Tastendruck genügt.

Ein weiterer Wunsch wäre, die Servobewegung zu verlangsamen .
Aber das wird evtl. zu aufwändig und ist auch nicht unbedingt 
erforderlich.

Das war jetzt also der Testaufbau am UNO.  Wenn ich das am MEGA für 12 
Weichen auch so hinkriege, bin ich happy.

Rudi

von Joachim B. (jar)


Lesenswert?

Rudi M. schrieb:
> Einziger Schönheitsfehler ist, dass bei längerem Tastendruck das Servo
> ständig hin- und her läuft.

dann lasse doch keinen weiteren Durchlauf zu bis nicht wenigstens der 
Taster einmal losgelassen wurde.

von Rudi M. (Gast)


Lesenswert?

hallo Joachim,

da hast Du sicherlich recht und klingt auch logisch.

Aber erkläre doch bitte einem Dummi, wie man das macht bzw. in den 
Sketch einbringt.

Danke schon mal

Rudi

von Oliver R. (roliver75)


Lesenswert?

1
if(digitalRead(T1) == HIGH)  { /// drin lassen um es zu Kapseln
2
  if(digitalRead(T1) == HIGH)  {
3
    if (SW1 == 'R')
4
     {
5
       W1.attach(S1);
6
       W1.write(00);
7
       digitalWrite(L1, HIGH);
8
       SW1 = 'L';  // bin Links
9
       delay(500);
10
       W1.detach();
11
     }
12
    else
13
     {
14
       W1.attach(S1);
15
      W1.write(200);
16
      SW1 = 'R';  // bin Rechts
17
      digitalWrite(L1, LOW);
18
      delay(500);
19
      W1.detach();
20
     }
21
  }
22
 while ( digitalRead(T1) == HIGH ) // warte auf loss lassen
23
  { 
24
     delay(1)
25
  }
26
}

von HildeK (Gast)


Lesenswert?

Rudi M. schrieb:
> Aber erkläre doch bitte einem Dummi, wie man das macht bzw. in den
> Sketch einbringt.

Ich kann zwar die Sketchsprache nicht, aber im Pseudocode geht das etwa 
so:
1
  if (Taste == HIGH) // Taste wurde gedrückt
2
  {
3
    delay (20);   // einfachste Art der Entprellung, nach 20ms nochmals abfragen, ob noch der selbe Zustand herrscht. 
4
    if (Taste == HIGH)
5
    {
6
      // tu etwas: Weiche umschalten, LED umschalten
7
      //
8
      // anschließend warten, bis der Taster wieder auf LOW ist (hier: losgelassen wurde): 
9
      while (Taste == HIGH); // einfach warten und nichts tun, solange Taste auf HIGH steht
10
    }
11
  // hier ist Taste dann auf jeden Fall wieder auf LOW
12
  }

von Rudi M. (Gast)


Lesenswert?

hallo Oliver,

ich lösche den "alten" Inhalt von void loop und kopiere Deine neue 
Zeilen da rein.
Bekomme dann aber Fehlermeldungen

kannst Du das bitte mal prüfen ?

Rudi

von Stefan F. (Gast)


Lesenswert?

Sag mal Rudi: Ich dachte du wolltest das selber programmieren, nicht 
programmieren lassen. Dies ist eine gute Gelegenheit, es zu lernen.

von OssiFant (Gast)


Lesenswert?

Da kann man echt neidisch werden, wie jung Rudis Hände geblieben sind 
(auf dem Video). War wohl Schreibtischtäter und Nivea-Großkunde :-)

von Rudi M. (Gast)


Lesenswert?

OssiFant schrieb:
> Da kann man echt neidisch werden, wie jung Rudis Hände geblieben sind
> (auf dem Video). War wohl Schreibtischtäter und Nivea-Großkunde :-)

hallo neidischer Ossi ohne Namen  -
vielleicht schaust Du nochmals nach, von wem das Video ist....

wir Schwaben sagen in solchen Fälle "saudomms´´s G´schwätz"


jetzt hoffe ich trotzdem noch auf sachdienliche Posts

Rudi

von Oliver R. (roliver75)


Angehängte Dateien:

Lesenswert?

Hallo Rudi,

hier noch mal, aber ab jetzt selbst probieren, ist jetzt auch mit Servo 
langsamer Bewegung...

Gruß

Oliver

von Logo (Gast)


Lesenswert?

Servos werden per ppm angesteuert und daraus lässt sich die Position 
ableiten.

So einfach ist das

von Rudi M. (Gast)


Lesenswert?

danke Oliver,

für Deinen letzten Sketch und die Mühe, die Du Dir gemacht hast um mir 
auf die Sprünge zu helfen.

Das ist jetzt genau das, was ich wollte - und es funktioniert SUPER !!!

Jetzt werde ich versuchen, das für die 12 Weichenantriebe auf dem MEGA 
umzusetzen. Dank Deiner Unterstützung denke ich, dass ich das jetzt 
alleine schaffe.

Danke auch an alle Anderen, die mir geholfen haben, Arduino besser zu 
verstehen.

Grüssle
Rudi

von OssiFant (Gast)


Lesenswert?

Rudi M. schrieb:
> hallo neidischer Ossi ohne Namen  -
> vielleicht schaust Du nochmals nach, von wem das Video ist....
>
> wir Schwaben sagen in solchen Fälle "saudomms´´s G´schwätz"

Lieber Rudi,

warum denn so unfreundlich? Deine Aussage passt doch eher auf Deine 
Reaktionen :-)

von Joachim B. (jar)


Lesenswert?

OssiFant schrieb:
> Da kann man echt neidisch werden, wie jung Rudis Hände geblieben sind
> (auf dem Video).

ja Alk tötet Zellen :)

Rudi M. schrieb:
> vielleicht schaust Du nochmals nach, von wem das Video ist....

der Hinweis war doch deutlich!

OssiFant schrieb:
> warum denn so unfreundlich?

irgendwie verständlich wenn eener aus dem Mus-topp kommt!

der Thread mit der Frage war vom Autor: Rudi M. (ykabel)

Das Video von Autor: Oliver R. (roliver75)

OK man hätte es auf dem Silbertablett mit Kreidestimme servieren können, 
aber bei dem Unterton:

OssiFant schrieb:
> Da kann man echt neidisch werden, wie jung Rudis Hände geblieben sind
> (auf dem Video).

schwang auch für mich unterschwellig "Lüge" mit, bezogen auf:

Rudi M. schrieb:
> ich bin erstens 77

: Bearbeitet durch User
von Coscar (Gast)


Lesenswert?

OMG ;-)

von Programmiersprachentheaterintendant (Gast)


Lesenswert?

HildeK schrieb:
> Ich kann zwar die Sketchsprache nicht, aber im Pseudocode geht das etwa
> so:

Sketchsprache aha... willst Du sagen dass du kein C/C++ kannst?

Warum verwendest Du geschweifte Klammern? (C-shell? Java? JavaScript? 
...?)

von Rudi M. (Gast)


Lesenswert?

danke an alle, die mir mit sachdienlichen Antworten geholfen haben.

Nachdem die letzten Beiträge mit meinem Problem nichts mehr zu tun 
haben, kann hier dicht gemacht werden

Gruss
Rudi

von Oliver R. (roliver75)


Lesenswert?

Hi,

Denke ich auch...

CU

von Steve S. (schrecke)


Lesenswert?

Hallo

Vielleicht kann mir bitte jemand helfen, ich habe die Weichensteuerung 
für 5 Weichen programiert, leider funktioniert nur W1, kann sich jemand 
bitte mal den Sketch anschauen ? Was mache ich falsch ??
1
#include <Servo.h>
2
3
4
5
Servo W1;
6
Servo W2;
7
Servo W3;
8
Servo W4;
9
Servo W5;                    
10
11
12
int T1 = A0;
13
int T2 = A1;
14
int T3 = A2;
15
int T4 = A3;
16
int T5 = A4;
17
int S1 = 22;
18
int S2 = 23;
19
int S3 = 24;
20
int S4 = 25;
21
int S5 = 26;
22
int L1 = 27;
23
int L2 = 28;
24
int L3 = 29;
25
int L4 = 30;
26
int L5 = 31;
27
28
char SW1 = '0';
29
30
void setup() {
31
  pinMode(A0, INPUT);
32
  pinMode(A1, INPUT);
33
  pinMode(A2, INPUT);
34
  pinMode(A3, INPUT);
35
  pinMode(A4, INPUT);
36
  pinMode(A5, INPUT);
37
  pinMode(L1, OUTPUT);
38
  pinMode(L2, OUTPUT);
39
  pinMode(L3, OUTPUT);
40
  pinMode(L4, OUTPUT);
41
  pinMode(L5, OUTPUT);
42
}
43
44
void loop() {
45
46
   if(digitalRead(T1) == HIGH)  {
47
    delay (20);
48
    if(digitalRead(T1) == HIGH)  {
49
      if (SW1 == 'R')
50
      {
51
        W1.attach(S1);
52
        W1.write(90);
53
        digitalWrite(L1, HIGH);
54
        SW1 = 'L';
55
        delay(500);
56
        W1.detach();
57
      }
58
      else
59
    {
60
      W1.attach(S1);
61
      W1.write(82);
62
      SW1 = 'R';
63
      digitalWrite(L1, LOW);
64
      delay(500);
65
      W1.detach();
66
      {
67
        if(digitalRead(T2)  == HIGH)  {
68
          delay (20);
69
          if(digitalRead(T2) == HIGH) {
70
            if (SW1 == 'R')
71
            {
72
              W2.attach(S2);
73
              W2.write(90);
74
              digitalWrite(L2, HIGH);
75
              SW1 = 'L';
76
              delay(500);
77
              W2.detach();
78
            }
79
            else
80
            {
81
              W2.attach(S2);
82
              W2.write(82);
83
              SW1 = 'R';
84
              digitalWrite(L2, LOW);
85
              delay(500);
86
              W2.detach();
87
              {
88
                if(digitalRead(T3)  == HIGH)  {
89
          delay (20);
90
          if(digitalRead(T3) == HIGH) {
91
            if (SW1 == 'R')
92
            {
93
              W3.attach(S3);
94
              W3.write(90);
95
              digitalWrite(L3, HIGH);
96
              SW1 = 'L';
97
              delay(500);
98
              W3.detach();
99
            }
100
            else
101
            {
102
              W3.attach(S3);
103
              W3.write(82);
104
              SW1 = 'R';
105
              digitalWrite(L3, LOW);
106
              delay(500);
107
              W3.detach();
108
              }
109
              if(digitalRead(T4)  == HIGH)  {
110
          delay (20);
111
          if(digitalRead(T4) == HIGH) {
112
            if (SW1 == 'R')
113
            {
114
              W4.attach(S4);
115
              W4.write(90);
116
              digitalWrite(L4, HIGH);
117
              SW1 = 'L';
118
              delay(500);
119
              W4.detach();
120
            }
121
            else
122
            {
123
              W5.attach(S5);
124
              W5.write(82);
125
              SW1 = 'R';
126
              digitalWrite(L5, LOW);
127
              delay(500);
128
              W4.detach();
129
            }
130
            if(digitalRead(T5)  == HIGH)  {
131
          delay (20);
132
          if(digitalRead(T5) == HIGH) {
133
            if (SW1 == 'R')
134
            {
135
              W5.attach(S5);
136
              W5.write(90);
137
              digitalWrite(L5, HIGH);
138
              SW1 = 'L';
139
              delay(500);
140
              W5.detach();
141
            }
142
            else
143
            {
144
              W5.attach(S5);
145
              W5.write(82);
146
              SW1 = 'R';
147
              digitalWrite(L5, LOW);
148
              delay(500);
149
              W5.detach();
150
            }
151
          }
152
            }
153
          }
154
              }
155
          }
156
                }
157
              }
158
            }
159
          }
160
        }
161
      }
162
    }
163
    }
164
   }
165
}



Vielen Dank

: Bearbeitet durch Moderator
von Stefan F. (Gast)


Angehängte Dateien:

Lesenswert?

Steve S. schrieb:
> leider funktioniert nur W1

Beschreibe, was das Programm tun sollte und was es stattdessen tut. 
Beschriebe schritt für Schritt, wie jemand dein Problem reproduzieren 
kann, der nicht auf deinem Schoß sitzt.

Welcher Zusammenhang besteht zwischen deinem Fall und dieser Diskussion? 
Wenn du schon die fette rote Meldung ignorierst, dann solltest du einen 
guten Grund haben. Der wäre?

Hast du dich vergewissert, dass die gewählten Pins für PWM geeignet 
sind? Welche Hardware verwendest du überhaupt? Gibt es keinen 
Schaltplan, oder wenigstens ein Blockschaltbild?

Benutze bitte Code Tags, wenn du Quelltext einfügst. Die entsprechende 
Anleitung steht direkt über dem Eingabefeld. Achte darüber hinaus, dass 
der Quelltext vernünftig eingerückt ist. Das da oben ist so nicht 
vernünftig lesbar. Ich verweigere, mich damit auseinander zu setzen. 
Mach das erstmal schön!

von mIstA (Gast)


Lesenswert?

Steve S. schrieb:
> ich habe die Weichensteuerung
> für 5 Weichen programiert, leider funktioniert nur W1, kann sich jemand
> bitte mal den Sketch anschauen ?

Hab jetzt nur ganz kurz mal drübergeschaut, aber wenn Deine Einrückungen 
einigermaßen zur Programmstruktur passen, dann dürfte der Code für die 
Weichen 2-5 innerhalb von irgendeinem if/else Block von Weiche 1 stehen 
und deshalb nur ausgeführt werden, wenn Weiche 1 gerade irgendwas macht.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Steve S. schrieb:
> Was mache ich falsch ??
1. Du beachtest fette rote Hinweise nicht:
1
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
2
Bitte hier nur auf die ursprüngliche Frage antworten,
3
für neue Fragen einen neuen Beitrag erstellen.

2. Du beachtest die Bedienungsanleitung nicht, die über jeder 
Texteingabebox steht:
1
Antwort schreiben
2
Wichtige Regeln - erst lesen, dann posten!
3
4
    Groß- und Kleinschreibung verwenden
5
    Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
6
7
Formatierung (mehr Informationen...)
8
9
    [c]C-Code[/c]

3. Du plenkst. Satzzeichen haben aber keine eigene Zeile verdient.

: Bearbeitet durch Moderator
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.