Блок предназначен для работы с программой CANHacker V2.00.01 и работает в связке с модулем MCP2515
Подключение модуля:
SCK - 13 pin arduino
SI - 11 pin arduino
SO - 12 pin arduino
CS - настраивается (по умолчанию 10 pin arduino)
INT - настраивается (по умолчанию 2pin arduino)
Внимание! Библиотека CanHacker.h по умолчанию настроена на частоту кварца в модуле MCP2515 на 16 мГц. Если у вас модуль с частотой 8 мГц. То вам необходимо в библиотеке CanHacker.h в строке 68 найти: CAN_CLOCK canClock = MCP_16MHZ; сделать изменения на такие : CAN_CLOCK canClock = MCP_8MHZ;
Автор блока : aidar_i на форуме flprog
Тестирование и оформление : Eraser19rus на форуме flprog
Блок был создан на основе скетча и библиотек для CANHacker автор : Dmitry
Flprog v 6.3.1 . Arduini IDE v 1.8.12 на момент создания
ЭТОТ БЛОК ПРЕДНАЗНАЧЕН ДЛЯ РАБОТЫ С CAN LIN.
Автор блока:
Movlonov Nodirbek To'raqul o'g'li
movlonov.nodirbek@mail.ru
Блок для Измерение скорости вращения путём измерения интервала между импульсами
Измерение скорости вращения путём измерения интервала между импульсами ( один импульс на оборот). Используется прерывание.
В отличии от способа с подсчётом количества импульсов за единицу времени, позволяет получить большее разрешение на малой скорости вращения без увеличения разрешения датчика (количества импульсов на оборот). Измерение происходит при изменении входного сигнала с низкого уровня на высокий. Обновление значения происходит с каждым оборотом, в случае остановки вращения значение обнулится через определённое время, которое зависит от минимальной установленной скорости (задаётся в параметрах пользователя).
В параметрах пользователя необходимо указать минимальную измеряемую скорость. От этого зависит, сколько времени после остановки вращения будет сохранятся последнее измеренное значение.
Энкодер Pro (EncPro) V1.4
Энкодер Pro (EncPro) Энкодер_Pro_V1.5.1
Это универсальный блок с возможностью настройки.
Все настройки интуитивно понятны и имеют описание и подсказки.
Благодаря отличному алгоритму библиотеки Encoder (https://github.com/PaulStoffregen/Encoder/releases),
которую я поправу считаю лучшей в своем классе, пропуск шагов практически исключен.
В описании библиотеки гарантирована работа на частоте до 100 - 127 кГц.
Если у вас нормальный, не убитый энкодер, имеющий RC фильтры, то при подключении
сигнальных пинов на пины контроллера, поддерживающие прерывания, качественная работа
блока гарантирована. Если же такой возможности нет, то используйте хотя бы один пин
поддерживающий прерывания. У таких контроллеров как UNO и NANO это D2 и D3.
Счетный выход блока Count выдает результат моментально.
Скорость работы импульсных выходов Up и Down зависит от вашей программы.
Блок физически не может выдавать больше одного импульса за два цикла.
Однако импульсов будет ровно столько, сколько покажет моментальный выход Count,
хотя они могут совершаться с задеожкой.
Блок выдает количество шагов и импульсы для каждого шага.
Автор
Dryundel
СОЗДАНИЕ GOOGLE-ТАБЛИЦЫ
Запись данные с ESP8266 в Google-таблицы
Создайте электронную таблицу Google на вашем Google-Диске и назовите её например DataCollector («Сборщик Данных»). Переименуйте текущий (или активный) лист (sheet) на Summary («Общее») и добавьте второй лист, назовите его DataLogger («Регистратор Данных»). Из адресной строки таблицы скопируйте символы, находящиеся между символами «d/» и «/edit» и сохраните их где-нибудь. Это уникальный ключ совместного использования вашей электронной таблицы, который позже понадобится для скрипта на языке Google Apps Script.
Внимание! Имя электронной таблицы Google не играет большой роли, так как в скрипте Google Apps Script мы будем использовать ключ совместного использования таблицы, который всегда уникален. В то же время имена листов (Summary и DataLogger) должны совпадать с теми, которые вы используете в скрипте Google Apps Script (об этом написано ниже).
СКРИПТ НА ЯЗЫКЕ GOOGLE APPS SCRIPT
Для создания скрипта Google Apps Script в приложении, Google-Таблицы выберите пункт меню «Apps Script» заходим в вкладку «Apps Script» далее нажимаем на плюс рядом с надписью «Файлы +» выбераем вкладку скрипт. В окне кода вставьте нижеприведённый код. Код или скрипт можно сохранить под любым именем.
Далее входим во вкладку "начать развертывание" далее
"Новое развертывание" Веб-приложение Запуск от имени выбираете "свой аккаунт" У кого есть доступ "Все"
Далее Идентификатор развертывания вставляем в ссылку адресной строки ---Your-Google-Sheet-ID--Goes-Here---
https://script.google.com/macros/s/---Your-Google-Sheet-ID--Goes-Here---/exec?tag=test&value=-1
// 0) Заходим в Google-Таблицы, Инструменты > Редактор скриптов...
// 1) Вставляем туда этот код
// 2) Сохраняем и именуем уникальным названием
// 3) Задаем в меню способ запуска в режиме "doGet"
// 4) При первом запуске скрипт попросит вас дать ему права на редактирование таблицы
// 5) В главном меню > Развернуть как веб-приложение...
// Каждый раз, когда заново разворачиваете скрипт, выбирайте последнюю версию
// Выставляем права: "Me (your email address)"
// ВАЖНО: выберите "Anyone, even anonymous" в меню "Кто может редактировать этот скрипт"
// Сохраняем опубликованный URL для использования в дальнейшем.
// https://script.google.com/macros/s/---Ваш-Script-ID--здесь---/exec
// https://script.google.com/macros/s/---Ваш-Script-ID--здесь---/exec?tag=test&value=-1
// Эта Функция будет вызвана один раз при первом исполнении
function doGet(e){
Logger.log("--- doGet ---");
var tag = "",
value = "";
try {
// Дебаггинг
if (e == null){e={}; e.parameters = {tag:"test",value:"-1"};}
tag = e.parameters.tag;
value = e.parameters.value;
// Сохраняем данные в таблицу
save_data(tag, value);
return ContentService.createTextOutput("Wrote:n tag: " + tag + "n value: " + value);
} catch(error) {
Logger.log(error);
return ContentService.createTextOutput("oops...." + error.message
+ "n" + new Date()
+ "ntag: " + tag +
+ "nvalue: " + value);
}
}
// Функция для сохранения данных в таблицу
function save_data(tag, value){
Logger.log("--- save_data ---");
try {
var dateTime = new Date();
// Вставьте URL из Google-таблицы , начиная с https thru /edit
// Например: https://docs.google.com/..../edit
var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/---Ваш-Google-Sheet-ID--Goes-Here---/edit");
var summarySheet = ss.getSheetByName("Summary");
var dataLoggerSheet = ss.getSheetByName("DataLogger");
// Получаем информацию о последней отредактированной строке в таблице
var row = dataLoggerSheet.getLastRow() + 1;
// Заполняем данными
dataLoggerSheet.getRange("A" + row).setValue(row -1); // ID
dataLoggerSheet.getRange("B" + row).setValue(dateTime); // dateTime
dataLoggerSheet.getRange("C" + row).setValue(tag); // tag
dataLoggerSheet.getRange("D" + row).setValue(value); // value
// Обновляем таблицу summary
summarySheet.getRange("B1").setValue(dateTime); // Last modified date
// summarySheet.getRange("B2").setValue(row - 1); // Count
}
catch(error) {
Logger.log(JSON.stringify(error));
}
Logger.log("--- save_data end---");
}