Pages: [1] 2   Go Down
Author Topic: PWM abfragen Digital schalten  (Read 1711 times)
0 Members and 1 Guest are viewing this topic.
Near Cologne
Offline Offline
Newbie
*
Karma: 0
Posts: 38
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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)
Online Online
Brattain Member
*****
Karma: 234
Posts: 20187
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Über Software geht das nicht?

Code:
analogwrite(2,PWMwert);
if (PWMwert==0)
{
digitalwrite(10, HIGH)
}
else
{
digitalwrite(10, LOW)
}

Grüße Uwe
Logged

Offline Offline
God Member
*****
Karma: 9
Posts: 721
42
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Komiche Frage Uwe... wie sollte mab es sonst lösen?
Logged


Offline Offline
Sr. Member
****
Karma: 2
Posts: 346
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wäre nicht analogRead(PWMwert besser ? :-))
Logged

Germany
Offline Offline
Edison Member
*
Karma: 44
Posts: 2261
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Es ist immer wieder merkwürdig, wie Anfragen formuliert werden können, dass jeder was anderes darunter versteht. smiley-wink
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

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 234
Posts: 20187
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Near Cologne
Offline Offline
Newbie
*
Karma: 0
Posts: 38
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.html

Den 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 Offline
Edison Member
*
Karma: 21
Posts: 1397
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Edison Member
*
Karma: 44
Posts: 2261
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Code:
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

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Offline Offline
Edison Member
*
Karma: 21
Posts: 1397
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Near Cologne
Offline Offline
Newbie
*
Karma: 0
Posts: 38
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Jr. Member
**
Karma: 0
Posts: 73
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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)
Online Online
Brattain Member
*****
Karma: 234
Posts: 20187
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ihr überseht fast alle, daß Pin 2 kein PWM Ausgang ist. Pin 10 ist PWM fähig. Also Sonne und Mond umtauschen  smiley-wink .
Ciao Uwe
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 73
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

...Also Sonne und Mond umtauschen  smiley-wink .

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)
Online Online
Brattain Member
*****
Karma: 234
Posts: 20187
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Eine ungedimmte Sonne aber auch nicht  smiley-cool smiley-cool smiley-cool smiley-cool smiley-cool smiley-cool smiley-cool smiley-cool smiley-cool smiley-cool smiley-cool smiley-cool  smiley-wink
Grüße Uwe
Logged

Pages: [1] 2   Go Up
Jump to: