Espruino:Примеры/Клавиатурный таймер: различия между версиями
Myagkij (обсуждение | вклад) (Новая страница: «{{Espruino/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} =<ref>[ www.espruino.com - ]</ref>= <syntaxhighligh...») |
Myagkij (обсуждение | вклад) Нет описания правки |
||
Строка 3: | Строка 3: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=<ref>[ www.espruino.com - ]</ref>= | =Клавиатурный таймер<ref>[https://www.espruino.com/KeyPad+Timer www.espruino.com - KeyPad Timer]</ref>= | ||
В этой статье мы расскажем, как при помощи [https://www.espruino.com/KeyPad кнопочной панели] и Espruino создать клавиатурный таймер. Кнопочная панель есть в наборе Espruino Ultimate, но её также можно купить отдельно (см. последний раздел этой статьи). | |||
== Вам понадобятся == | |||
* Одна [https://www.espruino.com/Original плата Espruino] | |||
* [https://www.espruino.com/KeyPad Кнопочная панель] | |||
== Подсоединение == | |||
Просто подключите кнопочную панель к контактам B2, B3, B4, B5, B6, B7, B8 и B9 на Espruino (они находятся на боковой стороне Espruino и идут один за другим) – так, чтобы она (кнопочная панель) лежала лицевой стороной вверх. Провод рядом с «D» нужно подключить к B2, а провод рядом с «*» – к B9. Какой контакт куда подключать – неважно, но если вы будете использовать какие-то другие контакты, то вам также нужно будет внести соответствующие изменения в код ниже. | |||
== Код == | |||
Во-первых, нам надо запрограммировать ответ на нажатие кнопки. Подключитесь к Espruino, скопируйте и вставьте код ниже в правую часть IDE и кликните на кнопку загрузки кода. | |||
<syntaxhighlight lang="html5" enclose="div"> | |||
function onKey(key) { | |||
console.log("123A456B789C*0#D"[key]); | |||
} | |||
require("KeyPad").connect([B2,B3,B4,B5],[B6,B7,B8,B9], onKey); | |||
</syntaxhighlight> | |||
Примечание: Мы не можем сразу вписать этот код в левую часть IDE, потому что в нём есть модуль KeyPad, который Web IDE сначала должна динамически подгрузить из интернета. Если мы вписываем код в правую часть, то подгрузка произойдёт, а если в левую, то нет. | |||
Теперь, когда вы нажмёте на панели на какую-нибудь кнопку, этот символ появится на экране. | |||
Далее нам надо сделать так, чтобы символы прибавлялись друг к другу и создавали большое число. Если на панели будет нажата нецифровая кнопка, это будет означать запуск таймера. | |||
Скопируйте и вставьте код ниже в правую часть IDE и кликните на кнопку загрузки кода: | |||
<syntaxhighlight lang="html5" enclose="div"> | |||
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); | |||
</syntaxhighlight> | |||
Теперь, если нажимать на клавиатуре кнопки с цифрами, они будут появляться на экране, а если на другие кнопки (вроде «А»), это покажет число, которое будет отсчитывать таймер. | |||
<syntaxhighlight lang="html5" enclose="div"> | |||
// Нажимаем 1 | |||
1 | |||
// Нажимаем 2 | |||
12 | |||
// Нажимаем 3 | |||
123 | |||
// Нажимаем 4 | |||
1234 | |||
// Нажимаем A | |||
Запуск таймера: 1234 секунд | |||
</syntaxhighlight> | |||
Далее создаём сам таймер. Замените старую функцию startTimer() на вот этот код: | |||
<syntaxhighlight lang="html5" enclose="div"> | <syntaxhighlight lang="html5" enclose="div"> | ||
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); | |||
} | |||
} | |||
</syntaxhighlight> | |||
Теперь, если ввести число (советуем задавать число поменьше или набраться терпения – ждать придётся долго!) и нажать на нецифровую кнопку, это запустит таймер. Пока будет вестись обратный отсчёт, будет мигать зелёный светодиод, а когда всё закончится, на секунду загорится красный светодиод. | |||
=См.также= | =См.также= |
Версия от 14:29, 6 марта 2021
Клавиатурный таймер[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, потому что в нём есть модуль KeyPad, который Web IDE сначала должна динамически подгрузить из интернета. Если мы вписываем код в правую часть, то подгрузка произойдёт, а если в левую, то нет.
Теперь, когда вы нажмёте на панели на какую-нибудь кнопку, этот символ появится на экране.
Далее нам надо сделать так, чтобы символы прибавлялись друг к другу и создавали большое число. Если на панели будет нажата нецифровая кнопка, это будет означать запуск таймера.
Скопируйте и вставьте код ниже в правую часть 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);
}
}
Теперь, если ввести число (советуем задавать число поменьше или набраться терпения – ждать придётся долго!) и нажать на нецифровую кнопку, это запустит таймер. Пока будет вестись обратный отсчёт, будет мигать зелёный светодиод, а когда всё закончится, на секунду загорится красный светодиод.
См.также
Внешние ссылки