Содержание

Эксперимент 6. Пульсар

← Ночной светильник | Оглавление | Бегущий огонёк →

В этом эксперименте мы плавно наращиваем яркость светодиодной шкалы, управляя большой нагрузкой через транзистор.

Прочтите перед выполнением

Список деталей для эксперимента

Принципиальная схема

Схема на макетке

Обратите внимание

Скетч

p060_pulse_bar.ino
#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);
}

Пояснения к коду

Вопросы для проверки себя

  1. Почему у светодиодной шкалы на 10 сегментов 20 ножек?
  2. Зачем в схеме биполярный транзистор?
  3. За счет чего увеличивается яркость шкалы?
  4. Почему после достижения значения 255 переменная brightness обнуляется?

Задания для самостоятельного решения

  1. Измените программу так, чтобы яркость шкалы росла только до половины от максимальной.
  2. Измените программу так, чтобы шкала становилась максимально яркой в три раза быстрее, без изменения функции delay.
  3. Измените исходную программу так, чтобы такой же результат был получен без использования операции %, но с применением условного оператора if.

← Ночной светильник | Оглавление | Бегущий огонёк →