Pages: [1]   Go Down
Author Topic: PWM Prozentwert Ausgabe über serial klappt nicht....  (Read 716 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
God Member
*****
Karma: 6
Posts: 717
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,
möchte gerne, wenn sich der PWM Wert verändert, diesen als % ausgeben. Leider kommt immer nur 0 an.
Code:
float prozent[5];
.
.
.
default:
    analogWrite(stripePin[loop], i[loop]);
    prozent[loop] == i[loop]/256*100;
.
.
.
if (millis() - timemillis > 1000) {
  timemillis = millis();
  getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
  Serial.print(hour, DEC);
  Serial.print(":");
  Serial.print(minute, DEC);
  Serial.print(":");
  Serial.print(second, DEC);
  Serial.print("  ");
  Serial.print(dayOfMonth, DEC);
  Serial.print("."); 
  Serial.print(month, DEC);
  Serial.print(".");
  Serial.print(year, DEC);
  Serial.print("  Tag:");
  Serial.print(dayOfWeek, DEC);
  Serial.print("  LED1: ");
  Serial.print(prozent[0], 0);
  Serial.print(" % |");
  Serial.print("  LED2: ");
  Serial.print(prozent[1], 0);
  Serial.print(" % |");
  Serial.print("  LED3: ");
  Serial.print(prozent[2], 0);
  Serial.print(" % |");
  Serial.print("  LED4: ");
  Serial.print(prozent[3], 0);
  Serial.println(" %");
  }
 

LIegt der Fehler in der Varable? Aber habe mehreres durchprobiert. Bleibt bei 0:(
Hoffe ihr könnt helfen..:Danke
Logged

Oldenburg
Offline Offline
Sr. Member
****
Karma: 16
Posts: 270
Arduino, imagine the possibilities!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi,

auf die Schnelle eine Möglichkeit: Kommt Serial.print mit float klar? Setze doch zum testen mal prozent[loop] = 100 oder 55.5. Wenn das klappt liegt der Fehler woanders. Wenn nicht, dann deklariere mal prozent[] als integer.


Gruß

Sebastian
Logged

Libraries:
  - multiCameraIrControl [V1.6]
  -

Offline Offline
God Member
*****
Karma: 6
Posts: 717
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok, teste ich morgen mal aus.
welche variable nutze ich denn alternativ?
Wenn ich int nutze, diese Formel: i[loop]/256*100; aber einen Kommawert ergibt, kommt int damit klar? Streicht der einfach die Werte nach dem Komma? Oder wie geh ich dann damit um?
Ausgabe sollen eh nur ganze Zahlen sein
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 269
Posts: 21840
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo currymuetze

Du schreibst:
Code:
prozent[loop] == i[loop]/256*100;

Das heißt Du vergleichst 2 Variablen aber machst keine Zuweisung.

Für die Berechnung ist vorteilhaft, daß zuerst multipliziert wird und dann dividiert. So brauchst Du auch keine float Variable.

Code:
prozent[loop] = (i[loop] *100)/255

Grüße Uwe
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 107
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

i[loop]/256*100;

wenn die zahl hoch2 ist, dann shiftet man die , das geht schneller  bei 256....
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 269
Posts: 21840
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo currymuetze

Jetzt habe ich die Diskusion nochmal durchgelesen.

Die PWM beim Arduino hat 256 Stufen, beginnt aber mit 0. Darum ist 100% der Wert 255.

Wenn man genu rechnen will, muß man i[loop] durch 255 teilen. Wenn man einen kleinen Fehler in kauf nimmt und akzeptiert, daß nie 100% angezeigt werden kann man aucht durch 256 teilen bzw 8 mal bitweise nach rechts shiften.

Viele Grüße Uwe   
Logged

Pages: [1]   Go Up
Jump to: