PWM Prozentwert Ausgabe über serial klappt nicht....

Hallo,
möchte gerne, wenn sich der PWM Wert verändert, diesen als % ausgeben. Leider kommt immer nur 0 an.

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

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

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

Hallo currymuetze

Du schreibst:

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.

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

Grüße Uwe

i[loop]/256*100;

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

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