Offline
Newbie
Karma: 0
Posts: 27
|
 |
« on: April 16, 2012, 04:12:56 pm » |
Hallo zusammen,
bin noch nicht lange mit dem Arduino UNO unterwegs, und habe jetzt ein Problem bei dem ich nicht weiterkomme.
Ich möchte gern einen PWM-PIN abfragen (Pin 2). Wenn dieser Null ist soll der Digitalpin 10 eingeschaltet werden und umgekehrt. Ich hoffe ich habe mich soweit verständlich ausgedrückt.
Vielen Dank für die Hilfe im voraus
Gruß Bernd
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
BZ (I)
Offline
Brattain Member
Karma: 161
Posts: 15680
+39 349 2158303
|
 |
« Reply #1 on: April 16, 2012, 04:37:26 pm » |
Über Software geht das nicht? analogwrite(2,PWMwert); if (PWMwert==0) { digitalwrite(10, HIGH) } else { digitalwrite(10, LOW) } Grüße Uwe
|
|
|
|
|
Logged
|
|
|
|
|
Offline
God Member
Karma: 8
Posts: 620
42
|
 |
« Reply #2 on: April 16, 2012, 06:12:32 pm » |
Komiche Frage Uwe... wie sollte mab es sonst lösen?
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 231
|
 |
« Reply #3 on: April 17, 2012, 12:16:14 am » |
Wäre nicht analogRead(PWMwert besser ? :-))
|
|
|
|
|
Logged
|
|
|
|
|
Germany
Offline
Edison Member
Karma: 33
Posts: 1788
Arduino rocks
|
 |
« Reply #4 on: April 17, 2012, 12:21:23 am » |
Es ist immer wieder merkwürdig, wie Anfragen formuliert werden können, dass jeder was anderes darunter versteht.  Alkso ich habe das so verstanden: An Pin2 (Digitalpin) liegt ein Signal an, in diesem Fall eine PWM von einer externen Schaltung. Die ist gekennzeichnet durch ein bestimmtes Puls-Pause-Verhältnis, immer im Pausenbereich (also LOW) soll Pin 10 HIGH werden, also eigentlich nur eine Invertierung des Signals. Und da sind wir schon beim nächsten Punkt: Wofür soll das denn sein? Vielleicht gibt es ja bessere Alternativen als die Ver(sch)wendung eines Mikrocontrollers bzw. von dessen Pins.
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
BZ (I)
Offline
Brattain Member
Karma: 161
Posts: 15680
+39 349 2158303
|
 |
« Reply #5 on: April 17, 2012, 12:43:30 am » |
sth77, Deine Version hat was für sich da Pin 2 ja gar kein PWM -fähiges Pin ist. Dann würd ich es aber über pulsIn() lösen. KRISTALLKUGEL wo bist du? Grüße Uwe
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 27
|
 |
« Reply #6 on: April 17, 2012, 12:45:04 am » |
Hallo zusammen, entschuldigung, das meine Frage so verschieden interpretiert werden kann. Als Vorbild habe ich den Sketch aus diesem Topic: http://arduino.cc/forum/index.php/topic,95007.0.htmlDen Sketch habe ich soweit auf meine Bedürfnisse zugeschnitten. Mein PWM pin ist als blue1pin deklariert. Es geht um eine Lichtsteuerung. Der Pin wird soll tagsüber eine LED ansteuern. Ich möchte gerne den Pin (2) so abfragen, das wenn er ausserhalb der Zeit auf null ist, ein Digitaler Pin (10) eingeschaltet wird. Mit dem Aktiv werden von Pin 2 soll Pin 10 wieder ausgeschaltet werden. Ich hoffe das es jetzt etwas klarer ist. Gruss Bernd
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 18
Posts: 1297
|
 |
« Reply #7 on: April 17, 2012, 12:59:03 am » |
Wäre nicht analogRead(PWMwert besser ? :-))
Das geht aus 2 Gründen nicht. analogRead() liesst Daten von den analogen Pins und liefert einen Wert zwischen 0 und 1023, je nach anliegender Spannung (im Vergleich zu Referenzspannung). Mit analogRead() kann man nicht den aktuell auf einem PWM-Pin gesetzten Wert für PWM auslesen. Selbst wenn das ginge, hast Du ja trotzdem nur einen "gemittelten" Wert einer Spannung, der sich aus dem PWM-Verhältnis ergibt, aber nicht das PWM-Signal selbst.
|
|
|
|
|
Logged
|
|
|
|
|
Germany
Offline
Edison Member
Karma: 33
Posts: 1788
Arduino rocks
|
 |
« Reply #8 on: April 17, 2012, 01:03:12 am » |
Okay, ganz verstanden hab ich es noch nicht, leichter wäre es, wenn du deinen Code hier einstellen würdest. Also geht es im konkreten Fall nicht um die Invertierung eines Signals, sondern um nur um eine einfache if-then-Anweisung abhängig vom PWM-Wert? If (PWMwert==0) digitalWrite(10, HIGH); Reicht das nicht aus, ggf. noch durch ein else ergänzt? [edit] Okay, das läuft auf den Codeschnipsel von Uwe hinaus, nur eben ohne die analogWrite-Anweisung...
|
|
|
|
« Last Edit: April 17, 2012, 01:07:55 am by sth77 »
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 18
Posts: 1297
|
 |
« Reply #9 on: April 17, 2012, 01:14:50 am » |
Mein PWM pin ist als blue1pin deklariert. Es geht um eine Lichtsteuerung. Der Pin wird soll tagsüber eine LED ansteuern. Ich möchte gerne den Pin (2) so abfragen, das wenn er ausserhalb der Zeit auf null ist, ein Digitaler Pin (10) eingeschaltet wird. Mit dem Aktiv werden von Pin 2 soll Pin 10 wieder ausgeschaltet werden.
Ich hoffe das es jetzt etwas klarer ist.
So ganz verstehe ich das noch nicht. Wird der "PWM-Pin" von "Außen" geschaltet, oder ist das nur ein Wert innerhalb des Programms, der auf Pin 2 als PWM ausgegeben wird (was aber nicht geht, das Pin 2 kein PWM Pin ist) und Du willst nur für den Fall das der Wert innerhalb des Programms auf "0" steht den Pin 10 auf HIGH schalten? Wenn der Pin von außen ein PWM-Signal bekommt, dann hast Du vermutlich das Problem, das der Eingang ja zwischen HIGH und LOW hin und her schaltet. Jenachdem wann Du gerade den Pin abfragst, kann es passieren, das der halt gerade LOW ist, obwohl er ein PWM-Signal von außen bekommt. Dann solltest Du über pulseIn() auf einen HIGH-Puls warten und einen timeout-Wert angeben. Wenn der Timeout greift, kannst Du sicher sein, das kein PWM-Signal anliegt, sondern der Pin tatsächlich auf LOW steht.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 27
|
 |
« Reply #10 on: April 17, 2012, 01:26:27 am » |
Hallo,
Der PWM-Pin (2) dient zur Ausgabe und Steuerung einer LED. Diese soll den Sonnenaufgang, die Sonne und den Untergang simulieren. Der digitale Pin (10) soll ausserhalb dieser Zeit eine LED als Mond einschalten.
Meinen Sketch kann ich leider im Moment nicht zur Verfügung stellen, da ich arbeiten muss
Der angefügte Sketch funktioniert zwar, so ganz verstanden habe ich ihn aber auch noch nicht, und mein Wissen in Bezug auf Arduino programmieren steckt noch in den Anfängen. Ich kann mir zwar aus meinen Basic-Anfängen (vor 30 Jahren) innerhalb des Programms das ein oder andere zusammen reimen, aber das war es schon.
Ich hoffe ihr könnt mir weiter helfen
Gruss Bernd
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Jr. Member
Karma: 0
Posts: 65
|
 |
« Reply #11 on: April 17, 2012, 01:45:54 am » |
Naja, Uwe hat doch schlicht in "Arduinisch" genau das geschrieben was Du beschrieben hast.
Wenn Sonne aus dann Mond an sonst Mond aus.
Und in Basic sieht das doch fast gleich aus.
|
|
|
|
|
Logged
|
„Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher.“
Albert Einstein
|
|
|
|
Forum Moderator
BZ (I)
Offline
Brattain Member
Karma: 161
Posts: 15680
+39 349 2158303
|
 |
« Reply #12 on: April 17, 2012, 08:16:55 am » |
Ihr überseht fast alle, daß Pin 2 kein PWM Ausgang ist. Pin 10 ist PWM fähig. Also Sonne und Mond umtauschen  . Ciao Uwe
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Jr. Member
Karma: 0
Posts: 65
|
 |
« Reply #13 on: April 17, 2012, 08:31:23 am » |
...Also Sonne und Mond umtauschen  . Kannst doch nicht so einfach machen, wenn da jeder macht kommt ja das ganze Raumzeitgefüge durcheinander :-D
|
|
|
|
|
Logged
|
„Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher.“
Albert Einstein
|
|
|
|
Forum Moderator
BZ (I)
Offline
Brattain Member
Karma: 161
Posts: 15680
+39 349 2158303
|
 |
« Reply #14 on: April 17, 2012, 10:19:55 am » |
|
|
|
|
|
Logged
|
|
|
|
|
|