exponenta event banner

Восстановление заводских настроек BlinkM с помощью шины I2C

В этом примере показано, как восстановить заводские настройки индикатора BlinkM RGB путем взаимодействия с ним по шине I2C.

Для начала создайте объект I2C. В данном примере используется светодиодный индикатор BlinkM RGB с индексом платы 0 и адресом (шестнадцатеричный) 9h. Для подключения компьютера к шине I2C используется адаптер USB-I2C фирмы Aardvark. При создании I2C объекта это переводится в:

  • BoardIndex = 0

  • RemoteAddress = 9-й

  • Vendor = Аардварк.

blinkM = i2c('aardvark',0,hex2dec('09'))
   I2C Object : I2C-0-9h

   Communication Settings 
      BoardIndex          0
      BoardSerial         2237481561
      BitRate:            100
      RemoteAddress:      9h
      Vendor:             aardvark


   Communication State 
      Status:             closed
      RecordStatus:       off

   Read/Write State  
      TransferStatus:     idle

Перед выполнением операции чтения или записи необходимо подключить объект I2C к устройству с помощью fopen функция. Если объект был успешно подключен, его свойство Status автоматически настраивается на открытие.

fopen(blinkM);
get(blinkM, 'Status')
ans =

open

Заводская настройка по умолчанию для BlinkM заключается в последовательном воспроизведении цветов «белый-красный-зеленый-синий». Белый цвет остается для 100 тактов, в то время как цвета красный, зеленый, синий и выключенное состояние остаются для 50 тактов. В этом примере сценарий используется для воспроизведения этой последовательности на светодиодном индикаторе BlinkM RGB.

В спецификации BlinkM указывается, что длина скрипта может быть задана путем записи «L» в устройство с последующим добавлением 3 аргументов. Мы будем использовать fwrite для записи двоичных данных на шину I2C.

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

  • Второй аргумент - длина сценария, этот сценарий имеет 6 строк кода.

  • Третий аргумент - количество повторов сценария, для воспроизведения сценария навсегда мы задаем число повторов равным 0.

  fwrite(blinkM,['L' 0 6 0]);

Примечание: Время записи eeprom составляет приблизительно 20 мс для BlinkM. Поэтому для успешной записи команды может потребоваться пауза.

Согласно спецификации, строка скрипта может быть записана на устройство путем записи «W», за которым следует 7 аргументов.

  • Первый аргумент - идентификатор сценария, в данном случае 0.

  • Второй аргумент - номер строки, которую требуется записать.

  • Третий аргумент - длительность в засечках, которая будет длиться командой.

  • Аргументы 4:7 - Фактическая команда BlinkM и её аргументы.

Для начала сначала задайте скорость замирания для устройства, записав «f», а затем скорость для устройства.

  fwrite(blinkM,['W' 0 0 1 'f' 10 0 0]);

В следующих 5 командах укажите последовательность цветов: белый, красный, зеленый, синий и выходной. Цвет на светодиоде можно задать, записав в него «n», а затем значения R, G и B. Например, установите первый цвет в последовательности белым, установив значения R, G, B на 255.

fwrite(blinkM,['W' 0 1 100 'n' 255 255 255]);

fwrite(blinkM,['W' 0 2 50 'n' 255 0 0]);

fwrite(blinkM,['W' 0 3 50 'n' 0 255 0]);

fwrite(blinkM,['W' 0 4 50 'n' 0 0 255]);

fwrite(blinkM,['W' 0 5 50 'n' 0 0 0]);

В спецификации BlinkM указывается, что для запуска (или «загрузки») устройства используется команда «B», за которой следует 5 аргументов.

  • Первый аргумент - значение 1 для воспроизведения сценария.

  • Второй аргумент - идентификатор сценария, в данном случае 0.

  • Третий аргумент - количество повторов сценария, для воспроизведения сценария навсегда мы задаем число повторов равным 0.

  • Четвертый аргумент - скорость затухания.

  • Пятый аргумент - Корректировка времени.

  fwrite(blinkM,['B' 1 0 0 8 0]);

Ранее написанный сценарий можно воспроизвести, написав «p», а затем 3 аргумента.

  • Первый аргумент - идентификатор сценария, в данном случае 0.

  • Второй аргумент - количество повторов сценария, для воспроизведения сценария навсегда мы задаем число повторов равным 0.

  • Третий аргумент - номер строки сценария для начала воспроизведения.

  fwrite(blinkM,['p' 0 0 0]);

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

fclose(blinkM);
delete(blinkM);
clear ('blinkM');

На этом завершается пример восстановления BlinkM в состояние по умолчанию путем записи в него сценария. Этот сценарий можно обновить для воспроизведения настраиваемых последовательностей на светодиодном индикаторе BlinkM RGB.