Архив рубрики: 105 Bender

* Пример мигания нескольких светодиодов с разными периодами и случайно

Пример показывает как работают несколько независимых цепочек событие-действие.

Как это работает:
Сценарий независимо управляет тремя светодиодами:
— на D9 — мигает с периодом раз в 3.5 секунды
— на D10 — мигает с периодом раз в 1 секунду
— на D11 — случайно моргает мигает со средним периодом 3.3 раза в секунду

Для примера будет использоваться:
— светодиоды подсоединенные к выводам D9, D10, D11 (через резисторы 300Ом — 1кОм)

Arduino ZiChip 105 Bender led multi led blink

Перед началом:
— собрана схема, Ардуина подключена к компьютеру
— Ардуина уже должна быть прошита прошивкой 105-Bender (как прошить)
— создан новый проект и к нему должна добавлена Ардуина (как это сделать)

Сценарий:

Arduino ZiChip 105 Bender led multi led blink script

Ниже текст сценария. Скопируйте и вставьте в окно сценария в Тюнере.

Пример мигания нескольких светодиодов с разными периодами и случайно:0:0:9:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:9:16777215
Инициализация при старте:0:1:4:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:4:14270668
Настройка выходов для светодиодов:0:2:74:128:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:74:15523813
:0:1:3:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:3:15523813
:0:0:9:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:9:16777215
:0:1:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2:14270668
Формируем события раз в 3,5 секунд:5:7:14:2:255:94:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:14:15523813
Переключаем светодиод на D9:1:2:77:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:77:15523813
:0:1:3:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:3:15523813
:0:0:9:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:9:16777215
:0:1:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2:14270668
Формируем полусекундные события:5:4:14:0:255:50:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:14:15523813
Переключаем светодиод на D10:1:2:77:10:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:77:15523813
:0:1:3:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:3:15523813
:0:0:9:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:9:16777215
:0:1:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2:14270668
Формируем случайное событие со средним периодом 2.3 раза за сек:1:3:16:1:22:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:16:15523813
Моргаем светодиодом на D11:1:2:77:19:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:77:15523813
:0:1:3:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:3:15523813
:0:0:9:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:9:16777215
Конец сценария:0:1:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:1:14211326
Конец примера:0:0:9:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:9:16777215

* Мигание светодиодом

Пример показывает как работает таймер формируя циклические события для переключения светодиода (или других действий).

Как это работает:
Светодиод на D12 моргает с частотой 1 Гц (раз в секунду).

Для примера будет использоваться:
— светодиод подсоединенный к выводу D12 (через резистор 300Ом — 1кОм)

Arduino ZiChip 105 Bender led blink

Перед началом:
— собрана схема, Ардуина подключена к компьютеру
— Ардуина уже должна быть прошита прошивкой 105-Bender (как прошить)
— создан новый проект и к нему должна добавлена Ардуина (как это сделать)

Сценарий:

Arduino ZiChip 105 Bender led blink script

Ниже текст сценария. Скопируйте и вставьте в окно сценария в Тюнере.

Пример мигания светодиодом (таймер):0:0:9:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:9:16777215
:0:1:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2:14270668
Формируем полусекундные события:5:4:14:0:255:50:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:14:15523813
Переключаем светодиод на D12:1:2:77:26:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:77:15523813
:0:1:3:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:3:15523813
:0:0:9:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:9:16777215
Конец сценария:0:1:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:1:14211326
Конец примера:0:0:9:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:9:16777215

* Управление сервой кнопками пульта

Пример показывает как реализовать управление сервоприводом при помощи кнопок пульта.

Как это работает:
— нажимаешь первую кнопку  — серва поворачивается в одну сторону
— нажимаешь вторую кнопку — серва поворачивается в одну сторону
— третья кнопка устанавливает серву в центральное положение

Для примера будет использоваться:
— сервопривод подсоединенный сигнальным выводом к выводу D3
— подключенный к выводу D2 ИК приемник (TSOP4836 или любой другой)
— ИК пульт (подойдет любой)
— так как потребление тока у сервы значительное, питания от USB порта может быть недостаточно — нужен внешний источник питания (батарея)

Arduino ZiChip 105 Bender ir servo

Перед началом:
— собрана схема, Ардуина подключена к компьютеру
— Ардуина уже должна быть прошита прошивкой 105-Bender (как прошить)
— создан новый проект и к нему должна добавлена Ардуина и три кнопки пульта  нулевая, первая и вторая (как это сделать)

Сценарий:

Arduino ZiChip 105 Bender ir servo script

Ниже текст сценария. Скопируйте и вставьте в окно сценария в Тюнере.

Пример управления сервой при помощи ИК-пульта:0:0:9:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:9:16777215
:0:1:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2:14270668
Событие от кнопки пульта №0:0:3:50:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:50:15523813
Серва влево:2:3:68:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:68:15523813
:0:1:3:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:3:15523813
:0:0:9:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:9:16777215
:0:1:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2:14270668
Событие от кнопки пульта №1:0:3:50:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:50:15523813
Серва вправо:2:3:69:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:69:15523813
:0:1:3:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:3:15523813
:0:0:9:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:9:16777215
:0:1:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2:14270668
Событие от кнопки пульта №2:0:3:50:4:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:50:15523813
Серва в центральное положение:0:3:70:69:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:70:15523813
:0:1:3:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:3:15523813
:0:0:9:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:9:16777215
Конец сценария:0:1:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:1:14211326
Конец примера:0:0:9:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:9:16777215

* Вкл/Выкл светодиода двумя кнопками пульта

Пример показывает как реализовать включение и выключение светодиода при помощи двух кнопок пульта.

Как это работает:
Нажимаешь одну кнопку на пульту — светодиод загорается. Нажимаешь другую кнопку — гаснет. Встроенный индикаторный светодиод Ардуины должен подтверждать каждое нажатие кнопки на пульту.

Для примера будет использоваться:
— светодиод подсоединенный к выводу D12 (через резистор 300Ом — 1кОм)
— подключенный к выводу D2 ИК приемник (TSOP4836 или любой другой)
— ИК пульт (подойдет любой)

Arduino ZiChip 105 Bender led on off

Перед началом:
— собрана схема, Ардуина подключена к компьютеру
— Ардуина уже должна быть прошита прошивкой 105-Bender (как прошить)
— создан новый проект и к нему должна добавлена Ардуина и две кнопки пульта — нулевая и первая (как это сделать)

Сценарий:

Arduino ZiChip 105 Bender led on off script

Ниже текст сценария. Скопируйте и вставьте в окно сценария в Тюнере.

Пример сценария:0:0:9:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:9:16777215
105 led on off:0:0:9:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:9:16777215
Включение:0:1:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2:14270668
Событие от кнопки пульта №0:0:3:50:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:50:15523813
Включаем Led на D12:1:2:77:25:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:77:15523813
:0:1:3:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:3:15523813
:0:0:9:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:9:16777215
Выключение:0:1:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2:14270668
Событие от кнопки пульта №1:0:3:50:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:50:15523813
Выключаем Led на D12:1:2:77:24:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:77:15523813
:0:1:3:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:3:15523813
Конец сценария:0:1:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:1:14211326
Конец примера:0:0:9:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:9:16777215

 

 

* Переключение светодиода кнопкой пульта

Пример показывает как реализовать переключение состояния светодиода при помощи кнопки пульта.

Как это работает:
Работает сценарий просто. Нажимаешь кнопку на пульту — светодиод загорается. Нажимаешь еще раз — гаснет. Встроенный индикаторный светодиод Ардуины должен подтверждать каждое нажатие кнопки на пульту.

Для примера будет использоваться:
— светодиод подсоединенный к выводу D12 (через резистор 300Ом — 1кОм)
— подключенный к выводу D2 ИК приемник (TSOP4836 или любой другой)
— ИК пульт (подойдет любой)

Arduino ZiChip 105 Bender led switch

Перед началом:
— собрана схема, Ардуина подключена к компьютеру
— Ардуина уже должна быть прошита прошивкой 105-Bender (как прошить)
— создан новый проект и к нему должна добавлена Ардуина и одна нулевая кнопка пульта (как это сделать)

Сценарий:Arduino ZiChip 105 Bender led switch script

Ниже текст сценария. Скопируйте и вставьте в окно сценария в Тюнере.

Пример сценария:0:0:9:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:9:16777215
105 led switch:0:0:9:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:9:16777215
Микропрограмма:0:1:2:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2:14270668
Событие от кнопки пульта №0:0:3:50:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:50:15523813
Переключаем Led на D12:1:2:77:26:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:77:15523813
Конец микропрограммы:0:1:3:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:3:15523813
Конец сценария:0:1:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:1:14211326
Конец примера:0:0:9:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:9:16777215

 

Начало работы с 105 Bender

В этой статье я опишу как начать работать с устройством 105 Bender. Кроме того, будут рассмотрены основы работы с программой Тюнер и принципы построения сценария устройства ZiChip. Постараюсь подробно про все написать. В конце статьи есть видео — все должно быть понятно.

Для демонстрации работы нам понадобится:
— плата Arduino (Uno или Nano) с ATmega328, 16 МГц
— макетка (для удобства)
— светодиод с резистором 300 Ом — 1 кОм
— ИК приемник TSOP (тип особо не имеет значения)
— ИК пульт (подойдет любой)
— пьезоизлучатель (или динамик с резистором 300 Ом)

Еще, нужно скачать программу для настройки устройств ZiChip — Тюнер.

Обычно, поддержку каждого нового устройства в Тюнер предварительно нужно добавить, но устройство 105 Bender уже встроено в Тюнер по умолчанию и нам ничего, кроме самой программы, не нужно скачивать.

Краткий обзор устройства (посмотреть полный обзор)

Устройство ZiChip №105 Bender предназначено для несложного управления подвижной тележкой. Устройство имеет набор входных и выходных линий. Каждая конкретная линия связана со своей периферией. Переназначить линии нельзя.

Устройство №105 ZiChip создавалось с целью «оживить» мой старый проект «Робот Бендер», поэтому и периферия подобрана таким образом, чтобы можно было управлять всеми модулями робота (и даже немного больше). Но в тоже время устройство способно управлять и другими вариантами подвижных тележек (с одним приводным двигателем и подвижными рулевыми колесами, 2-мя, 4-мя приводными колёсами или даже гусеничной тележкой).

тележка с www.tixer.ruтележка с www.diylab.com.uaтележка с www.diylab.com.ua

 

 

 

 


Подготовка устройства к работе – прошивка МК

1 Подключаем Ардуино штатным шнуром к USB.

— если понадобятся драйвера – их можно скачать здесь

2 Запускаем Тюнер и запускаем утилиту для программирования Ардуино

3 Выбираем порт, с которым связана Ардуина (появляется при подключении Ардуины)
4 Утилита сама находит доступные прошивки устройств и выдает их перечень. Выбираем «Робот Бендер (ver_A)»
5 Выбираем тип Вашей Ардуины и жмем кнопку «Начать прошивку >>»

По окончании процедуры программирования устройство будет готово к работе.

Знакомство с Тюнером

Прошитое устройство не выполняет никаких действий (кроме подтверждения нажатия кнопок ИК-пульта индикаторным светодиодом Ардуины). Нужно создать сценарий поведения и записать его в Ардуину при помощи Тюнера.

Для примера, попробуем настроить элементарное действие, такое как включение/отключение светодиода по нажатию кнопки пульта.

1 Собираем простую схему (я использовал Arduino Nano, но и Uno тоже подойдет).

— не забываем, что светодиод нужно подключать к Ардуине через гасящий резистор 300 Ом – 1 кОм

2 После сборки схемы, подключаем Ардуину к компьютеру.

3 Запускаем Тюнер

Тюнер представляет собой 3 отдельных окна:
— Слева «Сценарий устройства» — здесь мы будем из доступных элементов выстраивать логические цепочки (микропрограммы), формируя логику работы устройства.
— Окно по центру — «Настройка элемента сценария». В этом окне мы будем выбирать элементы из палитры и настраивать каждый из них.
— Справа – окно модулей устройства. В этом окне мы сможем видеть текущих участников сети, выбрать настраиваемое устройство и наблюдать в реальном времени информацию о состоянии устройства и его модулей

4 Создадим новый проект. Для этого нажимаем кнопку  и создаем новую папку проекта (например, project1)

5 Далее необходимо в проект занести всех участников сети ZiChip (в нашем случае он один, но это сути не меняет). Это делается Тюнером автоматически, по факту наличия подключенных устройств.

Нажимаем кнопку  и выбираем порт, с которым связана Ардуина. При выборе порта и при наличии на нем ЗиЧип-устройств, появляется сообщение «ZiChip сеть :)» — жмем ОК. Тюнер просканирует всех участников сети и в правом окне выдаст их список. В нашем случае будет только одно устройство

6 Настройка модулей

— Сейчас мы не будем рассматривать все модули, но для демонстрации построения сценария, нам понадобится модуль ИК-пульта. В нем мы определим пару кнопок пульта, которые будут управлять светодиодом.

Жмем  в правом окне и попадаем в окно настройки пульта. Здесь мы укажем устройству, с какими кнопками пульта мы хотим работать.

Определение кнопок пульта происходит следующим образом:
— кнопкой  добавляем пару новых строчек для кнопок пульта
— выбираем верхнюю (нулевую) строчку
— теперь нажимаем выбранную кнопку на пульте (на кнопке внизу окна должен отобразится ее хеш-код)
— нажимаем кнопку с хеш-кодом и этот хеш-код попадет в таблицу (и устройство) – первая кнопка определена
— при желании можно написать комментарий к этой кнопке — в поле «Описание» строчки двойной клик мышки и пишем «Вперед»
— тоже проделываем и со второй кнопкой — называем ее «Стоп»

— Настройки модуля сохраняются в EEPROM устройства и в последующем повторно эту процедуру проходить не нужно.
— Пульт может быть любым – устройство автоматически подстроится под любой протокол.

Создание первого простого примера сценария

Переходим к созданию сценария (по ходу буду пояснять, как работает этот механизм). Сценарий устройства строится посредством элементарных логических цепочек «событие-действие» («событие» дает команду на выполнение «действия»). В нашем случае, событием будет нажатие заданной кнопки пульта, а действием – переключение светодиода

— каждая логическая цепочка должна быть заключена (обозначена) элементами «Микропрограмма» и «Конец микропрограммы»
— этих цепочек в сценарии может быть несколько
— можно считать, что все цепочки сценария работают параллельно и независимо друг от друга
— сценарий должен заканчиваться элементом «конец сценария».

1 В левом окне «Сценарий устройства» кнопкой  добавляем несколько пустых строк. Выбираем первую пустую строчку и в выпадающем списке «Палитра элементов устройства» центрального окна «устанавливаем» в нее нужный элемент.

2 Последовательно вставляем элементы «Микропрограмма», «Событие от кнопок пульта», «Индикация простая», «Конец микропрограммы», «Конец сценария».

В результате у нас должно получится следующее:

Данная цепочка (и сценарий) еще не работоспособна – это только скелет логики. Теперь нужно настроить каждый элементы цепочки нужным нам образом.

3 Начнем с элемента «Событие от кнопок пульта». Выбираем его в окне сценария и делаем настройку в центральном окне в поле «Параметры элемента»

Из параметров пульта нам нужно указать галочкой, какая из 16 возможных кнопок пульта будет создавать событие (смотрим в правое окно, где наши кнопки пульта определены и пронумерованы). Галочкой отмечаем нулевую кнопку — «Вперед».

С пультом все. Теперь нужно определиться, что нам нужно от светодиода (что он будет делать, когда возникнет событие от нажатой кнопки пульта).

4 Выбираем строчку со светодиодом и в окне настройки видим параметры светодиода. В выпадающем списке выбираем Светодиод: «- ELED» и Действие: «- переключить» (каждое новое событие будет переключать состояние светодиода на противоположное).

Теперь сценарий готов..

5 Осталось созданный сценарий записать в устройство.

— так как сценарий хранится в EEPROM, процесс записи не влияет на работу устройства и может быть запущен даже в момент, когда устройство выполняет какое либо действие. Это будет актуально, когда тележка будет связана с компьютером не USB-шнурком, а при помощи BlueTooth-модуля. В этом случае логику тележки можно менять не вставая за ней с рабочего места.

Для записи сценария нажимаем кнопку (в левом окне)  и в окне мастера жмем «ОК» (мастер сделает все автоматически).

Готово – первый сценарий записан, теперь можно его проверить (Ардуину отключать от ПК не нужно). Нажимайте кнопку пульта и наблюдайте за переключением светодиода.

Обзор возможностей

С элементами светодиода и пульта мы разобрались — там все довольно просто. Кратко ознакомимся с другими элементами устройства (более подробней смотрите или в хелпе Тюнера — кнопка , или в обзоре устройства, или в описании элементов на этом ресурсе).

Элементы устройства можно разбить на функциональные группы.

1 Группа элементов которые служат для разметки сценария, управления ходом выполнения микропрограммы, ее комментирования.

              

2 Группа элементов формирующие событие (от кнопок пульта и от аналоговых входов). Для аналоговых входов может быть задан произвольный коэффициент усиления и смещение нуля — это удобно для работы с различными аналоговыми датчиками.

        

3 Элементы управления тележкой специфичные и созданы специально для этого устройства. При помощи этих элементов происходит управление тележкой и задание режимов движения:
— реализован разгон двигателей (останов) с заданной интенсивностью (то есть тележка не двигается рывками — движения плавные)
— реализовано управление двигателями по логарифмическому закону (можно отключить, но с логарифмом лучше)
— поворот может осуществляться как самими двигателями так и при помощи сервы (это если тележка с одним приводным двигателем и возможностью поворачивать передние колеса)
— реализована возможность задания глобальных настроек для всех элементов (и их смены в процессе работы) .
Элементы позволяют плавно и удобно управлять тележкой посредством таких неудобных устройств управления как ИК-пульт и символьные команды от BlueTooth.

              

4 Элементы управляющие сервоприводом.

    

5 Элементы реализующие управление индикацией тележки. Имеются различные варианты визуальных эффектов (то есть подал один раз команду и индикация работает по заданной программе).

        

6 Элементы работы с флагами устройства — ниже я них напишу.

 

7 Элементы работающие с BlueTooth или UART.

    

8 Так как места в МК оставалось прилично, под зуммер был реализован однобитный олдскульный :) звук! В устройстве предустановлено 15 различных звуков для несложного озвучивания модели.Следующий пример сценария будет со звуком.

9 Дополнительный набор элементов (для формирования более сложной логики) — перекочевал с предыдущего базового устройства:

События

              

Действия

       

Работа с точками доступа

            

Работа с ячейками памяти

  

Второй пример сценария – комбинированные действия

После ознакомления с элементами устройства, попробуем немного усложнить наш сценарий – добавив в него элемент «звук».

1 Для того чтобы услышать как работает этот элемент нужно в предыдущую схему добавить динамик (или пьезоизлучатель).

— элемент «звук» работает довольно своеобразно, так как он воспроизводит однобитные предустановленные треки. Качество звука не позволяет полноценно создавать звуковые эффекты для моделей. Этот элемент был создан только с целью демонстрации и, возможно, каких то несложных озвучек. Для полноценной озвучки можно воспользоваться моей говорилкой, где звук гораздо лучше и есть возможность проигрывать свои файлы. Еще в планах есть создание новой говорилки работающей полноценно в ЗиЧип.

2 Построим следующую логику работы:
— задействуем 2 кнопки пульта «вперед» и «стоп» (ранее мы их уже определили)
— по нажатию первой кнопки загорается светодиод и имитируется звук запуска «мотора»
— после того ка «мотор» «запустился»
— начинает непрерывно воспроизводиться «холостой» ход «мотора»
— после нажатия кнопки пульта «стоп» светодиод погаснет и проиграется звук «остановки» «мотора»

Реализуется этот алгоритм не намного сложнее предыдущего сценария.

3 Для начала сделаем включение и отключение светодиода разными кнопками. Для этого немного подправим наш первый сценарий. Создаем дубликат ранее созданной цепочки сценария (выделяем нужные строчки с зажатым Shift, потом копируем Ctrl+C и вставляем Ctrl+V).

4 Изменяем настройки элементов:
— светодиод в первой цепочке – устанавливаем действие «- включить»
— пульт во второй цепочке — выбираем галочкой вторую кнопку (под номером 1)
— светодиод во второй цепочке – устанавливаем действие  «- выключить»

5 Записываем сценарий в Ардуину и проверяем, как включается и отключается светодиод от разных кнопок. Работает правильно? Продолжаем!

Пришло время добавить звук.

6 После каждого светодиода кнопкой  добавляем новую строчку и вставляем туда элемент звук 

 

7 Правим:
— первый звук – выбираем Воспроизвести: «-старт» (остальные настройки не трогаем)
— второй звук – выбираем Воспроизвести: «-стоп» (остальные настройки не трогаем)

— действий в цепочках сценария можно выстраивать по несколько в ряд – все они выполнятся одновременно по приходу события.

Еще раз записываем сценарий в Ардуину и пробуем нажимать кнопки. Работает?

8 Теперь нам нужно добавить звук холостого хода:
— в первой цепочке добавляем еще один элемент звука (обязательно до элемента звука, который воспроизводит «-старт») . Если элемент попал не туда, то стрелками   можно передвигать выделенную строчку вверх или вниз по сценарию.
— в добавленном звуке выбираем «-холостой ход» и ставим галку «воспроизводить как зацикленный фон»
— во второй цепочке в настройке звука «стоп» выбираем — По окончании воспроизведения: «тишина» — это для того чтобы после воспроизведения звука остановки не продолжился фоновый звук холостого хода

— два звука в цепочке будут работать следующим образом. Вначале запустится фоновый звук и тут-же мгновенно запускается звук «-старт». При запуске «-старт» фоновый звук отложит свое воспроизведение (даже не начав воспроизводится) и запустится уже после окончания звука «-старт». Далее  «холостой ход» будет работать зациклено бесконечно (пока не будет воспроизведен  «стоп»).

Записываем сценарий – проверяем.

Третий пример сценария – работа с флагами устройства.

Если со вторым примером «поиграться» чуть дольше, то станут заметны пару огрехов, которые здорово портят впечатление (это не считая качества звука 🙂 ).

А именно:
— если во время озвучивание холостого хода нажать кнопку пульта еще раз «вперед», то произойдет повторное озвучивание «старт» — чего не должно быть
— кнопка пульта «стоп» будет озвучивать процесс остановки двигателя в любом состоянии, даже если устройство в данный момент никуда не «едет»

Чтобы убрать эти огрехи, нам необходимо знать в каком режиме работает устройство в момент подачи команды (нажатии кнопки пульта) и действовать по обстоятельствам. Об состоянии устройства проще всего судить по флагам устройства.

— Устройство ЗиЧип имеет большой набор флагов. Флаги отображают различные состояния периферии или внутренних процессов. Например, флаги устанавливаются во время воспроизведения звука, во время нажатия любой кнопки на пульте, при установке сервопривода в крайние состояния, при движении двигателей вперед или назад и так далее. Еще флаги управляют режимами работы периферии.  Например, установив соответствующие флаги можно запрещать определенные действия устройства или задействовать альтернативные функции на линиях ввода-вывода. Еще, флаги общего назначения можно использовать в своих целях для формирования нужной логики сценария.

Узнаем какие у нашего устройства есть флаги. Для этого откроем окно флагов (в правом окне пиктограмма  ). Нажимаем пиктограмму  и получаем перечень предустановленных флагов устройства. Состояние флагов изменяется в режиме реального времени, то есть, то что Вы видите в окне – это реальное состояние флагов устройства (понажимайте любые кнопки на пульте и Вы увидите как изменяет свое значение соответствующий флаг). Флаги можно переключать вручную – просто выбирайте нужную строчку мышкой – флаг будет изменять свое значение.

Чтобы определять в каком режиме работает устройство в каждый момент времени (и адекватно реагировать на нажатия кнопок пульта) мы будем использовать флаг «воспроизведение сэмпла». То есть, если звука нет, значит наше устройство никуда не «едет» и его можно «завести» но нельзя «заглушить» и наоборот.

Приступаем к правке предыдущего примера

— все примеры приведенные выше есть в разделе примеров устройства. Примеры можно посмотреть (и загрузить) из окна примеров которое открывается кнопкой  в левом окне.

Добавим в сценарии предыдущего примера по новой строчке в каждой цепочке после элемента Пульт. В эти строчки устанавливаем элемент «Событие от флага».

В первой цепочке в элементе «Событие от флага» устанавливаем номер флага 16 — «Воспроизведение сэмпла» и ставим галочку «- инвертировать событие флага». В элементе Флага второй цепочки устанавливаем тот-же 16 флаг, но без галочки.

— события установленные одно за другим обрабатываются по принципу логического-И. То есть, чтобы выполнилось действие нужно чтобы все события были активны.

Логика, сформированных выше цепочек, следующая:
— первая цепочка сформирует событие (и отработает «запуск двигателя») только тогда, когда нет воспроизведения звука и нажата кнопка на пульте. Если звук уже проигрывается — ничего не произойдет.
— вторая цепочка будет действовать наоборот (срабатывать только когда звук воспроизводится) так как нет галочки «- инвертировать событие флага» в элементе флага.

Загружаем сценарий в устройство — пробуем.

Обещанное видео — все о чем я написал выше (включите во весь экран)

В конце небольшой ликбез по основным понятиям ZiChip (читать не обязательно)

Термины и определения

ZiChip
– это готовое устройство с определенным функционалом, позволяющее простыми и доступными средствами настроить логику работы «под себя».  Кроме того, ZiChip по умолчанию поддерживает сеть устройств и в любой момент можно внести новое устройство в сеть и «прописать» его взаимодействие с уже работающими устройствами.

ZiChip Tuner
– это программа, предназначенная для настройки, как отдельных ZiChip-устройств, так и сети в целом. Тюнер умеет получать различную информацию от устройств в сети и управлять любым функционалом.

Номер устройства
— это номер посредством которого устройство идентифицирует себя в сети и для Тюнера. Номер устройства – это, фактически, тип устройства. В сети могут участвовать устройства разных типов (в том числе и одинаковых)

Адрес устройства
— это присвоенный Тюнером номер, служащий для идентификации устройства в сети. То есть – это номер, по которому к устройству обращаются или от имени этого номера устройство передает информацию другим участникам в сети. В сети может участвовать до 15 устройств (соответственно, адреса лежат в пределах 1 – 15). В сети не может быть устройств с одинаковыми адресами.

Сценарий поведения устройства
— это специальная запись в EEPROM микроконтроллера, которая формирует способ реагирования устройства на внешние сигналы. Устройства ЗиЧип позволяют изменять сценарий поведения «на лету», во время работы (без перепрошивки и необходимости выключения устройства из сети).

Микропрограмма (логическая цепочка)
— группа элементов заключенная между элементами «Микропрограмма» и «Конец микропрограммы» и выполняющая элементарную работу — «событие-действие». «Событие» дает команду на выполнение «Действия». Цепочек в сценарии может быть несколько. Все цепочки, прописанные в сценарии, работают параллельно.

Точки взаимодействия (точки доступа)
— это базовый механизм ZiChip, посредством которого осуществляется связь внутренних модулей устройства между собой и связь между отдельными устройствами в сети. Процесс формирования алгоритма поведения устройства сводится к формированию связей между точками взаимодействия.

Скачать 105_Bender

Устройство ZiChip №105 Bender создано для AVR микроконтроллера ATmega328 и с расчетом применения Arduino (Uno, Nano, Pro mini). Для настройки устройства необходима программа ZiChip Tuner.

Скачать устройство 105:
105_bender_a (395 Загрузок)
* Поддержка этого устройства в Тюнере реализована по умолчанию
(скачивать и устанавливать это устройство в Тюнер не нужно).

Скачать ZiChip Tuner

Обзор 105_Bender

Устройство ZiChip №105 Bender создано для AVR микроконтроллера ATmega328 и с расчетом применения Arduino (Uno, Nano, Pro mini) — это если у Вас нет желания травить и паять свою плату. В этом случае все необходимые цепи обвязки и связи с ПК уже присутствуют в конструкции (необходимо лишь добавить защитные резисторы). Кроме того, запись прошивки в микроконтроллер значительно упрощается.

Устройство №105 ZiChip создавалось с целью «оживить» мой старый проект «Робот Бендер», поэтому и периферия подобрана таким образом, чтобы можно было управлять всеми модулями робота (и даже немного больше). Но в тоже время устройство способно управлять и другими вариантами подвижных тележек (с одним приводным двигателем и подвижными рулевыми колесами, 2-мя, 4-мя приводными колёсами или даже гусеничной тележкой).

Устройство имеет набор входных и выходных линий. Каждая конкретная линия связана со своей периферией. Переназначить линии нельзя (но зачастую можно использовать линию по двойному назначению, например, линия АЦП0 используется и как аналоговый вход и как вход BlueTooth).

Алгоритм устройства (сценарий поведения) строится посредством элементарных элементов формирующих логические цепочки Событие-Действие. Для этого необходима программа ZiChip Tuner.

Периферия устройства,

Входа:
— ИК приемник (TSOP)
— 3 аналоговых входа для бамперов (в качестве бампера можно применять различные как цифровые, так и аналоговые датчики)
— 5 аналоговых входов общего назначения (можно использовать как аналоговые, так и цифровые датчики)
— вход  BlueTooth (UART)

Выхода:
— сервопривод
— два двигателя (необходим драйвер)
— динамик
— 5 ШИМ-выхода
— выход BlueTooth (UART)

с привязкой к точкам доступа (вход / выход / системная ), выводам Arduino и портам микроконтроллера:
point.1 = Вход — ИК-пульт (D2 — PD2)
point.2 = Вход — Дискретные линии (A0-A7 — PC0-PC7)

point.3 = Сист — Входной буфер BlueTooth
point.4 = Сист — Выходной буфер BlueTooth

point.6 = Сист — Параметры сервы (Servo_Center, Servo_Max_L, Servo_Max_R, Servo_Accel)
point.7 = Сист — Параметры мотора (Motor_speed, Motor_accel, Motor_max_speed)
point.8 = Сист — Параметры поворота (Turn_L_speed, Turn_R_speed, Turn_accel, Turn_max_speed)
point.9 = Сист — Параметры коррекции движения (Cor_L_motor, Cor_L_motor)

point.10 = Вход — Аналоговая линия 0 (A0 — PC0) + BT-выход
point.11 = Вход — Аналоговая линия 1 (A1 — PC1)
point.12 = Вход — Аналоговая линия 2 (A2 — PC2)
point.13 = Вход — Бампер левый (A3 — PC3)
point.14 = Вход — Бампер центральный (A4 — PC4)
point.15 = Вход — Бампер правый (A5 — PC5)
point.16 = Вход — Аналоговая линия 6 (A6 — PC6)
point.17 = Вход — Аналоговая линия 7 (A7 — PC7)

point.18 = — общего назначения
point.19 = — общего назначения

point.20 = Выход — Мотор левый база (D5 — PD5)
point.21 = Выход — Мотор левый управление (D6 — PD6)
point.22 = Выход — Мотор правый база (D7 — PD7)
point.23 = Выход — Мотор правый управление (D8 — PB0)
point.24 = Выход — MLED0 (D9 — PB1)
point.25 = Выход — MLED1 (D10 — PB2)
point.26 = Выход — MLED2 (D11 — PB3)
point.27 = Выход — ELED (D12 — PB4)
point.28 = Выход — ALED (D13 — PB5) — индикатор Arduino

point.29 = — общего назначения

point.30 = Выход — Сервопривод (D3 — PD3)
point.31 = Выход — Зуммер (D4 — PD4)

point.32 = — точки 32-46 общего назначения

point.47 = Сист — Зеркало 1WIR-сети (системная точка)
point.48 = Сист — ИК-код последней нажатой кнопки пульта (системная точка)
point.49 = Сист — Флаги устройства (системная точка)
point.50 = Сист — Время «жизни» устройства (системная точка)
point.51 = Сист — Случайное число (системная точка)

Параметры устройства:
— 51 точка доступа
— 512 байт EEPROM и 768 байт RAM для сценария поведения
— поддержка 16 кнопок ИК-пульта (с возможностью изучения любого пульта)
— 24 ячейки памяти EEPROM для хранения точек.

 

Для построения алгоритма работы устройства используется набор элементов:

0 Разделитель
Элемент не выполняет никаких действий, не использует ресурсов устройства. Используется лишь для визуально разделения блоков сценария.

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

  2 Начало микропрограммы
Элемент является указателем начала микропрограммы.

  3 Конец микропрограммы
Любая микропрограмма должна завершаться этим элементом.

  4 Инициализирующая микропрограмма
Элемент является аналогом элемента «Начало микропрограммы», но начатая с такого элемента микропрограмма выполнится только один раз при запуске (или сбросе) устройства. Применяется для инициализирующих действий в сценарии.

  5 Запрет микропрограммы
В случае, если нужно временно исключить микропрограмму из сценария (не удаляя цепочки элементов и их настройки), применяется данный элемент (вместо «Начало микропрограммы»).

  7 Изменение события
Элемент изменяет тип предыдущего события, позволяя организовывать более гибкие варианты реагирования на события.

  8 Засыпание (в разработке)
Переводит устройство в режим пониженного энергопотребления. Любое сообщение по сети возобновляет нормальную работу устройства. Очевидно, бесполезно применять этот элемент в сети с активными пересылками сообщений по ней.

  9 Комментарий
Элемент не выполняет никаких действий, не использует ресурсов устройства. Используется лишь для ставки комментария в сценарий.

  50 Событие от пульта
Элемент формирует событие по факту нажатия кнопки пульта.

  51 Событие от BlueTooth
Элемент формирует событие по факту приема заданного символа по BlueTooth (UART).

  52 Передача по BlueTooth
Элемент передает символ по BlueTooth (UART).

  75 Настройка BlueTooth
Элемент настраивает модуль BlueTooth.

  53 Событие от левого бампера
Элемент формирует событие по заданным параметрам изменения сигнала с бампера.

  54 Событие от центрального бампера
Элемент формирует событие по заданным параметрам изменения сигнала с бампера.

  55 Событие от правого бампера
Элемент формирует событие по заданным параметрам изменения сигнала с бампера.

  56 Событие от АЦП
Элемент формирует событие по заданным параметрам изменения сигнала с заданного АЦП.

  60 Стоп
Элемент останавливает движение тележки, ее поворот или разворот.

  61 Вперед
Элемент увеличивает скорость движения тележки вперед (или замедляет движение, если она до этого двигалась назад).

  62 Назад
Элемент увеличивает скорость движения тележки назад (или замедляет движение, если она до этого двигалась вперед).

  63 Поворот налево
Элемент во время движения поворачивает тележку налево.

  64 Поворот направо
Элемент во время движения поворачивает тележку направо.

  65 Разворот влево
Элемент разворачивает тележку на месте через левую сторону.

  66 Разворот вправо
Элемент разворачивает тележку на месте через правую сторону.

  67 Параметры движения
Элемент задает параметры движения тележки, используемые элементами движения по умолчанию.

  68 Серва влево
Элемент поворачивает сервопривод влево.

  69 Серва вправо
Элемент поворачивает сервопривод вправо.

  70 Параметры сервы
Элемент задает параметры сервопривода, используемые элементами сервы по умолчанию.

  71 Индикация ALED (антенна)
Элемент управляет светодиодом ALED (установленным в антенну), воспроизводя на нем заданные эффекты.

  72 Индикация MLED (рот)
Элемент управляет светодиодами MLED0, MLED1, MLED2  (имитирующих рот робота), воспроизводя на них заданные эффекты.

  73 Индикация ELED (глаза)
Элемент управляет светодиодом ELED (установленным в глаза), воспроизводя на нем заданные эффекты.

  77 Индикация простая (digital)
Элемент дискретно (без ШИМ) управляет заданными индикаторными светодиодами.

  74 Настройка индикации
Элемент управляет режимами работы выходных индикаторных линий.

  76 Звук
Элемент проигрывает на динамику (или пьезоизлучателе) предустановленный однобитный звук. Элемент служит для несложной озвуки действий.

  17 Событие от флага
Элемент формирует событие по факту установки заданного флага устройства.

  48 Изменение от флага
Элемент изменяет заданный флаг устройства.

 

Дополнительный набор элементов (для формирования более сложной логики):

  10 Событие от изменения точки
Элемент формирует событие, в случае если произошло изменение значения заданной точки доступа.

  11 Событие по условию
Элемент формирует событие по заданному условию изменения значения в заданной точке доступа.

  13 Событие от ИК-пульта
Элемент формирует событие по факту нажатия кнопок на ИК-пульту.

  14 Событие по таймеру
Элемент формирует событие по таймеру с заданным количеством повторов.

  15 Событие от АЦП
Элемент формирует событие по изменению значения АЦП

  16 Событие случайное
Элемент формирует случайное событие с заданной вероятностью его возникновения.

  19 Событие от сателлита
Элемент формирует событие по факту приема нужного сообщения от IR-сателлита

  30 Действие со светодиодом
Элемент выполняет дискретные действия (включить, выключить, переключить) со светодиодом, подключенным к ШИМ-выходу.

  31 Действие с ШИМ-выходом
Элемент изменяет скважность (уровень сигнала) на ШИМ-выходе.

  32 Действие с зуммером
Элемент формирует звуковые сигналы на зуммере устройства.

  33 Действие с мотором
Элемент управляет скоростью и направлением вращения двигателей устройства.

  34 Действие с сервоприводом
Элемент управляет поворотами сервопривода устройства.

  36 Возврат значения точки
Элемент запоминает и возвращает значение выбранной точки после «ухода» события (возврат к исходному значению).

  40 Дублирование точки
Элемент выполняет заполнение определенного количества последовательных точек заданным значением. Также используется для различных действий копирования и наложения точек.

  41 Отправка значения точки
Элемент отправляет значение точки другой сетевой точке.

  42 Запрос значения точки
Элемент формирует запрос значения точки другого сетевого устройства (другое устройство в автоматическом режиме отправит значение запрашиваемой точки назад).

  43 Арифметические действия
Элемент выполняет различные арифметические действия над точками

  44 Формирование случайного числа
Элемент формирует случайное число для заданной точки.

  45 Битовая сборка
Элемент «сбивает» заданные биты точки источника и помещает их в точку приемник.

  46 Сохранение значения точки
Элемент сохраняет значение точки в ячейке памяти EEPROM.

  47 Восстановление значения точки
Элемент извлекает значение из ячейки памяти EEPROM и помещает его в заданную точку.