INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Den Wert eines PWM Pins auslesen - was mache ich falsch?
25.11.2019, 07:52 (Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2019 08:11 von Gelegenheitsbastler.)
Beitrag #1
Den Wert eines PWM Pins auslesen - was mache ich falsch?
Ich möchte den Wert eines PWM Pins an einem Arduino Maga setzen, dann auslesen und im seriellen Monitor anzeigen lassen. Hierzu setze ich den Wert testweise auf 200. Der gesetzte Wert hat aber keinen Einfluss auf den im seriellen Monitor angezeigten Wert (schwankt im Bereich um 500)
Ich nutze die Arduino IDE 1.8.9

Wo liegt mein Fehler?

Code:
int W1_PWM = 2;
int W1_PWM_Zustand;

void setup() {
  Serial.begin(57600);
  pinMode(W1_PWM, OUTPUT);
  analogWrite(W1_PWM, 100);
}

void loop() {
  W1_PWM_Zustand = analogRead(W1_PWM);
  Serial.println(W1_PWM_Zustand);

  delay(700);
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.11.2019, 09:12
Beitrag #2
RE: Den Wert eines PWM Pins auslesen - was mache ich falsch?
Auch wenn sie ähnlich klingen: AnalogWrite und analogRead sind zwei vollkommen unterschiedliche Funktionen, die auch auf vollkommen unterschiedlichen Hardwarekomponenten im Arduino basieren ( d.h. sie funktionieren an unterschiedlichen Pins ). Das kannst Du nicht vermischen.
Wenn Du den PWM-Wert auf der seriellen Schnittstelle ausgeben willst, musst Du dir merken, was Du bei analogWrite ausgegeben hast, und diesen Wert dann ausgeben. 'Zurücklesen' vom Pin kannst Du das nicht.

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.11.2019, 09:27
Beitrag #3
RE: Den Wert eines PWM Pins auslesen - was mache ich falsch?
Wieder etwas gelernt. Vielen Dank für die Erklärung.
Ich habe es nun so abgeändert, dass ich es "digital" auslese:
Code:
W1_PWM_Zustand = digitalRead(W1_PWM);

Für meine Anwendung reicht es aus, zu wissen, ob der Ausgang komplett durchschaltet oder nicht.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.11.2019, 09:39
Beitrag #4
RE: Den Wert eines PWM Pins auslesen - was mache ich falsch?
Im Zusammenhang mit einem PWM-gesteuerten Ausgang macht das aber keinen Sinn.

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.11.2019, 09:55
Beitrag #5
RE: Den Wert eines PWM Pins auslesen - was mache ich falsch?
(25.11.2019 09:39)MicroBahner schrieb:  Im Zusammenhang mit einem PWM-gesteuerten Ausgang macht das aber keinen Sinn.

In meinem Fall schon. Ich muss nur wissen, ob voll aufgedreht oder nicht, um in einer If-Anweisung entsprechend reagieren zu können. Der obige Sketch diente nur der Ursachenfindung des Problems.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.11.2019, 09:59 (Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2019 10:01 von hotsystems.)
Beitrag #6
RE: Den Wert eines PWM Pins auslesen - was mache ich falsch?
(25.11.2019 09:27)Gelegenheitsbastler schrieb:  Ich habe es nun so abgeändert, dass ich es "digital" auslese:
Code:
W1_PWM_Zustand = digitalRead(W1_PWM);

Wie Franz-Peter dir schon geschrieben hat, macht das doch keinen Sinn.

Du steuerst doch den PWM-Wert über
Code:
analogWrite(W1_PWM, 100);

Da hast du doch schon das entsprechende Ergebnis.

Oder vermutest du, im Controller geht etwas von der Information verloren ?

In der nachfolgenen Hardware können Verluste entstehen. Da musst du dann aber an anderer Stelle messen.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.11.2019, 10:10 (Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2019 10:11 von Gelegenheitsbastler.)
Beitrag #7
RE: Den Wert eines PWM Pins auslesen - was mache ich falsch?
Wie schon geschrieben, dient der obige Sketch nur der Fehlersuche. Der Sketch, in dem das genutzt wird ist einige hundert Zeilen gross.

Ich ging davon aus, dass man den geschriebenen Wert wieder auslesen kann und hatte daher sinngemäss geschrieben:

if (W1_PWM_Zustand == 255) {...................}

Das hat aber nicht funktioniert, weshalb ich mir den Wert von W1_PWM_Zustand mal in den seriellen Monitor geholt habe. Was dort angezeigt wurde war mir suspekt. Daher mein Frage, was ich falsch mache. Dass man den gesetzten PWM-Wert nicht wieder auslesen kann war mir nicht bekannt. In meinem Sketch wird der nicht fix gesetzt, sondern langsam hochgezählt. Ich muss nur wissen, wann er auf 255 (digital 1) steht. Das reicht mir für die weitere Verarbeitung aus.

Die Geschichte mit der digitalen 1 scheint zu funktionieren. Alles, was kleiner als 255 ist, wird als 0 angezeigt.

Code:
int W1_PWM = 3;
int W1_PWM_Zustand;
int count = 0;

void setup() {
  Serial.begin(57600);
  pinMode(W1_PWM, OUTPUT);
  analogWrite(W1_PWM, 0);
}

void loop() {
  count = count + 1;
  if (count == 256) { count = 0;}
  analogWrite(W1_PWM, count);
  W1_PWM_Zustand = digitalRead(W1_PWM);
  
  
  Serial.println(count);
  Serial.println(W1_PWM_Zustand);
  if (W1_PWM_Zustand == 1) {Serial.println(" "); delay (2000);

  delay(7);

}}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.11.2019, 10:17 (Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2019 10:29 von hotsystems.)
Beitrag #8
RE: Den Wert eines PWM Pins auslesen - was mache ich falsch?
Warum Einfach....wenn es auch umständlich geht ?

Du brauchst doch nur "W1_PWM" count abzufragen und hast dein Ergebnis.
Da steht doch alles drin.
Gerne nochmal....im Conroller hast du da keine "digitalen Verluste".

Edit:
Sorry, war zuerst falsch.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Schrittmotoren bewegen mithilfe eines Joysticks schaarva 8 260 08.12.2019 15:15
Letzter Beitrag: MicroBahner
  SD-Karte Ersten und Letzten wert anzeigen Luis90 1 182 12.11.2019 12:23
Letzter Beitrag: Tommy56
Information Arduino Wert mit Drucktaster hochzählen und berechnen Pauli33_student 4 262 07.11.2019 21:35
Letzter Beitrag: Tommy56
  Werte in Arduino mittels Drucktaster eingeben und mittels Formel Wert berechnen Pauli33_student 5 306 04.11.2019 13:20
Letzter Beitrag: Peter_hno3
  PWM springt bei einem bestimmten Wert auf High fingerpfeifer 18 1.067 16.10.2019 22:31
Letzter Beitrag: fingerpfeifer
  Wert von einem Arduino zu einem zweiten Arduino senden Thorsten_S 9 768 14.10.2019 14:48
Letzter Beitrag: Thorsten_S
Lightbulb Abspielen einer Sounddatei durch Aktivierung eines Bewegungsmelders FeLu 6 518 03.09.2019 20:45
Letzter Beitrag: hotsystems
  Zufallsgenerator für die Pins 53-23 Gregor 10 1.066 17.06.2019 23:48
Letzter Beitrag: GuaAck
  delay Zeit falsch golex 9 1.359 24.05.2019 21:18
Letzter Beitrag: GuaAck
  Zeit vom Nextion Enhanced mit Arduino auslesen MarkoM 47 5.995 06.03.2019 18:08
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste