/*
*
* Набор для экспериментов ArduinoKit
* Код программы для опыта №13: sketch 13
*
* Реле
*
* Написано для сайта http://arduinokit.ru
*
*
* Помощь сообщества Arduino.
* Посетите сайт http://www.arduino.cc
*
*
*
* ИСПОЛЬЗОВАНИЕ ТРАНЗИСТОРА ДЛЯ УПРАВЛЕНИЯ РЕЛЕ
*
* Реле это электрически управляемый механический переключатель.
* Реле может управлять гораздо большим напряжением и током, чем порты
* Arduino, или скажем транзистор, включенный в комплект набора. Если
* вы хотите использовать Arduino для управления лампой накаливания,
* кофеваркой, или другим электронным устройством работающим на 220V,
* реле это отличный способ сделать это.
* Реле спокойно справляется с переключением, коммутацией, больших
* напряжений, намного больших, чем может предложить порт Arduino.
* Мы будем использовать транзистор для того чтобы управлять реле,
* точно так же, как мы использовали транзистор для управления
* двигателем в опыте №12 (Стартовый набор, программиста и робототехника).
*
* Реле состоит из катушки, проволоки, металлического сердечника и
* переключающих контактов. При подаче питания на катушку, сердечник
* намагничивается, и притягивает якорь (рычажок), тем самым
* переключает контакты. Так как контакты реле полностью изолированы
* от Arduino, вы можете спокойно использовать реле для управления
* опасным напряжением, НО! Пожалуйста, делайте это, если вы уже
* знаете, и умеете, безопасно работать с высоким напряжением!
*
* Реле иметь три контакта, — COM (общий), NC (нормально замкнутый)
* и NO (нормально разомкнутый). Когда реле выключено, COM вывод
* подключен к выводу NC (нормально замкнутый), а когда включено,
* COM вывод подключается к NO (нормально разомкнутый).
*
* Этот код очень прост — он включает реле на одну секунду, затем
* выключает, ждет секунду и снова включает, как в опыте с мигающим
* светодиодом!
*
* Подключение оборудования:
*
* Транзистор:

* Транзистор имеет три вывода. Глядя на плоскую сторону,
* выводами вниз, назначения выводов будут следующими (слева
* на право): КОЛЛЕКТОР, БАЗА, ЭМИТЕР.
*
* Подключите БАЗУ через резистор 1К к цифровому порту 2.
*
* Подключите ЭМИТЕР к земле (GND).
*
* Катушка реле:
*
* Реле имеет контакты катушки, с помощью которых можно управлять
* реле и контакты для управления нагрузкой. На верхней или
* нижней части реле должен иметься рисунок, или символ,
* указывающий на контакты катушки.
*
* Подключение одну сторону катушки к коллектору транзистора.
*
* Подключение другую сторону катушки к питанию +5 Вольт.
*
* Диод:
*
* Реле имеет катушку, которую вы запитываете, для того чтобы
* притянуть якорь. При отключении питания, катушка генерирует
* всплеск напряжения, который может повредить транзистор. Этот
* диод защищает транзистор от всплеска напряжений.
*
* Подключите вывод диода, КАТОД, к питанию +5 Вольт.
*
* Подключите другой вывод диода, АНОД, к КОЛЛЕКТОРУ транзистора.
*
* Контакты реле и светодиодов:
*
* Контакты реле могут переключать все все что можно включить или
* выключить, но мы в этом уроке будем использовать контакты реле
* для включения и выключения светодиодов.
*
* Подключите общий вывод контактной группы релеCOMMON к резистору
* 330 Ом. Второй вывод резистора питанию +5 Вольт.
*
* Подключите вывод контактной группы реле NC (нормально замкнутый)
* к положительному (длинному) выводу светодиода LED 1.
*
* Подключите вывод контактной группы реле NO (нормально разомкнутый)
* к положительному (длинному) выводу второго светодиода — LED 2.
*
* Подключите отрицательные выводы (короткие ножки) обоих светодиодов
* к земле (GND).
*
*
*
* Комментарий к программе написан
* 26 ноября 2014
* специально для http://arduinokit.ru
*
*
*/
const int relayPin = 2;     // порт для управления транзистором
const int timeDelay = 1000; // задержка в мс, между вкл. и выкл.

// Вы можете уменьшить время задержки, но обратите внимание, что
// реле, будучи механическим устройством, будет изнашиваться
// быстрее, если частота переключений будет слишком частой.
void setup()
{
pinMode(relayPin, OUTPUT);  // установить порт как исходящий
}
void loop()
{
digitalWrite(relayPin, HIGH);  // включить реле

delay(timeDelay);              // пауза в 1 секунду

digitalWrite(relayPin, LOW);   // выключить реле

delay(timeDelay);              // пауза в 1 секунду
}