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
  Schrittmotor Geschwindigkeit mit Wägezelle + HX711 Modul steuern Schrittmotor 10 1.286 30.08.2017 23:45
Letzter Beitrag: hotsystems
  Servo mit einem Taster und 433mhz steuern Thor Wallhall 63 3.492 29.07.2017 11:02
Letzter Beitrag: Thor Wallhall
  2 Servos ohne delay steuern Ratlos 27 2.542 26.07.2017 20:43
Letzter Beitrag: MicroBahner
  Roboter kompassgestützt steuern Snörb 5 826 22.07.2017 12:16
Letzter Beitrag: Snörb
  Neo Pixel Clone mit 7 2812B Steuern Lil-De 8 701 12.06.2017 22:02
Letzter Beitrag: Lil-De
  RGB Animation über Serial Steuern Medolino 5 834 20.02.2017 16:14
Letzter Beitrag: Medolino
  Mehrere Servos gleichzeitig steuern (Hexapod) scritch 7 1.034 25.01.2017 08:18
Letzter Beitrag: scritch
  Über drei Taster zwei externe Timer steuern Sidamo 23 1.625 09.01.2017 20:12
Letzter Beitrag: Tommy56
  Servo über Temperatur steuern querkopf71 3 801 07.12.2016 19:21
Letzter Beitrag: hotsystems
  Arduino Steuern über eigne Homepage b3ta 8 910 16.08.2016 11:07
Letzter Beitrag: Pit

Gehe zu:


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