====== Эксперимент 1. Маячок ======
[[конспект-arduino:|Оглавление]] | [[конспект-arduino:маячок-с-нарастающей-яркостью|Маячок с нарастающей яркостью →]]
В этом эксперименте мы просто мигаем светодиодом.
===== Видеоурок =====
{{youtube>vFpTqXtd43k?large}}
===== Прочтите перед выполнением =====
* [[конспект-arduino:понятие-электричества|Понятие электричества]]
* [[конспект-arduino:принципиальные-схемы|Принципиальные схемы]]
* [[конспект-arduino:основные-законы-электричества|Основные законы электричества]]
* [[конспект-arduino:управление-электричеством|Управление электричеством]]
* [[конспект-arduino:быстрая-сборка-схем|Быстрая сборка схем]]
* [[конспект-arduino:резистор|Резистор]]
* [[конспект-arduino:диод|Диод]]
* [[конспект-arduino:светодиод|Светодиод]]
* [[конспект-arduino:arduino-ide|Начало работы с Arduino]]
===== Список деталей для эксперимента =====
* 1 плата [[amp>product/arduino-uno|Arduino Uno]]
* 1 беспаечная [[amp>collection/breadboards|макетная плата]]
* 1 [[amp>product/led-5mm|светодиод]]
* 1 [[amp>product/resistor-220r|резистор]] номиналом 220 Ом
* 2 провода [[amp>product/wire-mm|«папа-папа»]]
===== Принципиальная схема =====
{{ :конспект-arduino:1_scheme.svg.png?nolink& |}}
===== Схема на макетке =====
{{ :конспект-arduino:1_bread.svg.png?nolink& |}}
===== Обратите внимание =====
* Не забудьте, как соединены рельсы в беспаечной [[конспект-arduino:быстрая-сборка-схем|макетной плате]]. Если на вашей макетке красная и синяя линии вдоль длинных рельс прерываются в середине, значит проводник внутри макетки тоже прерывается!
* Катод («минус») светодиода — короткая ножка, именно её нужно соединять с землёй (GND)
* Не пренебрегайте резистором, иначе светодиод выйдет из строя
* Выбрать резистор нужного номинала можно с помощью [[конспект-arduino:резистор#цветовая_кодировка_резисторов|таблицы маркировки]] или с помощью мультиметра в режиме измерения сопротивления
* Плата Arduino имеет три пина GND, используйте любой из них
===== Скетч =====
void setup()
{
// настраиваем пин №13 в режим выхода,
// т.е. в режим источника напряжения
pinMode(13, OUTPUT);
}
void loop()
{
// подаём на пин 13 «высокий сигнал» (англ. «high»), т.е.
// выдаём 5 вольт. Через светодиод побежит ток.
// Это заставит его светиться
digitalWrite(13, HIGH);
// задерживаем (англ. «delay») микроконтроллер в этом
// состоянии на 100 миллисекунд
delay(100);
// подаём на пин 13 «низкий сигнал» (англ. «low»), т.е.
// выдаём 0 вольт или, точнее, приравниваем пин 13 к земле.
// В результате светодиод погаснет
digitalWrite(13, LOW);
// замираем в этом состоянии на 900 миллисекунд
delay(900);
// после «размораживания» loop сразу же начнёт исполняться
// вновь, и со стороны это будет выглядеть так, будто
// светодиод мигает раз в 100 мс + 900 мс = 1000 мс = 1 сек
}
===== Пояснения к коду =====
* Процедура ''setup'' выполняется один раз при запуске микроконтроллера. Обычно она используется для конфигурации портов микроконтроллера и других настроек
* После выполнения ''setup'' запускается процедура ''loop'', которая выполняется в бесконечном цикле. Именно этим мы пользуемся в данном примере, чтобы маячок мигал постоянно
* Процедуры ''setup'' и ''loop'' должны присутствовать в любой программе (скетче), даже если вам не нужно ничего выполнять в них — пусть они будут пустые, просто не пишите ничего между фигурными скобками. Например:
void setup()
{
}
* Запомните, что каждой открывающей фигурной скобке ''{'' всегда соответствует закрывающая ''}''. Они обозначают границы некого логически завершенного фрагмента кода. Следите за вложенностью фигурных скобок. Для этого удобно после каждой открывающей скобки увеличивать отступ на каждой новой строке на один символ табуляции (клавиша Tab)
* Обращайте внимание на '';'' в концах строк. Не стирайте их там, где они есть, и не добавляйте лишних. Вскоре вы будете понимать, где они нужны, а где нет.
* Функция ''digitalWrite(pin, value)'' не возвращает никакого значения и принимает два параметра:
- ''pin'' — номер цифрового порта, на который мы отправляем сигнал
- ''value'' — значение, которое мы отправляем на порт. Для цифровых портов значением может быть ''HIGH'' (высокое, единица) или ''LOW'' (низкое, ноль)
* Если в качестве второго параметра вы передадите функции ''digitalWrite'' значение, отличное от ''HIGH'', ''LOW'', ''1'' или ''0'', компилятор может не выдать ошибку, но считать, что передано ''HIGH''. Будьте внимательны
* Обратите внимание, что использованные нами константы: ''INPUT'', ''OUTPUT'', ''LOW'', ''HIGH'', пишутся заглавными буквами, иначе компилятор их не распознает и выдаст ошибку. Когда ключевое слово распознано, оно подсвечивается синим цветом в Arduino IDE
===== Вопросы для проверки себя =====
- Что будет, если подключить к земле анод светодиода вместо катода?
- Что будет, если подключить светодиод с резистором большого номинала (например, 10 кОм)?
- Что будет, если подключить светодиод без резистора?
- Зачем нужна встроенная функция ''pinMode''? Какие параметры она принимает?
- Зачем нужна встроенная функция ''digitalWrite''? Какие параметры она принимает?
- С помощью какой встроенной функции можно заставить микроконтроллер ничего не делать?
- В каких единицах задается длительность паузы для этой функции?
===== Задания для самостоятельного решения =====
- Сделайте так, чтобы маячок светился полсекунды, а пауза между вспышками была равна одной секунде
- Измените код примера так, чтобы маячок включался на три секунды после запуска устройства, а затем мигал в стандартном режиме
----
[[конспект-arduino:|Оглавление]] | [[конспект-arduino:маячок-с-нарастающей-яркостью|Маячок с нарастающей яркостью →]]