Espruino:Примеры/Клавиатурный таймер
Клавиатурный таймер[1]
В этой статье мы расскажем, как при помощи кнопочной панели и Espruino создать клавиатурный таймер. Кнопочная панель есть в наборе Espruino Ultimate, но её также можно купить отдельно (см. последний раздел этой статьи).
Вам понадобятся
Подсоединение
Просто подключите кнопочную панель к контактам B2, B3, B4, B5, B6, B7, B8 и B9 на Espruino (они находятся на боковой стороне Espruino и идут один за другим) – так, чтобы она (кнопочная панель) лежала лицевой стороной вверх. Провод рядом с «D» нужно подключить к B2, а провод рядом с «*» – к B9. Какой контакт куда подключать – неважно, но если вы будете использовать какие-то другие контакты, то вам также нужно будет внести соответствующие изменения в код ниже.
Код
Во-первых, нам надо запрограммировать ответ на нажатие кнопки. Подключитесь к Espruino, скопируйте и вставьте код ниже в правую часть IDE и кликните на кнопку загрузки кода.
function onKey(key) {
console.log("123A456B789C*0#D"[key]);
}
require("KeyPad").connect([B2,B3,B4,B5],[B6,B7,B8,B9], onKey);
Теперь, когда вы нажмёте на панели на какую-нибудь кнопку, этот символ появится на экране.
Далее нам надо сделать так, чтобы символы прибавлялись друг к другу и создавали большое число. Если на панели будет нажата нецифровая кнопка, это будет означать запуск таймера.
Скопируйте и вставьте код ниже в правую часть IDE и кликните на кнопку загрузки кода:
function startTimer(time) {
console.log("Запуск таймера: "+time+" секунд");
}
var value = "";
function onKey(key) {
var ch = "123A456B789C*0#D"[key];
if ("0123456789".indexOf(ch)<0) {
// Если это не цифра, значит запускаем таймер:
startTimer(parseInt(value, 10/*decimal*/));
value = "";
} else {
// В противном случае сохраняем значение:
value += ch;
console.log(value); // пишем в консоль...
}
}
require("KeyPad").connect([B2,B3,B4,B5],[B6,B7,B8,B9], onKey);
Теперь, если нажимать на клавиатуре кнопки с цифрами, они будут появляться на экране, а если на другие кнопки (вроде «А»), это покажет число, которое будет отсчитывать таймер.
// Нажимаем 1
1
// Нажимаем 2
12
// Нажимаем 3
123
// Нажимаем 4
1234
// Нажимаем A
Запуск таймера: 1234 секунд
Далее создаём сам таймер. Замените старую функцию startTimer() на вот этот код:
var timerInterval;
var timerCount;
function timerFinished() {
// Включаем красный светодиод на секунду,
// чтобы показать, что мы закончили:
digitalPulse(LED1, 1, 1000);
}
function startTimer(time) {
// Сбрасываем текущий таймер (если он был):
if (timerInterval!==undefined)
clearInterval(timerInterval);
timerInterval = undefined;
// Если было введено какое-то время, запускаем таймер:
if (time>0) {
console.log("Запуск таймера: "+time+" секунд");
timerCount = time;
// Вызываем это раз в секунду...
timerInterval = setInterval(function() {
// Уменьшаем значение таймера:
timerCount--;
if (timerCount<=0) {
// Если достигли «0», останавливаем таймер
// и вызываем timerFinished():
clearInterval(timerInterval);
timerInterval = undefined;
timerFinished();
} else {
// В противном случае просто мигаем зелёным светодиодом:
digitalPulse(LED2, 1, 100);
}
}, 1000);
}
}
Теперь, если ввести число (советуем задавать число поменьше или набраться терпения – ждать придётся долго!) и нажать на нецифровую кнопку, это запустит таймер. Пока будет вестись обратный отсчёт, будет мигать зелёный светодиод, а когда всё закончится, на секунду загорится красный светодиод.
См.также
Внешние ссылки