В этом эксперименте мы плавно наращиваем яркость светодиодной шкалы, управляя большой нагрузкой через транзистор.
#define CONTROL_PIN 9
// переменные верхнего уровня, т.е. объявленные вне функций,
// называют глобальными. Их значения сохраняются всё время,
// пока работает микроконтроллер
int brightness = 0 ;
void setup( )
{
pinMode(CONTROL_PIN, OUTPUT) ;
}
void loop( )
{
// увеличиваем значение яркости на единицу, чтобы нарастить
// яркость. Однако яркость не должна быть более 255, поэтому
// используем операцию остатка от деления, чтобы при
// достижении значения 255, следующим значением снова стал 0
// Y % X — это остаток от деления Y на X;
// плюс, минус, делить, умножить, скобки — как в алгебре.
brightness = (brightness + 1 ) % 256 ;
// подаём вычисленный ШИМ-сигнал яркости на пин с базой
// управляющего транзистора
analogWrite(CONTROL_PIN, brightness) ;
// ждём 10 мс перед следующим наращиванием яркости. Таким
// образом, полный накал будет происходить в течение
// 256×10 = 2560 мс
delay( 10 ) ;
}
Пока brightness + 1 меньше 256, в brightness записывается значение brightness + 1
Как только brightness + 1 принимает значение 256, результатом (brightness + 1) % 256 становится 0 и на следующей итерации loop() всё начинается сначала.
wiki.amperka.ru