Содержание

Эксперимент 2. Маячок с нарастающей яркостью

← Маячок | Оглавление | Светильник с управляемой яркостью →

В этом эксперименте мы задаем различные уровни яркости светодиода.

Видеоурок

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

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

Для дополнительного задания

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

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

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

Скетч

p020_pulse_light.ino
// даём разумное имя для пина №9 со светодиодом
// (англ. Light Emitting Diode или просто «LED»)
// Так нам не нужно постоянно вспоминать куда он подключён
#define LED_PIN 9
 
void setup()
{
  // настраиваем пин со светодиодом в режим выхода,
  // как и раньше
  pinMode(LED_PIN, OUTPUT);
}
 
void loop()
{
  // выдаём неполное напряжение на светодиод
  // (он же ШИМ-сигнал, он же PWM-сигнал).
  // Микроконтроллер переводит число от 0 до 255 к напряжению
  // от 0 до 5 В. Например, 85 — это 1/3 от 255,
  // т.е. 1/3 от 5 В, т.е. 1,66 В.
  analogWrite(LED_PIN, 85);
  // держим такую яркость 250 миллисекунд
  delay(250);
 
  // выдаём 170, т.е. 2/3 от 255, или иными словами — 3,33 В.
  // Больше напряжение — выше яркость!
  analogWrite(LED_PIN, 170);
  delay(250);
 
  // все 5 В — полный накал!
  analogWrite(LED_PIN, 255);
  // ждём ещё немного перед тем, как начать всё заново
  delay(250);
}

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

PRINT       // верно
PRINT_3D    // верно
MY_PRINT_3D // верно
_PRINT_3D   // верно
3D_PRINT    // ошибка
ПЕЧАТЬ_3Д   // ошибка
PRINT:3D    // ошибка
// однострочный комментарий следует после двойного слеша до конца строки
/* многострочный комментарий
   помещается между парой слеш-звездочка и звездочка-слеш */

комментарии игнорируются компилятором, зато полезны людям при чтении давно написанного, а особенно чужого, кода

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

  1. Какие из следующих идентификаторов корректны и не вызовут ошибку?
    • 13pin
    • MOTOR_1
    • контакт_светодиода
    • sensor value
    • leftServo
    • my-var
    • distance_eval2
  2. Что произойдет, если создать директиву #define HIGH LOW?
  3. Почему мы не сможем регулировать яркость светодиода, подключенного к порту 7?
  4. Какое усреднённое напряжение мы получим на пине 6, если вызовем функцию analogWrite(6, 153)?
  5. Какое значение параметра value нужно передать функции analogWrite, чтобы получить усреднённое напряжение 2 В?

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

  1. Отключите питание, отключите светодиод от 9-го порта и подключите к 11-му. Измените программу так, чтобы схема снова заработала
  2. Измените код программы так, чтобы в течение секунды на светодиод последовательно подавалось усреднённое напряжение 0, 1, 2, 3, 4, 5 В
  3. Возьмите еще один светодиод, резистор на 220 Ом и соберите аналогичную схему на этой же макетке, подключив светодиод к пину номер 3 и другому входу GND, измените программу так, чтобы светодиоды мигали в противофазу: первый выключен, второй горит максимально ярко и до противоположного состояния

← Маячок | Оглавление | Светильник с управляемой яркостью →