Espruino:Примеры/Счетчик YouTube-просмотров: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
(Новая страница: «{{Espruino/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} =<ref>[ www.espruino.com - ]</ref>= <syntaxhighlig...»)
 
Нет описания правки
Строка 3: Строка 3:
{{Myagkij-редактор}}
{{Myagkij-редактор}}


=<ref>[ www.espruino.com - ]</ref>=
=Счетчик YouTube-просмотров<ref>[https://www.espruino.com/YouTube+View+Counter www.espruino.com - YouTube View Counter]</ref>=


[Видео]


== Нам понадобятся ==
* Плата [https://www.espruino.com/WiFi Espruino WiFi]
* Светодиодный дисплей [https://www.espruino.com/MAX7219 MAX7219] (32x8 пикселей)
== Подсоединение ==
Просто подключите устройства друг к другу следующим образом:
MAX7219
Espruino
VCC
VUSB или 3.3v
GND
GND
DOUT
B3
CS
B4
CLK
B5
'''Примечание:''' Расположение контактов на плате дисплея MAX7219 и цвета проводов кабеля, идущего в комплекте с ним, могут вызвать путаницу, из-за которой вы можете случайно поменять местами линии VCC и GND, так что будьте осторожны.
Плату MAX7219 нужно питать от 3.3 или 5 вольт. Использование 5-вольтового напряжения увеличит яркость экрана, а также снизит нагрузку на 3.3-вольтовую линию (которая также используется для WiFi).
Мы используем программную [https://www.espruino.com/SPI SPI], так что для MAX7219 можно использовать любые свободные GPIO-контакты.
== Код ==
Скопируйте этот код в правую часть Web IDE, не забудьте поменять WiFi-настройки (пароль и название WiFi-сети), ID для видео и API-ключ в самом верху кода. О том, как получить рабочий API-ключ, смотрите в видео.


<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript" enclose="div">
var WIFI_NAME = "espruino";
var WIFI_OPTIONS = { password : "testtest" };
var VIDEO_ID = "aZ4MKhqvz2w";
var API_KEY = "";


var disp;
var g = Graphics.createArrayBuffer(32, 8, 1);
g.flip = function() { disp.raw(g.buffer); };
require("Font4x8Numeric").add(Graphics);
g.setFont4x8Numeric();
var wifi;
var count = 0;
var lastCount = 0;
var interval;
function drawCount() {
  g.clear();
  var c = count.toString();
  g.drawString(c, g.getWidth()-g.stringWidth(c));
  g.flip();
}
function updateCount(newCount) {
  if (interval) clearInterval(interval);
  interval = undefined;
  var diff = newCount - lastCount;
  if (lastCount===0 || diff<=0) {
    lastCount = newCount;
    count = newCount;
    drawCount();
    return;
  }
  lastCount = count;
  count = newCount;
  drawCount();
  interval = setInterval(function() {
    count++;
    drawCount();
  }, 60000/diff);
}
function getPage() {
  require("http").get("https://www.googleapis.com/youtube/v3/videos?part=statistics&id="+VIDEO_ID+"&key="+API_KEY, function(res) {
    var data = "";
    res.on('data', function(d) { data += d; });
    res.on('close', function() {
      var json = JSON.parse(data);
      updateCount(json.items[0].statistics.viewCount);
    });
  });
}
function onInit() {
  var spi = new SPI();
  spi.setup({ mosi:B3, sck:B5 });
  disp = require("MAX7219").connect(spi, B4, 4);
  wifi = require("EspruinoWiFi");
  wifi.connect(WIFI_NAME, WIFI_OPTIONS, function(err) {
    if (err) {
      console.log("Ошибка подключения: "+err);
      return;
    }
    console.log("Подключились!");
    // Сразу же обновляем:
    getPage();
    // Теперь обновляем каждые 60 секунд:
    setInterval(getPage, 60000);
  });
}
</syntaxhighlight>
</syntaxhighlight>
'''Примечание:''' В этом коде используется шрифт 4x8 (он упоминается в видео, но не показывается), который позволяет показать на экране больше цифр (8).


=См.также=
=См.также=

Версия от 18:15, 10 июля 2021

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Счетчик YouTube-просмотров[1]

[Видео]

Нам понадобятся

Подсоединение

Просто подключите устройства друг к другу следующим образом:

MAX7219 Espruino VCC VUSB или 3.3v GND GND DOUT B3 CS B4 CLK B5

Примечание: Расположение контактов на плате дисплея MAX7219 и цвета проводов кабеля, идущего в комплекте с ним, могут вызвать путаницу, из-за которой вы можете случайно поменять местами линии VCC и GND, так что будьте осторожны.

Плату MAX7219 нужно питать от 3.3 или 5 вольт. Использование 5-вольтового напряжения увеличит яркость экрана, а также снизит нагрузку на 3.3-вольтовую линию (которая также используется для WiFi). Мы используем программную SPI, так что для MAX7219 можно использовать любые свободные GPIO-контакты.

Код

Скопируйте этот код в правую часть Web IDE, не забудьте поменять WiFi-настройки (пароль и название WiFi-сети), ID для видео и API-ключ в самом верху кода. О том, как получить рабочий API-ключ, смотрите в видео.

var WIFI_NAME = "espruino";
var WIFI_OPTIONS = { password : "testtest" };
var VIDEO_ID = "aZ4MKhqvz2w";
var API_KEY = "";

var disp;
var g = Graphics.createArrayBuffer(32, 8, 1);
g.flip = function() { disp.raw(g.buffer); };

require("Font4x8Numeric").add(Graphics);
g.setFont4x8Numeric();

var wifi;

var count = 0;
var lastCount = 0;
var interval;

function drawCount() {
  g.clear();
  var c = count.toString();
  g.drawString(c, g.getWidth()-g.stringWidth(c));
  g.flip();
}

function updateCount(newCount) {
  if (interval) clearInterval(interval);
  interval = undefined;
  var diff = newCount - lastCount;
  if (lastCount===0 || diff<=0) {
    lastCount = newCount;
    count = newCount;
    drawCount();
    return;
  }
  lastCount = count;
  count = newCount;
  drawCount();
  interval = setInterval(function() {
    count++;
    drawCount();
  }, 60000/diff);
}

function getPage() {
  require("http").get("https://www.googleapis.com/youtube/v3/videos?part=statistics&id="+VIDEO_ID+"&key="+API_KEY, function(res) {
    var data = "";
    res.on('data', function(d) { data += d; });
    res.on('close', function() {
      var json = JSON.parse(data);
      updateCount(json.items[0].statistics.viewCount);
    });
  });
}

function onInit() {
  var spi = new SPI();
  spi.setup({ mosi:B3, sck:B5 });
  disp = require("MAX7219").connect(spi, B4, 4);

  wifi = require("EspruinoWiFi");
  wifi.connect(WIFI_NAME, WIFI_OPTIONS, function(err) {
    if (err) {
      console.log("Ошибка подключения: "+err);
      return;
    }
    console.log("Подключились!");
    // Сразу же обновляем:
    getPage();
    // Теперь обновляем каждые 60 секунд:
    setInterval(getPage, 60000);
  });
}

Примечание: В этом коде используется шрифт 4x8 (он упоминается в видео, но не показывается), который позволяет показать на экране больше цифр (8).

См.также

Внешние ссылки