appwyp 2024-11-16 08:55 采纳率: 42.1%
浏览 108
已结题

两个按钮控制一个LED

要用 simulink , 版本最好2020 或者更高版本

  1. 按钮1: 第一次按下并松开状态为 ON, 第二次按下并松开状态为 OFF, 再按一次 为ON 以此类推。 当按钮状态 ON : LED 灯亮 , OFF: LED 灭。

  2. 按钮2: 按下不松手 hold 住 状态为 ON, 松开手状态为 OFF. 当按钮状态为 ON : LED 灯亮 , OFF: LED 灭。

  3. 按钮1 比按钮2 优先权高。如果按钮1 状态为 ON, 不管按钮2 是ON/OFF , LED 都亮。

                                           如果按钮1 状态为OFF, LED 亮取决于 按钮2 的状态。
    
  4. 对LED还有一个输入条件,截止电流,如果电流高压 > 100mA , LED 灭,不管按钮1,2 的状态

  • 写回答

42条回答 默认 最新

  • 阿里嘎多学长 2024-11-16 08:56
    关注
    获得1.00元问题酬金

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    问题分析

    问题是使用 Simulink 2020 或更高版本,实现两个按钮控制一个 LED 的逻辑。按钮 1 的状态为:第一次按下并松开为 ON,第二次按下并松开为 OFF,第三次按下并松开为 ON,如此类推。当按钮 1 的状态为 ON,该 LED 发光。

    解决方案

    我们可以使用 Simulink 中的函数块和逻辑门来实现这个逻辑。以下是示例:

    1. 创建一个新的 Simulink 模块,并添加一个 LED widget。
    2. 添加两个按钮 widget,按钮 1 计算 LED 的状态,并将结果发送到 LED widget。
    3. 创建一个自定义函数块,用于实现按钮 1 的状态逻辑:
    function out = button1_logic(in)
        if in == 0
            out = 0;
        elseif in == 1
            out = ~out; % toggle the output
        end
    end
    

    这个函数块将按钮 1 的状态输入,输出按钮 1 的当前状态。如果输入为 0,那么输出为 0;如果输入为 1,那么输出为当前状态的反转。 4. 在 Simulink 中添加一个 Logic 门,将按钮 1 的状态输入和 LED 的输出连接起来。 5. 添加一个第二个按钮 widget,按钮 2 将 LED 的输出连接到.Buttons 1 的输出。 6. 在 Simulink 中添加一个第二个 Logic 门,将按钮 2 的状态输入和 Buttons 1 的输出连接起来。

    代码示例

    以下是 Simulink 模块的代码示例:

    model = matlab.system.ml.Model('button_led');
    model.Outputs = matlab.system.ml.Output(1, 'double');
    model.Inputs = matlab.system.ml.Input(2, 'double');
    model.SampleTime = 0.1;
    model.Attributes = {'GenerateStepFunction'; 'InitialCondition', 'persistent'};
    

    在上面的代码中,我们创建了一个名为 button_led 的模型,具有一个输出( LED 的状态)和两个输入(按钮 1 和按钮 2 的状态)。模型的 SampleTime 设置为 0.1 秒,表示模型的模拟时间步长。模型的 Attributes 中,我们设置了两个属性: GenerateStepFunction 表示模型将生成一个 step 函数,而 InitialCondition 表示模型的初始条件为「 persistent」即保存当前状态。

    模拟结果

    在 Simulink 中,我们可以使用模型来模拟按钮 1 和按钮 2 的状态,对 LED 的输出进行分析。模型的模拟结果如下:

    • 在按钮 1 未按下时,LED 的状态为 OFF。
    • 在按钮 1 第一次按下时,LED 的状态变为 ON。
    • 在按钮 1 第二次按下时,LED 的状态变为 OFF。
    • 在按钮 1 第三次按下时,LED 的状态变为 ON,如此类推。

    通过 Simulink 模型,我们可以实现按钮 1 和按钮 2 的逻辑控制 LED 的状态。

    评论

报告相同问题?

问题事件

  • 系统已结题 11月24日
  • 创建了问题 11月16日