Espruino:Примеры/Управление Espruino Pico с компьютера
Управление Espruino Pico с компьютера[1]
В этом руководстве мы при помощи Espruino Pico будем показывать на LCD-дисплее данные, пришедшие от компьютера.
Для отправки данных мы воспользуемся скриптами командной оболочки, которые уже являются частью вашего компьютера.
Нам понадобятся
Подсоединение
Подключение компонентов друг к другу осуществляется очень просто, потому что LCD-дисплей потребляет так мало энергии, что его можно питать даже от GPIO-контактов Espruino. Просто поместите Espruino Pico на макетную плату так, чтобы её USB-коннектор смотрел влево. Затем поместите LCD-дисплей прямо над Pico так, чтобы его контакты были выровнены по самому правому контакту Pico – в результате самый левый контакт Pico (тот, что ближе всего к USB-коннектору) должен быть свободен. Пример подключения компонентов смотрите на фото выше.
Код для Espruino
Просто скопируйте код ниже в правую часть Web IDE и кликните на кнопку загрузки кода.
A5.write(0); // контакт GND
A7.write(1); // контакт VCC
var initialised = false;
var g;
function onInit() {
// Настраиваем SPI:
var spi = new SPI();
spi.setup({ sck:B1, mosi:B10 });
// Инициализируем LCD-дисплей:
g = require("PCD8544").connect(spi,B13,B14,B15, function() {
initialised = true;
draw(10);
});
}
function draw(usage) {
if (!initialised || usage===undefined) return;
// Меняем формат чисел, чтобы вместо запятой была точка
// (то есть, например, чтобы вместо «1,234» было «1.234»):
usage = parseFloat(usage.toString().replace(",","."));
g.clear();
g.drawString("CPU Usage: "+usage+"%");
// Рисуем «стрелку»:
var ang = Math.PI*usage/100;
g.drawLine(42,47,42-28*Math.cos(ang), 47-Math.sin(ang)*28);
// Рисуем цифры на шкале:
for (var i=0;i<=100;i+=20) {
ang = Math.PI*i/100;
g.drawString(i, 42-36*Math.cos(ang)-(g.stringWidth(i)/2), 40-Math.sin(ang)*30);
}
// Рисуем метки:
for (i=0;i<=100;i+=5) {
ang = Math.PI*i/100;
g.setPixel(42-30*Math.cos(ang), 47-Math.sin(ang)*30);
}
g.flip();
}
После отправки кода напечатайте save() в правой части Web IDE. Это сохранит код в долговременную память Espruino, чтобы он запускался при каждом включении платы. Теперь на экране должна появиться шкала, обозначающая процент использования CPU.
Теперь, если мы напечатаем draw(20) (или любое число в диапазоне между 0 и 100), то положение стрелки на нашем виртуальном приборе должно измениться.
Следующий шаг – это сделать так, чтобы компьютер отправлял на Espruino команду draw() при каждом изменении процента использования CPU.
Код для компьютера-хоста
У разных операционных систем свои особенности. Выберите раздел, соответствующий вашей ОС.
Linux
Откройте командную строку и впишите туда следующее:
echo -e "draw(\"`ps -A -o pcpu | tail -n+2 | paste -sd+ - | bc`\")\n"
Эта команда должна напечатать что-то вроде draw("13.0338"). Она ищет файл «/proc/stat» и находит там информацию о текущем использовании CPU. Число в аргументе представлено в виде строки для того, чтобы Espruino смогла пропарсить это число, даже если язык вашего ПК в качестве десятичного знака использует «,».
Следующий шаг – это отправка данных прямо на Espruino.
На Linux:
echo -e "draw(\"`ps -A -o pcpu | tail -n+2 | paste -sd+ | bc`\")\n" > /dev/ttyACM0
На Mac:
echo -e "draw(\"`ps -A -o pcpu | tail -n+2 | paste -sd+ - | bc`\")\n" > /dev/cu.usbmodem*
Если при подключении при помощи Web IDE обнаружилось, что у устройства другое название, то его, возможно, надо будет поменять (помните, что на Mac название устройства, с которым вы хотите провести сеанс эхо-отображения, должно начинаться с «/dev/cu»).
После выполнения этой команды на дисплее должен появиться индикатор использования CPU.
Теперь нам надо сделать так, чтобы эта команда вызывалась постоянно:
На Linux:
while :; do echo -e "draw(\"`ps -A -o pcpu | tail -n+2 | paste -sd+ | bc`\")\n" > /dev/ttyACM0; sleep 1; done
На Mac:
while :; do echo -e "draw(\"`ps -A -o pcpu | tail -n+2 | paste -sd+ - | bc`\")\n" > /dev/cu.usbmodem*; sleep 1; done
Готово – мы сделали внешний индикатор использования CPU!
Windows
Откройте блокнот и впишите туда следующее:
@echo off
:start
(@for /f "skip=1" %%p in ('wmic cpu get loadpercentage') do (@echo draw^(%%p^) > \\.\COM32))
@timeout 1 > nul
goto start
Не забудьте поменять «COM32» на COM-порт, который вы используете для подключения с помощью Web IDE.
Затем сохраните этот файл как «cpumon.bat», отключите Web IDE от платы и кликните на этот файл, чтобы запустить его.
См.также
Внешние ссылки