Содержание

Эксперимент 9. Миксер

← Мерзкое пианино | Оглавление | Кнопочный переключатель →

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

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

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

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

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

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

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

Скетч

p090_mixer.ino
#define MOTOR_PIN        9
#define FIRST_BUTTON_PIN 5
#define BUTTON_COUNT     3
// имена можно давать не только числам, но и целым выражениям.
// Мы определяем с каким шагом (англ. step) нужно менять
// скорость (англ. speed) мотора при нажатии очередной кнопки
#define SPEED_STEP  (255 / (BUTTON_COUNT - 1))
 
void setup()
{
  pinMode(MOTOR_PIN, OUTPUT);
  // на самом деле, в каждом пине уже есть подтягивающий
  // резистор. Для его включения необходимо явно настроить пин
  // как вход с подтяжкой (англ. input with pull up)
  for (int i = 0; i < BUTTON_COUNT; ++i)
    pinMode(i + FIRST_BUTTON_PIN, INPUT_PULLUP);
}
 
void loop()
{
  for (int i = 0; i < BUTTON_COUNT; ++i) {
    // если кнопка отпущена, нам она не интересна. Пропускаем
    // оставшуюся часть цикла for, продолжая (англ. continue)
    // его дальше, для следующего значения i
    if (digitalRead(i + FIRST_BUTTON_PIN))
      continue;
 
    // кнопка нажата — выставляем соответствующую ей скорость
    // мотора. Нулевая кнопка остановит вращение, первая
    // заставит крутиться в полсилы, вторая — на полную
    int speed = i * SPEED_STEP;
 
    // подача ШИМ-сигнала на мотор заставит его крутиться с
    // указанной скоростью: 0 — стоп машина, 127 — полсилы,
    // 255 — полный вперёд!
    analogWrite(MOTOR_PIN, speed);
  }
}

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

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

  1. Зачем в схеме использован диод?
  2. Почему мы использовали полевой MOSFET-транзистор, а не биполярный?
  3. Почему мы не использовали резистор между портом Arduino и затвором транзистора?
  4. Как работает инструкция continue, использованная в цикле for?

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

  1. Внесите единственное изменение в программу, после которого максимальной скоростью вращения мотора составит половину от возможной.
  2. Перепишите программу без использования инструкции continue.
  3. Добавьте в схему еще одну кнопку, чтобы у миксера стало три режима. Понадобилось ли изменять что-либо в программе?

← Мерзкое пианино | Оглавление | Кнопочный переключатель →