Используйте перечисления, чтобы управлять светодиодным дисплеем

Перечисления в блоке MATLAB function

В этом примере показано, как блоки MATLAB function обмениваются перечисленными данными с другими блоками Simulink®. Модель использует перечисления, чтобы представлять режимы устройства, которое управляет цветами светодиодного дисплея. Блок MATLAB function получает перечислимый входной сигнал, который представляет режим. Перечислимый выходной сигнал представляет цвет что светодиодные дисплеи.

В этой модели, Step блок обеспечивает источник сигнала включения - выключения. Этот блок выводит начальное значение 0 (прочь) и после 10 секунд, подходит к значению 1 (на). Пара блоков Преобразования типа данных преобразует этот сигнал, сначала от типа double вводить int32, и затем от int32 к подсчитанному типу switchmode. Параметры во втором блоке Data Type Conversion имеют эти настройки:

  • Выходной минимум: []

  • Выходной максимум: []

  • Тип выходных данных: Enum:switchmode

Блок MATLAB function checkState оценивает перечислимый вход state определить значение перечислимого выхода ledval. state наследовал его перечислимый тип switchmode от входящего Сигнала Simulink, в то время как ledval имеет тип Enum:led. Наконец, блок Display отображает значение ledval.

Определения классов перечисления

switchmode перечисление представляет позволенные режимы для входа к checkstate блок.

classdef switchmode < Simulink.IntEnumType
  enumeration
    OFF(0)
    ON(1)
  end
end

led перечисление представляет цвета что checkstate блок может вывести.

classdef led < Simulink.IntEnumType
    enumeration
        GREEN(1),
        RED(8)
    end
end
Оба класса перечисления наследовали от встроенного типа Simulink.IntEnumType и находитесь на пути MATLAB®.

Функция блока MATLAB Function

Функция checkState перечисления использования, чтобы активировать светодиодный дисплей, на основе состояния устройства. Это освещает зеленый светодиодный дисплей, чтобы указать на состояние ON. Это освещает красный светодиодный дисплей, чтобы указать на состояние Off.

function ledval = checkState(state)
%#codegen

if state == switchmode.ON
    ledval = led.GREEN;
else
    ledval = led.RED;
end

Симуляция

Когда вы симулируете модель, блок Display отображает состояние светодиодного дисплея. Если вы симулируете модель меньше 10 секунд, состояние выключено. Блок Display отображает RED. Если вы симулируете модель больше 10 секунд, состояние включено. Блок Display отображает GREEN.

Похожие темы