Von Byte nach unsigned long rechnen..

Hallo,

ist das hier erlaubt, weil das Ergebnis unsigned long sein wird, oder kann das Probleme machen, weil rechts vom >= ausschließlich mit Bytes gerechnet wird?

static unsigned long lastBlinkTime;
static byte glow = 50;
static byte gap = 100;
static byte glowCount;


if (millis() - lastBlinkTime >= (gap + glow) * glowCount)
{
  // blabla;
}

Danke.

Gruß Chris

Hi Chris ....

In meiner Sprücheliste finden sich 2, welche hier passen!
http://combie.de/sprichwoerter/
z.B:

Diese Frage ist zu gut, um sie mit einer Antwort zu verderben.

Oder:

Ob ein Mensch klug ist, erkennt man viel besser an seinen Fragen als an seinen Antworten.

:sunglasses: Also verzichte ich mal auf eine Antwort! :sunglasses:
Und liefere dir 2 Fragen:

  1. Warum probierst du das nicht eben aus?
  2. Warum schaust du nicht in dein C/C++ Grundlagen Buch?

Stimmt, Fragen sind besser als Antworten. :wink:

Vielleicht wird bei byte*byte mit standard integer (16 bit) gerechnet und es funktioniert deshalb ?

Intreressanter ist eher dein
static byte glow=50;

Ist das was anderes als
static byte glow;
glow = 50;

Wie oft wird in den beiden Versionen glow auf 50 gesetzt ?
Bzw. warum ist es static und nicht const ?

glow wird hier einmalig auf 50 gesetzt. Sollte der Wert innerhalb der Funktion nicht noch andersweitig auf einen anderen Wert gesetzt werden, ist wie Michael bereits schrieb, const die bessere Variante.

"(gap + glow) * glowCount" kann funktionieren. Aber warum probierst du das ganze nicht einfach aus? Sinnvoller wäre es, direkt dem Vergleich einem long zu verpassen.

if(bla >= (uint32_t)(gap+glow)*glowCount)