воскресенье, 15 мая 2016 г.

Управление кнопкой…

Всем читателям привет! Снова я с вами, рад очередной встрече в моем блоге. С одной стороны начать придется немного издалека. Все знают, что я уже сделал проект радиомаяк. Во второй версии радиомаяка уже можно управлять скоростью передачи и длительностью пауз после завершения цикла передачи. Так же попробовал реализовать и электронный телеграфный ключ. В общем, кто следит за блогом – тот в курсе. Наступило время, когда можно будет объединить эти проекты в один (тогда уже и ардуино плату не жалко под такое отдать на постоянную основу)…

Как это будет выглядеть? Давайте пофантазируем.  Представим коробочку с ЖК экраном, двумя регуляторами (ручки переменных резисторов), тремя кнопками (включение,  переключение режимов работы и включение-отключения звукового контроля передачи), а так же разъемами к которому можно будет подключить джек 3.5 мм (один выход на трансивер, другой вход для телеграфного манипулятора). При этом на ЖК экране в верхней строчке будет отображаться режим работы: «Beacon Mode» или «CW KEY Mode». В нижней строчке будет отображаться скорость передачи, обратный отчет времени паузы… Да идея хорошая, но теперь пожалуй пора приступить к ее реализации…

А начинать будем с банальной простой задачи: управлением кнопкой. То есть нам мало подключить кнопку к ардуино, нужно еще научить понимать МК в каком состоянии находиться кнопка (или тумблер). Таких состояний только два: включено (логическая единица) или выключено (логический ноль). А для определений этих состояний идеально подойдут цифровые входы. Они работают таким образом, что если на входе напряжение меньше 2,5 В то считается что вход имеет состояния 0 (отключено), соответственно если больше 2,5В то состояние 1 (включено).

Итак, начнем. Сначала соберем схему. Здесь все как раз просто. Обратите внимание на один важный момент: мы подключили выключатель (тумблер) не просто к пину и к земле, а через нагрузочный резистор сопротивлением 10 кОм. Это нужно чтобы избежать наводок на пине, когда он отключен от земли. Только с нагрузочным резистором у нас будет только два состояния: ноль или единица. А теперь давайте познакомимся с скетчем…
int ledPin=9;
int inputPin=5;
void setup() {
 pinMode (inputPin, INPUT); // задаем пин как вход
 pinMode (ledPin, OUTPUT); // задаем пин как выход
}

void loop() {
  int reading=digitalRead(inputPin); // считываем состояние выключателя

if (reading==0)
{
  analogWrite(9, random(255)); // если 0 то запускаем режим1 мерцания
  delay (random(100));
}
else
{
digitalWrite(9, 1);// если 1 то запускаем режим2 свечения
}
}

Вот и все. Мы добились того, что при помощи одной кнопки мы можем задавать два разных режима работы. В будущем это будет режим радиомаяка, и режим телеграфного ключа. Первый шаг к решению задачи сделан. Осталось поработать с ЖК индикатором, но этим займемся уже в следующий раз. А пока всем передаю 73!

Комментариев нет:

Отправить комментарий