Продвинутый курс Arduino · Незнакомые детали

Урок 5. Транзистор: усилитель и сенсорная кнопка из фольги

Чёрные трёхногие таблетки BC337 и BC327 идут в дело: собираем логический тестер, который цветом показывает единицы и нули, а потом — кнопку из куска фольги, у которой нет подвижных частей.

Урок 5 из 8⏱ примерно 50 минутОбновлено: 14 августа 2026

Что понадобится

  • Контроллер Uno и кабель USB
  • Макетная плата
  • Транзисторы BC337 и BC327
  • Резисторы 1 кОм, 10 кОм и 470 Ом
  • Светодиоды: зелёный, красный и любой для ночника
  • Кусочек пищевой фольги
  • Провода

Все детали есть в обучающем наборе, по которому идёт курс.

В коробке набора остался последний нетронутый пакетик — с чёрными трёхногими «таблетками». Это биполярные транзисторы BC337 и BC327, младшие братья полевика IRFZ24, который крутил мотор в двадцать третьем уроке. Сегодня они отработают своё имя дважды: сначала соберём из них логический тестер — прибор, который показывает цветом, что творится на любом выводе платы, — а потом сотворим маленькое чудо: кнопку из куска фольги, у которой вообще нет подвижных частей.

Знакомство: три ноги и стрелка

BC337КБЭплоской стороной к себе, ножки вниз:Коллектор — База — ЭмиттерБКЭn-p-n — это BC337БКЭp-n-p — это BC327Обозначение читается по стрелке эмиттера: у n-p-n она наружу, у p-n-p — внутрь.На схемах транзистор подписывают буквами VT. Корпуса обоих — одинаковые, читайте надпись!
Плоской стороной к себе, ножками вниз: Коллектор — База — Эмиттер. На схемах транзистор зовут VT, тип читается по стрелке.

Запомнить выводы просто: смотрите на плоскую сторону, ножки вниз — слева направо Коллектор, База, Эмиттер. В наборе два типа: BC337 — «n-p-n», открывается, когда на базу подают напряжение побольше, и BC327 — «p-n-p», его зеркальный близнец, открывающийся от нуля. Корпуса неотличимы, поэтому надпись на плоской стороне — единственный способ их не перепутать.

КЭбольшой ток: сотни миллиамперБ: крошечный ток приоткрывает заслонкув сто раз меньше того, которым управляетЗнакомый по мотору полевик IRFZ24 открывался напряжением. Биполярный — током:поэтому в базу всегда ставят резистор — он отмеряет этот ток, как мерная ложка.
Крошечный ток через базу открывает большой поток через коллектор и эмиттер — как лёгкий рычаг открывает тяжёлый кран.

Главный фокус тот же, что у полевика: слабый сигнал управляет сильным. Но есть отличие, важное для схем: полевик открывался напряжением, а биполярный транзистор — током через базу. Ток надо отмерять, поэтому в базу всегда ставят резистор. В наборе для этого лежат специальные 1 кОм — вот и их очередь пришла.

Проект 1. Логический тестер

Соберём прибор из главы 10 брошюры набора: два транзистора разного типа с общим входом. Подали на вход «единицу» — открывается n-p-n и зажигает красный светодиод. Подали «ноль» — открывается p-n-p и зажигает зелёный. Прибор показывает цветом логический уровень — настоящий инструмент электронщика.

++abcdefghij1102024678111415161719КБЭBC327КБЭBC33712341Вывод 12 → столбик 11, оттуда резисторы 1 кОм на базы обоих транзисторов.2BC327 (p-n-p): эмиттер → «+», коллектор → зелёный светодиод → 470 Ом → «−».3BC337 (n-p-n): эмиттер → «−», коллектор ← 470 Ом ← красный светодиод ← «+».4Питание шин: 5V платы → «+», GND платы → «−». Ножки транзисторов: К—Б—Э.Корпуса обоих транзисторов одинаковые — не перепутайте BC327 и BC337 местами, читайте надписи.
Вывод 12 через два резистора 1 кОм командует обеими базами. Зелёный светодиод — у BC327, красный — у BC337.

Проверьте перед включением: оба транзистора стоят плоской стороной к вам (к нижнему краю макетки), BC327 — слева, BC337 — справа. Эмиттер BC327 уходит на «+», эмиттер BC337 — на «−». Перепутанные местами транзисторы не сгорят, но тестер будет показывать ерунду.

// Продвинутый курс, урок 5. Шаг 1: проверяем логический тестер.

const int TESTER = 12;   // вход тестера — сюда подаём «1» и «0»

void setup() {
  pinMode(TESTER, OUTPUT);
}

void loop() {
  digitalWrite(TESTER, HIGH);   // «1»: открывается BC337 — горит красный
  delay(1000);
  digitalWrite(TESTER, LOW);    // «0»: открывается BC327 — горит зелёный
  delay(1000);
}

Загрузите — светодиоды замигают по очереди: секунду красный («на выводе 12 единица»), секунду зелёный («ноль»). Обратите внимание: плата тратит на управление двумя яркими светодиодами меньше миллиампера — весь рабочий ток идёт через транзисторы от шин питания. Именно так один слабый вывод контроллера управляет гирляндой, мотором или реле.

Поиграйте в электрика: вытащите зелёный провод из вывода 12 и воткните его в вывод 13. Теперь тестер показывает жизнь встроенного светодиода L — загрузите любой скетч с миганием из третьего урока и посмотрите, как тестер честно повторяет его цветами. Прибор работает!

Проект 2. Кнопка из фольги

А теперь — магия из главы 11 брошюры. Вокруг нас всюду «электрический шум»: провода сети 220 вольт, зарядки, техника — всё это наводит в любом проводнике слабенькие колебания напряжения. Обычно наводки — враг, с которым борются. Но наш транзистор умеет усиливать — а значит, может сделать наводки видимыми. И тут выясняется приятное: человеческое тело собирает наводки отлично. Коснулись провода — транзистор усилил вашу «шумность» — плата заметила касание. Готовая сенсорная кнопка.

++abcdefghij1102058913151820КБЭBC33710 кОмкусок фольги — сенсорная площадка:оберните ею зачищенный конец провода12341База BC337: резистор 10 кОм от «+» и сенсорный провод, конец которого обёрнут фольгой.2Эмиттер: резистор 470 Ом → «−», и провод на вход A0. Коллектор — на «+».3Ночник: вывод 10 → 470 Ом → длинная ножка светодиода; короткая — в «−».4Питание шин: 5V платы → «+», GND платы → «−».
База BC337 слушает фольгу, эмиттер отдаёт усиленный сигнал на A0. Светодиод на выводе 10 пригодится в финале.

Разберём схему. Резистор 10 кОм от «+» приоткрывает транзистор — как чуть-чуть отвёрнутый кран. К базе же подключён сенсорный провод: его свободный конец оберните кусочком пищевой фольги — это и есть кнопка. Эмиттер через 470 Ом уходит на землю, и с него же сигнал идёт на вход A0.

// Продвинутый курс, урок 5. Шаг 3: слушаем наводки через транзистор.

const int PROBE = A0;   // сюда транзистор отдаёт усиленный сигнал

void setup() {
  Serial.begin(9600);
}

void loop() {
  // Откройте вкладку «График» и потрогайте фольгу.
  Serial.println(analogRead(PROBE));
  delay(5);
}
Рука далеко: линия почти ровнаяПалец на фольге: сигнал заплясалЧто видит вход A0 на вкладке «График»
Пока рука далеко, линия на графике почти ровная. Палец на фольге — и сигнал пляшет волнами: это наводки сети, усиленные транзистором.

Откройте вкладку «График» и потрогайте фольгу. Видите пляску? Частота этих волн — 50 герц, ровно как у розеточной сети: вы в прямом смысле видите на экране электрическое эхо проводки вашего дома, пойманное вашим же телом.

Учим плату замечать касание

// Продвинутый курс, урок 5. Шаг 4: касание зажигает свет.

const int PROBE = A0;
const int LED = 13;      // встроенного светодиода для опыта достаточно
const int SENS = 3;      // чувствительность: БОЛЬШЕ число — ГРУБЕЕ сенсор

int last = 0;            // прошлое показание
int glow = 0;            // «свечение»: пока больше нуля — светим

void setup() {
  pinMode(LED, OUTPUT);
  last = analogRead(PROBE);
}

void loop() {
  int now = analogRead(PROBE);

  // Наводка — это дрожание: текущее показание отличается от прошлого.
  if (abs(now - last) > SENS) {
    glow = 500;          // заметили касание — светим ближайшие 500 кругов
  }
  last = now;

  if (glow > 0) {
    glow = glow - 1;
    digitalWrite(LED, HIGH);
  } else {
    digitalWrite(LED, LOW);
  }
}

Идея детектора проста: касание — это дрожание сигнала, поэтому сравниваем каждое показание с предыдущим. Разница больше порога SENS — значит, трогают. А чтобы светодиод не мерцал в такт волнам, работает приём «растянуть короткое событие» из урока о датчиках: переменная glow заряжается на 500 кругов и тает по единичке.

// Продвинутый курс, урок 5. Шаг 5: выключатель без подвижных частей.

const int PROBE = A0;
const int LED = 13;
const int SENS = 3;

int last = 0;
bool lightOn = false;
unsigned long lastTouch = 0;   // когда сработали в прошлый раз

void setup() {
  pinMode(LED, OUTPUT);
  last = analogRead(PROBE);
}

void loop() {
  int now = analogRead(PROBE);
  bool touched = (abs(now - last) > SENS);
  last = now;

  // Пауза 800 мс — иначе одно долгое касание переключит свет много раз.
  if (touched && millis() - lastTouch > 800) {
    lastTouch = millis();
    lightOn = !lightOn;          // восклицательный знак — «наоборот»
    digitalWrite(LED, lightOn);
  }
}

Следующий шаг — выключатель: одно касание зажигает, следующее гасит. Новинка в строке lightOn = !lightOn: восклицательный знак означает «наоборот» — из правды делает неправду и обратно. Идеальный переключатель в одну строку. Пауза в 800 миллисекунд бережёт от двойных срабатываний — это тот же антидребезг, только для пальца.

Финал: сенсорный ночник

// Продвинутый курс, урок 5. Шаг 6: сенсорный ночник.
// Касание фольги плавно зажигает лампу на выводе 10, ещё касание — гасит.

const int PROBE = A0;
const int LED = 10;
const int SENS = 3;

int last = 0;
bool lightOn = false;
unsigned long lastTouch = 0;

int current = 0;   // яркость сейчас
int target = 0;    // яркость-цель

void setup() {
  pinMode(LED, OUTPUT);
  last = analogRead(PROBE);
}

void loop() {
  int now = analogRead(PROBE);
  bool touched = (abs(now - last) > SENS);
  last = now;

  if (touched && millis() - lastTouch > 800) {
    lastTouch = millis();
    lightOn = !lightOn;
    if (lightOn) {
      target = 255;
    } else {
      target = 0;
    }
  }

  // Плавность — старый добрый шаг к цели.
  if (current < target) {
    current = current + 1;
  }
  if (current > target) {
    current = current - 1;
  }
  analogWrite(LED, current);
  delay(2);
}

Соединяем всё: детектор касания, переключатель и плавность из урока про умный ночник. Коснулись фольги — лампа на выводе 10 плавно разгорается, коснулись ещё раз — плавно тает. Приклейте фольгу под лист бумаги на столе — и у вас невидимая кнопка, о которой гости не догадаются.

Частые проблемы

  • Сенсор срабатывает сам по себе. Ваш порог слишком чуткий — поднимите SENS до 5–8. И укоротите сенсорный провод: длинный ловит наводки даже без касания.
  • Сенсор не чувствует палец. Проверьте резистор 10 кОм от «+» к базе — без него транзистору не хватает «приоткрытости». И убедитесь, что трогаете именно фольгу, а не изоляцию провода... хотя через тонкую изоляцию сенсор тоже часто слышит!
  • Тестер горит обоими цветами сразу. Так и должно быть, если вход тестера никуда не подключён: обе базы «висят в воздухе». Подключите зелёный провод к выводу — останется один цвет.
  • График ровный даже при касании. Перепроверьте ножки транзистора: К—Б—Э, плоской стороной к себе. Перевёрнутый BC337 усиливать не будет.

Задания для тренировки

  • РазминкаСделайте из ночника «сенсорный диммер»: первое касание — половина яркости, второе — полная, третье — выключить. Счётчик режимов и остаток от деления вам в помощь.
  • ПосложнееПодключите зуммер и превратите сенсор в «терменвокс наоборот»: пока фольгу трогают — звучит нота, отпустили — тишина. Помните про таймеры: зуммер на выводе 12 не мешает ничему.
  • Со звёздочкой ⭐Глава 11 брошюры называется «Съедобная сенсорная кнопка» неспроста: вместо фольги воткните сенсорный провод в яблоко или банан. Фрукт проводит ток — значит, тоже собирает наводки. Сделайте яблочный дверной звонок и удивите семью.

Что вы теперь умеете

  • различать выводы TO-92: Коллектор — База — Эмиттер, плоской стороной к себе;
  • объяснять, чем n-p-n отличается от p-n-p и почему в базе всегда резистор;
  • собирать транзисторный ключ: слабый вывод управляет сильной нагрузкой;
  • превращать наводки из помехи в сигнал — и видеть сеть 50 Гц на графике;
  • строить сенсорные кнопки из фольги, бумаги и даже яблока.

Остался последний нетронутый уголок коробки — три ярких светодиода. В следующем уроке они выстроятся в светящуюся шкалу-градусник, а заодно мы научимся зажигать «полтора светодиода» — звучит невозможно, но вы уже почти умеете.

Частые вопросы

Чем биполярный транзистор отличается от полевого из урока про мотор?

Оба — усилители, но открываются по-разному: полевой IRFZ24 управляется напряжением на затворе и почти не берёт тока, биполярный — током через базу, поэтому в базе обязателен резистор. Для тяжёлых нагрузок вроде мотора удобнее полевик, для маленьких сигналов и сенсоров — биполярный.

Опасно ли трогать сенсорный провод руками?

Совершенно безопасно: вы касаетесь цепи с напряжением 5 вольт через резисторы, ток там — миллионные доли ампера. Наоборот, это вы «даёте» схеме свои наводки, а не она вам ток.

Почему сенсор лучше работает вечером или у розетки?

Сенсор питается наводками от сети 220 В: чем ближе провода и работающая техника, тем громче электрический шум и увереннее срабатывание. В глухом поле от батарейки такая кнопка работать почти перестанет — там нечего усиливать.

← Все уроки курса