Espruino:Примеры/Маленькие словесные часы: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Нет описания правки |
||
(не показаны 4 промежуточные версии 2 участников) | |||
Строка 22: | Строка 22: | ||
== Подсоединение == | == Подсоединение == | ||
Просто подключите светодиодную матрицу к любым GPIO-контактам Espruino. Поскольку мы используем MDBT42Q, то лучше сделать так – поместить контакты на кончики штырей дисплея, а потом придавить их к центру, а затем сделать то же самое с противоположным рядом штырьков. В результате оба ряда штырьков должны быть согнуты внутрь до такой степени, чтобы вы могли подключить к ним оба ряда контактных отверстий MDBT42Q (более подробно об этом смотрите в видео выше примерно с 01:09). | Просто подключите светодиодную матрицу к любым GPIO-контактам [[Espruino]]. Поскольку мы используем [[MDBT42Q]], то лучше сделать так – поместить контакты на кончики штырей дисплея, а потом придавить их к центру, а затем сделать то же самое с противоположным рядом штырьков. В результате оба ряда штырьков должны быть согнуты внутрь до такой степени, чтобы вы могли подключить к ним оба ряда контактных отверстий [[MDBT42Q]] (более подробно об этом смотрите в видео выше примерно с 01:09). | ||
[[File:Tiny_Word_Clock_assembly.jpg|center]] | [[File:Tiny_Word_Clock_assembly.jpg|center]] | ||
Строка 30: | Строка 30: | ||
Если у вас какая-то другая светодиодная матрица, вы используете другие контакты или подсоединили всё как-то по-другому, советуем почитать [https://www.espruino.com/LED+Matrix#wiring это руководство по подключению светодиодной матрицы] – там есть код, с помощью которого можно выяснить, какой провод куда подключен. | Если у вас какая-то другая светодиодная матрица, вы используете другие контакты или подсоединили всё как-то по-другому, советуем почитать [https://www.espruino.com/LED+Matrix#wiring это руководство по подключению светодиодной матрицы] – там есть код, с помощью которого можно выяснить, какой провод куда подключен. | ||
{{Примечание1|Лучше не подключать светодиоды напрямую к контактам микроконтроллера (как мы делаем в этом руководстве). Но поскольку это мультиплексный дисплей, мы включаем светодиоды лишь на очень короткое время, поэтому крайне маловероятно, что мы таким образом повредим светодиоды или микроконтроллер.}} | |||
== Наклейка для дисплея == | == Наклейка для дисплея == | ||
Строка 36: | Строка 36: | ||
[[File:Tiny_Word_Clock_label.png|center]] | [[File:Tiny_Word_Clock_label.png|center]] | ||
Наклейку можно распечатать с [[ | Наклейку можно распечатать с [[Media:wordclock_8x8_label.pdf| этого PDF-файла]]. | ||
Наклейка из видео выше была распечатана с помощью струйного принтера, поэтому чёрный цвет получился не полностью прозрачным, и через него проглядывают маленькие белые пятна. По возможности лучше распечатайте её на лазерном принтере (или хотя бы выставьте на струйном принтере максимальное качество печати) – это должно решить проблему. | Наклейка из видео выше была распечатана с помощью струйного принтера, поэтому чёрный цвет получился не полностью прозрачным, и через него проглядывают маленькие белые пятна. По возможности лучше распечатайте её на лазерном принтере (или хотя бы выставьте на струйном принтере максимальное качество печати) – это должно решить проблему. | ||
Строка 42: | Строка 42: | ||
== Код == | == Код == | ||
Просто скопируйте код ниже в правую часть IDE и кликните на кнопку загрузки кода. Когда всё будет настроено как надо, просто напечатайте save() в левой части IDE, чтобы сохранить этот код в долговременную flash-память Espruino. | Просто скопируйте код ниже в правую часть [[IDE]] и кликните на кнопку загрузки кода. Когда всё будет настроено как надо, просто напечатайте save() в левой части IDE, чтобы сохранить этот код в долговременную [[flash-память]] [[Espruino]]. | ||
Если выключить плату, то время собьётся. Исправить это можно с помощью [https://www.espruino.com/Bluetooth+Time вот этой страницы] на любом устройстве с Web Bluetooth (ПК/Mac на котором запущен Chrome, Android или iPhone, на котором запущено приложение [https://apps.apple.com/us/app/webble/id1193531073 WebBLE]). | Если выключить плату, то время собьётся. Исправить это можно с помощью [https://www.espruino.com/Bluetooth+Time вот этой страницы] на любом устройстве с Web Bluetooth (ПК/Mac на котором запущен Chrome, Android или iPhone, на котором запущено приложение [https://apps.apple.com/us/app/webble/id1193531073 WebBLE]). | ||
<syntaxhighlight lang="javascript | <syntaxhighlight lang="javascript"> | ||
/* | /* | ||
Паттерн 8x8 взят с https://github.com/andydoro/WordClock-NeoMatrix8x8 | Паттерн 8x8 взят с https://github.com/andydoro/WordClock-NeoMatrix8x8 | ||
Строка 162: | Строка 162: | ||
== Где купить == | == Где купить == | ||
* Интерфейсную плату MDBT42Q можно заказать [https://www.espruino.com/Order#mdbt42q тут] | * Интерфейсную плату [[MDBT42Q]] можно заказать [https://www.espruino.com/Order#mdbt42q тут] | ||
* О том, где купить светодиодную матрицу, можно узнать в [https://www.espruino.com/LED+Matrix#buying соответствующей статье] | * О том, где купить светодиодную матрицу, можно узнать в [https://www.espruino.com/LED+Matrix#buying соответствующей статье] | ||
=См.также= | =См.также= | ||
=Внешние ссылки= | =Внешние ссылки= | ||
Строка 173: | Строка 171: | ||
<references /> | <references /> | ||
{{Навигационная таблица/Espruino | {{Навигационная таблица/Портал/Espruino}} | ||
Текущая версия от 19:55, 23 мая 2023
Маленькие словесные часы[1]
Часы, которые мы соберём в этом руководстве, показывают текущее время при помощи подсвечивания соответствующих букв на дисплее.
Нам понадобятся
- Светодиодная матрица 8x8
- Интерфейсная плата MDBT42Q
- JST-коннектор и батарея (или какой-то другой способ питания платы)
- Печатная наклейка с буквами 8x8
Подсоединение
Просто подключите светодиодную матрицу к любым GPIO-контактам Espruino. Поскольку мы используем MDBT42Q, то лучше сделать так – поместить контакты на кончики штырей дисплея, а потом придавить их к центру, а затем сделать то же самое с противоположным рядом штырьков. В результате оба ряда штырьков должны быть согнуты внутрь до такой степени, чтобы вы могли подключить к ним оба ряда контактных отверстий MDBT42Q (более подробно об этом смотрите в видео выше примерно с 01:09).
На фото вверху я вдобавок чуть подвинул плату к центру дисплея, чтобы она не выпячивала за край дисплея.
Если у вас какая-то другая светодиодная матрица, вы используете другие контакты или подсоединили всё как-то по-другому, советуем почитать это руководство по подключению светодиодной матрицы – там есть код, с помощью которого можно выяснить, какой провод куда подключен.
Наклейка для дисплея
Наклейку можно распечатать с этого PDF-файла.
Наклейка из видео выше была распечатана с помощью струйного принтера, поэтому чёрный цвет получился не полностью прозрачным, и через него проглядывают маленькие белые пятна. По возможности лучше распечатайте её на лазерном принтере (или хотя бы выставьте на струйном принтере максимальное качество печати) – это должно решить проблему.
Код
Просто скопируйте код ниже в правую часть IDE и кликните на кнопку загрузки кода. Когда всё будет настроено как надо, просто напечатайте save() в левой части IDE, чтобы сохранить этот код в долговременную flash-память Espruino.
Если выключить плату, то время собьётся. Исправить это можно с помощью вот этой страницы на любом устройстве с Web Bluetooth (ПК/Mac на котором запущен Chrome, Android или iPhone, на котором запущено приложение WebBLE).
/*
Паттерн 8x8 взят с https://github.com/andydoro/WordClock-NeoMatrix8x8
01234567
0 ATWENTYD
1 QUARTERY
2 FIVEHALF
3 DPASTORO
4 FIVEIGHT
5 SIXTHREE
6 TWELEVEN
7 FOURNINE
*/
// Массивы с индексами для каждого слова:
var WORDS = {
"a":[00],
"_five":[02,12,22,32],
"_ten":[10,30,40],
"_quarter":[01,11,21,31,41,51,61],
"_twenty":[10,20,30,40,50,60],
"_half":[42,52,62,72],
"past":[13,23,33,43],
"to":[43,53],
"one":[17,47,77],
"two":[06,16,17],
"three":[35,45,55,65,75],
"four":[07,17,27,37],
"five":[04,14,24,34],
"six":[05,15,25],
"seven":[05,46,56,66,67],
"eight":[34,44,54,64,74],
"nine":[47,57,67,77],
"ten":[74,75,76],
"eleven":[26,36,46,56,66,76],
"twelve":[06,16,26,36,56,66]
};
const ANODES = [D25,D26,D30,D16,D31,D18,D19,D28];
const CATHODES = [D17,D20,D15,D22,D29,D14,D27,D3];
var g = Graphics.createArrayBuffer(8,8,1);
// Запускаем сканирование светодиодного дисплея:
function startScanning() {
var b = new Uint8Array(g.buffer);
// Заранее делаем привязку digitalWrites(), чтобы ускорить процесс:
var a = digitalWrite.bind(undefined,ANODES);
var c = digitalWrite.bind(undefined,CATHODES.concat(ANODES));
return setInterval(function() {
b.map((d,i)=>{c(65280^(256<<i));a(d);});c(65280);
},10); // 100 Гц
}
// Используя заданный массив слов,
// включаем соответствующие светодиоды:
function outputWords(wordList) {
g.clear();
wordList.forEach(function(word) {
WORDS[word].forEach(function(led) {
var y = led%10;
var x = (led-y)/10;
g.setPixel(x,y);
});
});
}
// Преобразовываем часы и минуты (секунды игнорируются)
// в строку вроде '_five minutes past six'.
// Впереди стоит нижнее подчёркивание,
// чтобы случайно не включить неправильное «five».
function timeToWords(h,m,s) {
var mins = ["","_five","_ten","_quarter","_twenty","_twenty _five","_half"];
var hours = ["", "one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve"];
var str = "";
// Ближайшие 5 минут:
var midx = Math.round(m/5);
var hidx = h;
// Выясняем, каким префиксом нужно воспользоваться: «past» или «to».
if (midx>6) {
if (midx==12) midx=0;
hidx++;
}
hidx = hidx % 12;
if (hidx==0) hidx=12;
// Наконец, генерируем минуты и часы:
if (midx!=0) {
if (midx<=6)
str += mins[midx]+" past ";
else {
str += mins[12-midx]+" to ";
}
}
str += hours[hidx];
return str;
}
// Каждую минуту обновляем изображение на дисплее:
function onMinute() {
// Получаем время в виде строки:
var d = new Date();
var timeWords = timeToWords(d.getHours(),d.getMinutes(),d.getSeconds());
// Конвертируем её в массив слов и включаем нужные светодиоды:
outputWords(timeWords.split(" "));
}
setInterval(onMinute, 60000);
onMinute();
startScanning();
Где купить
- Интерфейсную плату MDBT42Q можно заказать тут
- О том, где купить светодиодную матрицу, можно узнать в соответствующей статье
См.также
Внешние ссылки