PWM als Variablen Wert zuweisen

wie kann ich beim PWM my_pwm.getValue der als Serial.print ausgegeben wird als Variable nutzen ? Ich möchte per PWM Signal Eingang einen Servo steuern .


#include "PWM.hpp"

PWM my_pwm(2); // Setup pin 2 for PWM

void setup() {
Serial.begin(115200);
my_pwm.begin(true);
}

void loop() {
Serial.println(my_pwm.getValue());
delay(100);

if (pwmValue = 100 ) _geht so nicht ______ ???????????????? wie muss diese Zeile aussehen ????????

{
servo.write(100);
}

}

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

Hast du wirklich eine PWM oder ein RC Signal?

Hallo,

man muss zwischen Zuweisung und Vergleich unterscheiden.
comparison-operators/equalTo
arithmetic-operators/assignment/

if (100 == my_pwm.getValue()) {
  // hier sinnvolle Dinge tun
}

Auch mit richtigem Vervgleich kann ich nicht erkennen, wo deine Variable definiert bzw. gefüllt wird.
Weiterhin ist dein Controller nicht bekannt und warum du nicht das PWM des verwendeten Controllers nutzt ?
Und bitte setze deinen Sketch in Code-Tags, damit dieser richtig lesbar ist.

Du weist wo zu PWM.hpp gut ist?
So wie mir bekant ist das ein Reader.

Vermutet habe ich es, aber die Fragestellung des TO @j-c-r-c ist so genau, ausführlich und informativ, dass ich einfach mal eine Gegenfrage stellen musste.

Danke das Funktioniert . Jetzt noch das letzte Problem wie kann ein Bereich festgelegt werden
Der Wert 100 soll bis 200 liegen . Da bekomme ich einen error was ist da Falsch ?

if ((100 >= my_pwm.getValue) && (200 <= my_pwm.getValue)) {

}

Ja das ist tatsächlich ein PWM Signal .

Richtig das PWM.hpp ist ein Reader . Und zwar ist das so das 1 Arduino
denn PWM Signal ausgibt und ein zweiter das PWM Signal aufnimmt und diesen
verarbeitet .

hinter getvalue fehlt ()

if ((100 >= my_pwm.getValue()) && (200 <= my_pwm.getValue()))

Alternative dazu ohne

Der 1. Ardu sendet mit Servo die Werte und der 2. benutzt pulseIn

Ja ?
Und welcher ? Es gibt nicht nur einen.

Nur warum brauchst du da 2 Arduino? Würde da nicht einer reichen ?

Vielleicht noch eine andere Variante, nachdem @wwerner die Klammern schon gesetzt hat:

switch (my_pwm.getValue())
{
  case 100 ... 200:
  // Hier mach was
  break;
  default:
  // Hier wenn es nicht passt
  break;
}

der default: break; - Teil ist optional.
Es spart Schreibarbeit und es wird übersichtlicher.

1 Like

Hallo,

wenn der gültige Wert zwischen 100 und 200 liegen soll, so verstehe ich den TO, dann muss die Abfrage mit if folgendermaßen lauten. Ihr habt einen vertauschten Operator übersehen. Kleiner gleich 100 und größer gleich 200 ist sicherlich falsch. :wink: So schreibe ich das,

if ( (100 <= my_pwm.getValue()) && (my_pwm.getValue() <= 200) ) {
  // sinnvolle Dinge tun
}

dann steht links der niedrigste Wert und rechts der höchste Wert, dazwischen muss die Variable liegen. Nach dem Motto von bis ist gültig.

Das entspricht auch dem case Ranges switch 100 ... 200.

1 Like

Eher

//if ( (100 >= my_pwm.getValue()) && (my_pwm.getValue() <= 200) ) // falsch

also beim ersten Vergleich >= und beim zweiten <= sonst gibt es keinen Sinn.

Sorry, war schon zu spät :wink:
Gruß Tommy

1 Like

Beim wem ist jetzt später Freitagabend?

  • 0 <= x <= 10 ergibt alle Zahlen zwischen 0 und 10
  • 0 >= x <= 10 ergibt alle x kleiner gleich 0 (x <= 0 und x <= 10)

... ich denke @Doc_Arduino liegt schon richtig.

Davon gehe ich ganz fest aus. :wink: Meine Glaskugel war zur Kalibrierung. :rofl:

Ein Abfrage auf kleiner gleich 100 und kleiner gleich 200 macht für mich keinen Sinn.

Und ich sach noch....

:grin:

Ihr habt ja so recht.

Gruß Tommy

1 Like