Если схема собрана правильно, то мы увидим мигание светодиода. Если заменить резистор R1 на переменный, то частоту мигания можно будет изменять.
Немного усложнив схему, можно получить
Такую схему можно использовать в качестве регулируемого ночника.
Как несложно догадаться, с помощью NE555 несложно воспроизвести и звук - нужно лишь изменить номиналы элементов, чтобы получить более высокую частоту, и поставить динамик вместо светодиода.
Здесь вместо светодиода и резистора подключен динамик с конденсатором.
Существует большое разнообразие схем с применением NE555. Например, подключив 2 микросхемы, можно получить “полицейскую сирену”:
Еще одна несложная схема - сигнализация, которая подаст звуковой сигнал при обрыве провода:
Аналогично, с применением NE555 есть схемы датчика протечки воды, ультразвукового отпугивателя собак, автоматического включения освещения с фоторезистором, и многое другое. Есть даже книга “Радиолюбительские схемы на ИС типа 555”, скачать ее можно в Интернете.
Самостоятельная работа: используя динамик, переменный резистор и NE555, собрать звуковой генератор, подобрав параметры так чтобы диапазон частот попадал в интервал 0-15КГц. С этим генератором легко проверить, насколько высокие звуки может слышать человек. Этот опыт можно провести с друзьями или одноклассниками - у каждого человека порог слышимости различный, более того, он меняется с возрастом.
В предыдущей главе описывалась схема ночника, в которой яркость светодиода регулировалась от нуля до максимума. Но что делать, если мы захотим подключить целую светодиодную ленту чтобы осветить всю комнату? Включить ее напрямую к выводу микросхемы мы не можем, потребляемый ток слишком велик. На помощь придет
Схема подключения выводов транзистора показана на рисунке.
Упрощенно говоря, полевой транзистор - это электронный ключ, способный с помощью небольшого входного напряжения, управлять гораздо более мощной нагрузкой. Это как раз то, что нужно в нашей схеме.
Собрав схему, как показано на рисунке, мы можем подключить светодиодную ленту и изменять ее яркость вращением переменного резистора.
Кстати, как же в действительности изменяется яркость свечения? Здесь применяется так называемая
Человеческий глаз не может видеть пульсацию с частотой тысячи раз в секунду, и воспринимает это как более или менее яркий свет, в зависимости от вида пульсаций.
Аналогичную схему можно собрать на другом виде транзистора -
Такой транзистор подключается следующим образом:
С точки зрения физических процессов, принцип работы биполярного и полевого транзисторов, различен, но конечный результат для нас тот же - небольшое изменение входного тока базы (обозначена буквой B) вызывает значительное изменение тока коллектор-эмиттер (C-E).
Транзисторы также активно используются в усилителях звуковой и радиочастоты, как управляющие элементы в блоках питания, в компьютерной технике, и так далее. Фактически это один из основных элементов современной схемотехники. Но “в чистом виде” нам его использовать практически не придется - в основном, мы будем использовать готовые микросхемы (все они внутри себя, разумеется, содержат транзисторы).
На этом мы закончим поверхностное знакомство с основными электронными компонентами, и перейдем к цифровой технике. Желающие углубленно изучить аналоговую схемотехнику, могут найти в интернете книгу Хоровица и Хилла “Искусство схемотехники” (The Art of Electronics), которая была выпущена еще в 80е, но до сих пор актуальна.
Часть 2. Знакомство с Arduino
В настоящее время существует большое количество различных микроконтроллеров - STM, Atmega, PIC и пр. Микроконтроллер - это по сути, небольшой но полноценный компьютер, имеющий оперативную и флеш-память, тактовый генератор, порты ввода-вывода для связи с “внешним миром”.
Типичный микроконтроллер выглядит примерно так:
Чтобы его использовать, необходимо:
- припаять его к печатной плате,
- добавить элементы, минимально необходимые для работы контроллера (питание, reset, тактовый генератор, и пр),
- добавить специальную схему для загрузки программы (“прошивки”),
- установить на ПК так называемую “среду разработки” (IDE) для написания кода.
Все это весьма трудоемко, поэтому в 2003м году итальянские инженеры (тогда еще студенты) придумали разместить все это на одной готовой плате. Так появился проект Arduino. Система стала настолько популярной, что к 2013 году на руках у пользователей было уже 700000 плат.
Arduino выглядит примерно так:
Она содержит:
- уже готовый к работе микроконтроллер,
- модуль для подключения к компьютеру по USB - через него осуществляется загрузка и отладка программы,
- базовый набор функций (светодиод, кнопка reset),
- большое количество выводов для подключения различных устройств (кнопки, экраны, датчики).
Существуют разные варианты плат - Arduino Uno, Arduino Mega, Arduino Nano и пр. Также можно приобрести различные платы расширения, например плату управления мотором, или плату с ЖК-экраном.
Помимо плат, существует и бесплатная среда разработки Arduino IDE, позволяющая писать код и загружать программу в плату. Загруженная программа сохраняется в Arduino и после отключения питания, готовую плату потом можно использовать отдельно от компьютера.
Для начала … отложим плату Arduino в сторону, и научимся писать несложные программы на языке Си. Ведь центральный процессор Arduino - это почти полноценный компьютер, а значит его нужно будет программировать. Для этого используется язык Си, весьма популярный для написания программ различных микроконтроллеров.
Чтобы писать программу на каком-либо языке программирования, нужны специальный редактор (так называемая “среда разработки” или IDE) и компилятор, преобразующий текст в готовую программу. Для упрощения мы воспользуемся онлайн компилятором, для чего можно зайти на сайт https://repl.it/languages/c или https://www.onlinegdb.com/online_c_compiler.
Простейшая программа на Си выглядит так:
#include <stdio.h>
int main(void) {
printf("Hello World\n");
return 0;
}
Директива
Мы также можем создать целочисленную переменную, написав:
int i = 42;
Или вещественную:
float a = 1.0;
C переменными можно осуществлять математические действия:
float b = 3*val + 5;
Можно увеличить или уменьшить значение переменной:
i = i+1; // Более короткая запись: i += 1; или еще короче i++;
i = i-1; // Более короткая запись: i -= 1; или еще короче i--;