Linha fadeAmount = -fadeAmount;

Olá Pessoal

Sou novo com arduino e estive lendo os códigos para entender o funcionamento da linguagem.
Uma dúvida que surgiu foi a seguinte:

void loop() {
analogWrite(led, brightness);
brightness = brightness + fadeAmount;

if (brightness == 0 || brightness == 255) {
fadeAmount = -fadeAmount ;

Quando o fadeAmount se tornar negativo vai decrementando até chegar a zero. Neste ponto chegamos a :

Pelo código brightness = brightness + fadeAmount

0 = 0 + (- 5)
-5 = 0 + (- 5)
-10

Como o sinal se torna inverso neste caso? o próprio arduino reconhece que -5 = -5 é + ???

Obrigado
Marcelo

O segredo está nesse trecho:

if (brightness == 0 || brightness == 255) {
    fadeAmount = -fadeAmount ;

Quando brightness for igual a 0 ou 255 (limites inferior e superior), fadeAmount tem sem valor invertido (ou seja, se era 5 passa a ser -5 e vice-versa). Assim, no próximo loop o comportamento de brightness será o contrário do que era antes.

Cara agora que raciocinei ...rs

fadeAmount = -(-5)

Obrigado
Marcelo