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
PWM mit Processing steuern
30.06.2014, 19:10 (Dieser Beitrag wurde zuletzt bearbeitet: 30.06.2014 21:22 von kimismenos.)
Beitrag #1
PWM mit Processing steuern
Hallo zusasmmen,

ich hab mir vor kurzem einen Arduino Uno geholt und versuche grade mit Processing die PWM eines Pins zu steuern.. komme aber bei der übermittlung eines Wertes nicht weiter. Confused

Mit der Suchfunktion hier im Forum komm ich auch noch nicht ganz klar.. oder zumindest finde ich nichts passendes und habe gehofft, dass mir vielleicht jemand von euch helfen kann.

Ich möchte zwei Werte mit processing an den Arduino übergeben, die der Arduino dann zuordnen soll. Einmal einen Wert für die PWM und dann noch einen zweiten für was anderes. Beide sind 1Byte groß.
Däfür habe ich mir überlegt zuerst 1Byte als "Selektor" voranzuschicken der angibt ob das nächste Byte für den PWM-Wert bestimmt ist oder für den Anderen. --> also insgesammt jeweils 2Bytes z.b.

0 (für pwm) 125 (der eigentliche Wert) => 0, 255 (dezimal)
oder
255 (für xyz) 125(der eigentliche Wert) => 255, 125 (dezimal)

Für den Arduino hab sowas in der Art geschrieben:

Code:
byte pwm = 255, d = 1;

if(Serial.available() > 0) {
    switch(Serial.read()) {
      case 0 : { pwm = Serial.read(); break; }
      case 255 : { d = Serial.read(); break; }
    }
  }

Aber irgendwie kommt nur blödsinn dabei raus.... Dodgy
In Processing verwende ich so etwas:

Code:
void send(boolean modus) {
  if(modus == true) {
      myPort.write(0);
      myPort.write(pwm);
  } else if(modus == false) {
      myPort.write(255);
      myPort.write(d);
  }
}

Hab auch diverse andere Kombinationen ausprobiert, wie z.B. dass beiden Seiten auf bestimmte Antworten zwischen den einzelnen Werten warten, damit das Ganze auch mehr oder minder synchron verläuft, da mein PC die Werte schneller liefert als der Arduino sie verarbeiten kann. Brachte aber alles nichts...

Zum Teil ist es so, dass die Werte zwar übermittelt und angenomen werden, aber zum falschen Zeitpunkt.... was heissen soll:

wenn ich den Wert stetig wachsen lasse von 0 auf 255 und bei 255 angekommen bin, dann wurden nur die Werte bis ungefähr 140 übermittelt.. der Rest bis 255 wird nur gesendet wenn ich weiter an dem "Regler" (=> eine Art Balken den ich in Processing programmiert hab) rumspiele.
Und zwischendurch werden lauter "0"-en empfangen... ????????


Es gibt doch siche eine feinere Methode dies hinzukriegen oder???
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.07.2014, 08:49
Beitrag #2
RE: PWM mit Processing steuern
Hi,
an dem Coding oben fällt mir nur folgendes auf: Wenn das erste Byte empfangen ist, dann heißt das noch lange nicht, dass auch ein zweites Byte schon angekommen ist. Das Coding nach der available-Abfrage dürfte viel schneller sein, als die Übermittlung des zweiten Bytes. Das zweite read() liefert dann -1 bzw als Byte 255. ...und dann geht die Synchronisierung total kaputt.
Versuch's mal mit
Code:
if(Serial.available() > 1)
Das würde ich nicht als endgültige Lösung nehmen, könnte aber zeigen, ob meine Theorie stimmt.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.07.2014, 15:13 (Dieser Beitrag wurde zuletzt bearbeitet: 03.07.2014 15:24 von kimismenos.)
Beitrag #3
RE: PWM mit Processing steuern
Hallo Thorsten,

danke erstmal für deine Antwort.

Mit Serial.available() habe ich auch schon rumexperimentiert...

Bin aber mitlerweile auf folgenden Code für den Arduino gekommen, der funktioniert:

Code:
while(Serial.available() > 3) {
    buffer = Serial.read();
      // Erst eine bestimmte abfolge an Bytes löst jedes Ereigniss aus..
      // .. das nächste, also 4. Byte ist dann der eigentliche Wert.
    if(buffer == 'P') {
      buffer = Serial.read();
      if(buffer == 'W') {
        buffer = Serial.read();
        if(buffer == 'M') { pwm = Serial.read(); analogWrite(9, pwm); }
      }
    }
    else if(buffer == 'F') {
      buffer = Serial.read();
      if(buffer == 'L') {
        buffer = Serial.read();
        if(buffer == 'A' && Serial.available() > 0 && Serial.available() < 4) flash = Serial.read();
      }
    }
    else if(buffer == 'S') {
      buffer = Serial.read();
      if(buffer == 'T') {
        buffer = Serial.read();
        if(buffer == 'O') flashState = !(flashState);
      }
    }

Und in processing folgendes:

Code:
void send(boolean modus) {
  if(modus == true) {  
                 .
                 .
                 .
      myPort.write("PWM");
      myPort.write(pwm);
  }
  else if(modus == false && strobe > 0) {
                 .
                 .
                 .
      myPort.write("FLA");
      myPort.write(flash);
  }
}

Somit hat sich das erstmal Erledigt!!

Falls jemand ne elegantere Lösung kennt, bitte posten!!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Servo über Temperatur steuern querkopf71 3 76 07.12.2016 19:21
Letzter Beitrag: hotsystems
  Arduino Steuern über eigne Homepage b3ta 8 405 16.08.2016 11:07
Letzter Beitrag: Pit
  PWM-Lüfter mit Adafruit Motor-Shield steuern? phischmi 9 465 22.07.2016 18:06
Letzter Beitrag: phischmi
  Steuern von 4 Servo mittels eines Taster und eines Potis Jackie09 17 764 16.07.2016 11:43
Letzter Beitrag: Binatone
  DC Motor in beide Richtungen steuern WIMunios 5 649 24.03.2016 12:04
Letzter Beitrag: Bitklopfer
  Mit RFID Sensor NFC Tags steuern WIMunios 14 926 15.03.2016 12:07
Letzter Beitrag: WIMunios
  WS2812 Helligkeit einzelner LEDs steuern mavericklp 3 666 11.03.2016 09:32
Letzter Beitrag: torsten_156
Bug Mit zwei Ultraschallsensoren die Drehbewegung eines Servos steuern Poet 5 566 21.02.2016 18:37
Letzter Beitrag: Carlo
  Suche deutsches Forum für Processing torsten_156 3 523 06.02.2016 13:12
Letzter Beitrag: torsten_156
  Über Pin43 den Pin42 steuern, ist das so richtig? arduinofan 5 493 01.02.2016 21:01
Letzter Beitrag: ardu_arne

Gehe zu:


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