Начало работы с MALT
В этом разделе описывается, как отправить встроенное ПО в MALT, а также как откалибровать датчики с помощью SensorExplorer. Рекомендуется, чтобы компьютер, управляющий микроконтроллером, также был тестируемой системой или устройством (SUT/DUT).
Ориентирование malt
| Передняя часть MALT (AMBIENT FACING) | Задняя часть MALT (ЭКРАН С ЛИЦОМ) |
|---|---|
![]() |
![]() |
Настройка оборудования

- Подключите Arduino Mega к устройству с помощью кабеля USB 2.0 типа A/B.
- Подключите плату контроллера MALT к задним контактам Arduino Mega с помощью кабеля радужной ленты.
- Подключите плату контроллера MALT к плате датчика MALT с помощью кабеля CAT5(x) или CAT6(x). (Например, CAT5, CAT5e, CAT6 и т. д.)
Примечание Кабель Ethernet, используемый для подключения платы контроллера MALT к плате датчика MALT, должен иметь все 8 проводов, и эти провода не должны пересекать.

Получение необходимых файлов
- Создайте папку с именем MALT на диске C компьютера. Путь к файлу должен быть C:\MALT. Мы разместим здесь все необходимые файлы и клонированные репозитории.
- Клонируйте репозиторий busiotools в папку MALT . Путь к файлу должен быть C:\MALT\busiotools.
- Клонируйте репозитории SerialCommand и SoftI2CMaster в папку MALT . Пути к файлам должны быть : C:\MALT\Arduino-SerialCommand и C:\MALT\SoftI2CMaster соответственно.
Обновление встроенного ПО MALT
MALT управляется Arduino, для которого требуется встроенное ПО для настройки датчиков на плате MALT и взаимодействия с ними.
- Получите и настройте интерфейс командной строки Arduino.
- Скачайте последнюю версию arduino-cli и сохраните ее на компьютере.
- Добавьте arduino-cli в переменную PATH, если вы еще этого не сделали.
Примечание Убедитесь, что вы закрыли командную строку и открыли новую командную строку после добавления arduino-cli в переменную PATH.
arduino-cli config init arduino-cli core update-index arduino-cli core install arduino:avrarduino-cli lib install MatrixMath arduino-cli lib install AsyncDelayarduino-cli board listarduino-cli compile --fqbn arduino:avr:mega --port COMX --upload --library C:\MALT\Arduino-SerialCommand --library C:\MALT\SoftI2CMaster C:\MALT\busiotools\sensors\tools\MALT\Code\malt
Ожидаемые выходные данные приведены ниже:
Калибровка датчика цвета MALT
Датчики цвета MALT не поставляются на заводе, откалибровывая для реальных цветов. Ниже приведен процесс калибровки, чтобы обеспечить точное считывание. Калибровка для MALT должна быть выполнена для датчика цвета окружающей среды и датчика цвета экрана. Этот процесс необходимо выполнить только один раз для каждой платы датчика, и микросхемы памяти на PCB сохранят параметр. Чтобы обновить параметр, нажмите кнопку сброса на arduino.
- Подключите MALT к USB-порту на SUT.
- Откройте SensorExplorer и перейдите на вкладку MALT слева (No 3). Выберите правильный Vid/Pid в области Выбора устройства » и выберите Подключиться к устройству.

- Выберите вкладку Калибровка в верхней части окна.

- Известные значения цвета являются ключом к любому процессу калибровки и поступают от датчика, который уже откалиброван и имеет правильные значения. Соберите эти значения с помощью ручного откалиброваемого извне устройства, такого как i1Display Pro, для записи значений XYZ и трех цветных источников света, представляющих красный, зеленый и синий. Вы можете использовать цветные коробки ниже для калибровки ручного устройства. Для поиска этих чисел можно использовать любое устройство с проверяемо правильными значениями, например существующий откалиброванный компьютер. Эти значения XYZ должны находиться в диапазоне от 0 до 100, чтобы быть наиболее эффективными. Сделайте это для красного, синего и зеленого дисплеев.


Поместите наблюдаемые значения в матрицу Известные значения 3×3, используя следующий шаблон:
┌ ┐ │Known RED X value | Known BLUE X value | Known GREEN X value│ │Known RED Y value | Known BLUE Y value | Known GREEN Y value│ |Known RED Z value | Known BLUE Z value | Known GREEN Z value│ └ ┘


Это приведет к заполнению матрицы Необработанные некалибризованные значения 3×3 и будет выглядеть примерно так, как на рисунке ниже. 
После создания этих чисел выберитеКалибровка сверхуилиКалибровка внизу в соответствии с датчиком, который вы откалиброваете.Тестирование калибровки MALT
После правильной калибровки датчика цвета экрана и датчика цвета окружающей среды вернитесь на вкладку Главная в разделе MALT, выбрав Главная в верхней части окна.

На вкладке Главная можно нажать любую кнопку под заголовком Данные датчика и вернуть не отрицательные числа.
Устранение неполадок
- При калибровке необработанные значения будут одинаковыми, независимо от того, нажимаете ли вы клавиши Read Screen RED, Read Screen GREEN или Read Screen BLUE (аналогично true и read Ambient).
- Убедитесь, что плата датчика MALT подключена через кабель Ethernet.
- Затем проверка, что кабель, который вы используете, может поддерживать Power Over Ethernet (POE). Все кабели CAT5 или более поздней версии поддерживают это.
- Наконец, попробуйте нажать кнопку сброса на Arduino Mega, если вы уверены, что ваш кабель поддерживает POE.
- При калибровке матрица калибровки содержит «NaN» в одном из квадратов после нажатия кнопки Вычислить .
- Убедитесь, что необработанные значения дают разные числа для red, green и blue.
- Убедитесь, что датчик MALT удерживает красный при нажатии клавиши RED, зеленый при нажатии green и синий при нажатии клавиши BLUE.
- Если необработанные значения по-прежнему не отличаются, проверка 1 выше.
- После завершения калибровки (т. е. вы выбрали калибровку сверху или внизу) датчик считывает необоснованные значения на начальном экране.
- Убедитесь, что вы действительно выбрали кнопки Калибровка сверху или Калибровка внизу .
- Если вы уверены, что правильно откалиброли верхний и нижний датчики с помощью приведенных выше инструкций, отправьте электронное письмо sensortools@microsoft.com.
Если этот раздел по устранению неполадок не устраняет ваши проблемы, отправьте электронное письмо по адресу sensortools@microsoft.com.
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Windows driver documentation
Arduino cli что это
В составе установленной системы Arduino IDE есть утилита командной строки arduino-cli:
$ find ~/arduino-ide_2.2.1_Linux_64bit/ -name arduino-cli ~/arduino-ide_2.2.1_Linux_64bit/resources/app/lib/backend/resources/arduino-cli
$ ~/arduino-ide_2.2.1_Linux_64bit/resources/app/lib/backend/resources/arduino-cli --help Arduino Command Line Interface (arduino-cli).
Usage: arduino-cli [command]
Examples: ~/arduino-ide_2.2.1_Linux_64bit/resources/app/lib/backend/resources/arduino-cli < command>[flags. ]
Доступны команды (command): board команды для платы Arduino. burn-bootloader прошивка загрузчика (Upload the bootloader). cache команды кэша Arduino. compile компиляция скетчей Arduino. completion создание сценариев завершения (completion scripts). config команды конфигурации Arduino. core операции ядра Arduino. daemon запуск службы на port: 50051 debug отладка скетчей Arduino. help подсказка по любой команде. lib команды Arduino, касающиеся библиотек. monitor открыть порт обмена с платой. outdated перечислит ядра (cores) и библиотеки, которые можно обновить. sketch команды скетча Arduino CLI. update обновит индекс ядер и библиотек. upgrade обновляет установленные ядра и библиотеки. upload прошивка скомпилированного скетча. version покажет номер версии Arduino CLI.
Флаги (flags): --additional-urls strings список разделенных запятой дополнительных ссылок (URL) для Boards Manager. --config-file string пользовательский файл конфигурации (если он не указан, то будет файл конфигурации по умолчанию). --format string формат вывода для логов, может быть: text, json, jsonmini, yaml (по умолчанию "text"). -h, --help вывод подсказки для arduino-cli. --log печать логов в стандартный вывод. --log-file string путь до файла, куда будут записаны логи. --log-format string формат вывода для логов, может быть: text, json --log-level string будут выведены в лог сообщения с этим уровнем и выше. Допустимы уровни: trace, debug, info, warn, error, fatal, panic. --no-color запрет раскраски вывода.
Используйте "arduino-cli [command] --help" для дополнительной информации по любой команде command.
Также командную строку для компиляции можно подсмотреть, если разрешить подробный вывод в лог процесса компиляции. Это делается настройкой «Show verbose output during», доступной в меню File -> Preferences, надо поставить галочки compile и upload .

Пример скрипта для компиляции скетча Quark.ino для трансивера uSDK Quark v2.0, составленный с помощью подробного вывода из Arduino IDE:
#!/bin/bash
SKETCH=Quark.ino
TOOLSPATH=~/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin
ARDCORE=~/.arduino15/packages/arduino/hardware/avr/1.8.6/cores/arduino
VARIANTS=~/.arduino15/packages/arduino/hardware/avr/1.8.6/variants/eightanaloginputs
CTAGS=$HOME/.arduino15/packages/builtin/tools/ctags/5.8-arduino11/ctags
cp -f ./$SKETCH ./$SKETCH.cpp# Detecting libraries used.$TOOLSPATH/avr-g++ -c -g -Os -w \ -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics \ -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 \ -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I $ARDCORE -I $VARIANTS ./$SKETCH.cpp -o /dev/null# Generating function prototypes.$TOOLSPATH/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections \ -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L \ -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I $ARDCORE -I $VARIANTS ./$SKETCH.cpp -o ./sketch_merged.cpp$CTAGS -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives ./sketch_merged.cpp# Компиляция скетча.$TOOLSPATH/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections \ -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 \ -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I $ARDCORE -I $VARIANTS ./$SKETCH.cpp -o ./$SKETCH.cpp.o# Compiling libraries.# Compiling core.# Using precompiled core: core.a# Linking everything together.$TOOLSPATH/avr-gcc -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p -o ./$SKETCH.elf \ ./$SKETCH.cpp.o ./core.a -L. -lm$TOOLSPATH/avr-objcopy -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings \ --change-section-lma .eeprom=0 ./$SKETCH.elf ./$SKETCH.eep$TOOLSPATH/avr-objcopy -O ihex -R .eeprom ./$SKETCH.elf ./$SKETCH.hex$TOOLSPATH/avr-size -A ./$SKETCH.elfСкрипт для прошивки:
#!/bin/bashSKETCH=Quark.ino# Upload:AVRDUDE=~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17/bin/avrdudeAVRDUDECONF=~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17/etc/avrdude.confPORT=/dev/ttyUSB0$AVRDUDE -C$AVRDUDECONF -v -V -patmega328p -carduino -P$PORT -b57600 -D -Uflash:w:$SKETCH.hex:i[Ссылки]
Arduino cli что это
| Текущее время: Пн янв 08, 2024 21:57:04 |
Часовой пояс: UTC + 3 часа
Запрошенной темы не существует.
Часовой пояс: UTC + 3 часа

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y
Работоспособность сайта проверена в браузерах:
IE8.0, Opera 9.0, Netscape Navigator 7.0, Mozilla Firefox 5.0
Адаптирован для работы при разрешениях экрана от 1280х1024 и выше.
При меньших разрешениях возможно появление горизонтальной прокрутки.
По всем вопросам обращайтесь к Коту: kot@radiokot.ru
©2005-2024
Как создать конвейер автоматизированных сборок для проекта в Arduino Часть 2/2
Давайте добавим Arduino Zero. Модифицируем часть программы, которая устанавливает ядро AVR, и добавляем другой код:
# Установка ядер Arduino
arduino-cli core install arduino:avr
arduino-cli core install arduino:samd
Давайте также поменяем код для компиляции наших скетчей:
# Компилируем все файлы с расширениями *.ino для Arduino Uno
for f in <,**/>*.ino ; do
arduino-cli compile -b arduino:avr:uno $f
arduino-cli compile -b arduino:samd:arduino_zero_native $f
done
Так вы автоматически проверите код на разных платформах и увидите, появятся ли ошибки.
Если добавить изменения и отправить их в репозиторий на GitHub, а потом перейти на вкладку Actions (Действия), то вы увидите свой новенький рабочий поток и его выходные данные:
При нажатии на название сборки вы увидите что-то подобное:
Если один из шагов закончится неудачно, вы можете нажать на его название и просмотреть подробную историю лога. Также будет полезно добавить дополнительный вывод скриптам оболочки, чтобы лучше понимать, что выполняется.
Автоматизированные сборки PlatformIO
Скрипт выше будет работать и для скетчей, и для библиотек Arduino со скетчами-образцами. Он не подходит для проектов PlatformIO. Для проектов такого типа рекомендуется создавать автоматизированные сборки с помощью интерфейса командной строки PlatformIO вместо аналога в Arduino.
С таким подходом вы сделаете непрерывную интеграцию для любого типа проектов из PlatformIO, а не только для проектов из Arduino. И это его самое большое преимущество. В целом этапы схожи. Добавляем шаг в build.yml :
…
steps:
- name: Checkout
uses: actions/checkout@v2- name: Build on PlatformIO
run: bash ci/build-platformio.sh
Теперь добавляем скрипт оболочки build-platformio.sh :
MyPlatformIOProject
├── .github
│ └── workflows
│ └── build.yml
├── ci
│ └── build-platformio.sh
…
А дальше следуем инструкции по установке PlatformIO:
#!/bin/bash# Немедленный выход, если у команды не нулевой статус
set -e# Переход в рабочее пространство github
cd $GITHUB_WORKSPACE# Устанавливаем PlatformIO CLI
export PATH=$PATH:~/.platformio/penv/bin
curl -fsSL https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py -o get-platformio.py
python3 get-platformio.py
Теперь устанавливаем платформы для тестирования:
# Устанавливаем платформу Atmel AVR
pio platform install "atmelavr"
Если вы корректно настроили platformio.ini , вам осталось пройти всего один шаг:
# Компилируем проект
pio run
Как вариант — можно напрямую пойти в окружения, определённые в platformio.ini :
# Компилируем проект для Uno
pio run -e uno
Вот и все. Процесс оказался ещё проще, чем при работе с Arduino CLI.
Укрепляем красивый стиль форматирования кода
Инструмент clang-format (CF) помогает проверять код на соответствие определенным правилам стиля форматирования в программах на C или C++.
Стилей программирования много — выбирайте тот, что вам ближе: LLVM, GNU, Google, Mozilla или Microsoft. Вы также можете настроить инструмент проверки CF, чтобы писать код в одном стиле. Просто выберите любой из них, если не можете решить. Наличие одного приоритетного стиля важнее, чем поиск идеального. Всегда можно изменить или переопределить его позже, а всю базу кода просто переформатировать.
Если вы работаете в VSC, вы можете добавить расширение, чтобы форматировать код при каждом сохранении файла. Тогда у вас больше не будет повода волноваться об этом. Все будет автоматизировано. Для других редакторов доступны похожие плагины. Я предлагаю добавлять в проект файл .clang-format :
MyArduinoLibrary
├── .clang-format
…
Выберите основной стиль и конфигурируйте его в файле вместе с вашими конфигурационными опциями. Вот как выглядит мой .clang-format :
BasedOnStyle: GoogleLanguage: CppIndentWidth: 4
AlignConsecutiveMacros: true
Не стесняйтесь изучать остальные возможности clang-format. У этого инструмента есть что предложить.
После добавления CF в проект вы также можете интегрировать его в свой конвейер сборок, чтобы проверить правильность форматирования в базе кода.
Чтобы этого достичь, создаём новый шаг Check clang-format conformity в файле build.yml . Предлагаю добавить его прямо после шага проверки (Checkout):
…
steps:
- name: Checkout
uses: actions/checkout@v2- name: Check clang-format conformity
run: bash ci/clang-lint.sh- name: Build on Arduino CLI
run: bash ci/build-arduino.sh
Так запускается скрипт оболочки clang-lint.sh . Добавляем в файл несколько строчек для установки clang-format:
#!/bin/bash# Немедленный выход, если у команды не нулевой статус
set -e# Включаем опцию оболочки globstar
shopt -s globstar# Переходим в рабочее пространство github
cd $GITHUB_WORKSPACE# Устанавливаем clang-format
sudo apt-get -y install clang-format-10
Теперь делаем цикл по всем исходным файлам с кодом. Проверяем, правильно ли отформатировано их содержимое:
# Проверка вывода clang-format
for f in <,**/>*. ; do
if [ -f "$f" ]; then
diff $f <(clang-format -assume-filename=main.cpp $f) 1>&2
fi
done
Здесь есть одна главная строчка:
diff $f <(clang-format -assume-filename=main.cpp $f) 1>&2
Она запускает работу CF над файлом и сравнивает вывод с текущим содержимым файла. Если они одинаковые, значит файл отформатирован правильно. Если они отличаются, значит цель ещё не достигнута.
Вывод команды diff перенаправляется в stderr , а это значит, что любой вывод считается ошибочным. Если файл отформатирован правильно, у diff не будет вывода и не будет ошибок. Если вывод сборки будет неудачным, то вы увидите неверно форматированные строчки кода.
Очень рекомендую добавлять какой-либо вывод прямо после команды diff, чтобы лучше понимать, какие файлы проверяются. Например, вот так:
echo "Checking file $"
diff $f <(clang-format -assume-filename=main.cpp $f) 1>&2
Если вы знаете как обойти скрипты оболочки, то на выходе конвейера сборок вы получите кое-что интересное:
Мысли напоследок
Мы убедились, что начать пользоваться непрерывной интеграцией для своих собственных проектов довольно просто. А после выполнения базовой настройки вы сможете перенастраивать и переиспользовать этот инструмент еще и в других своих проектах.
Если к конвейеру автоматизированных сборок добавить юнит-тесты, он станет ещё более мощным дополнением при работе над программами. Интеграция и того, и другого в ваш поток — это всего одна команда в скрипте: pio test .
Вам решать, будет ли непрерывная интеграция улучшать ваш конкретный случай. Я советую серьезно рассмотреть этот вопрос, особенно когда вы будете делиться своим кодом и работать над проектом совместно с другими.
- Scrum мёртв. Восславим нового короля — Kanban!
- Худшие способы нанять хороших программистов
- 6 команд терминала для раздражающих задач



