×

使用Meadow Foundation将模拟操纵杆与Meadow一起使用

消耗积分:0 | 格式:zip | 大小:0.58 MB | 2023-06-09

陈霞

分享资料个

描述

在这个项目中,我们将学习如何使用Meadow.Foundation将模拟操纵杆与 Meadow 一起使用当您移动操纵杆时,我们将使用四个 LED 来点亮它们。构建此项目所需的大部分内容都包含在Wilderness Labs Meadow F7 w/Hack Kit Pro 中。

Meadow.Foundation是一个平台,用于在 Meadow 上使用 .NET 快速轻松地构建连接的事物。它由Wilderness Labs 创建,完全开源,由 Wilderness Labs 社区维护。

如果您是 Meadow 的新手,我建议您通过控制板载 RGB LED 项目转到 Meadow 入门,以正确设置您的开发环境。

第 1 步 - 组装电路

像下面的 Fritzing 图一样将操纵杆和 LED 连接到 Meadow:

poYBAGSBpLaAV0poAAGKmluurA4372.png
Led 操纵杆的 Fritzing 图
 

第 2 步 - 创建 Meadow 应用程序项目

在 Visual Studio 2019 for WindowsmacOS中创建一个新的Meadow Application项目并将其命名为JoystickLeds

第 3 步 - 编写 JoystickLeds 的代码

在 Meadow 中,有两种方法可以监控输入发生的任何变化。第一个是经典的 .NET Eventing 模式,其中 anevent在更改时引发,第二个是IObservable模式,这是一种更强大和灵活的反应式方法。对于这个项目,我们采用第一种方法,这意味着 Meadow 开始监控操纵杆的两个模拟输入(一个用于 X 轴,一个用于 Y 轴)的变化,并且在检测到变化时触发一个事件。

复制下面的代码:

public class MeadowApp : App {,>
    PwmLed Up, Down, Left, Right;
    AnalogJoystick joystick;

    public MeadowApp() {
        Console.WriteLine("Initializing...");

        Up = new PwmLed(Device.CreatePwmPort(Device.Pins.D07, 100, 0.0f), 
            TypicalForwardVoltage.Red);
        Down = new PwmLed(Device.CreatePwmPort(Device.Pins.D04, 100, 0.0f), 
            TypicalForwardVoltage.Red);
        Left = new PwmLed(Device.CreatePwmPort(Device.Pins.D02, 100, 0.0f), 
            TypicalForwardVoltage.Red);
        Right = new PwmLed(Device.CreatePwmPort(Device.Pins.D03, 100, 0.0f), 
            TypicalForwardVoltage.Red);

        joystick = new AnalogJoystick(
            Device.CreateAnalogInputPort(Device.Pins.A01),
            Device.CreateAnalogInputPort(Device.Pins.A00),
            null, true);
        joystick.SetCenterPosition();
        joystick.Updated += JoystickUpdated;
        joystick.StartUpdating();            
    }

    void JoystickUpdated(object sender, JoystickPositionChangeResult e) {
        if (e.New.HorizontalValue < 0.2f) {
            Left.SetBrightness(0f);
            Right.SetBrightness(0f);
        }
        if (e.New.VerticalValue < 0.2f) {
            Up.SetBrightness(0f);
            Down.SetBrightness(0f);
        }

        if (e.New.HorizontalValue > 0)
            Left.SetBrightness(Math.Abs(e.New.HorizontalValue));
        else
            Right.SetBrightness(Math.Abs(e.New.HorizontalValue));

        if (e.New.VerticalValue > 0)
            Down.SetBrightness(Math.Abs(e.New.VerticalValue));
        else
            Up.SetBrightness(Math.Abs(e.New.VerticalValue));

        Console.WriteLine($"({e.New.HorizontalValue}, {e.New.VerticalValue})");
    }
}

在 MeadowApp 的构造函数中,我们将所有四个 LED 初始化为PwmLeds( up和) down以及 2 轴( )。注意在创建操纵杆对象时的最后一个参数中,我们传递了值这是为了表明操纵杆是倒置的,因此驱动程序将通过反转位置值来纠正方向。leftrightAnalogJoystickjoystickIsInverted,true

实例化后AnalogJoystick,我们调用SetCenterPosition()设置在模拟端口中读取的当前值并将它们设置为初始位置。然后,我们注册joystickUpdated每当我们移动它时都会触发的事件,最后我们调用StartSampling()操纵杆激活。

最后,JoystickUpdated事件处理程序将检查 X 轴和 Y 轴的值,并根据其位置调整相应 LED 的亮度。请注意,还有一个初始阈值,我们检查它是否位于其任一轴的中心,因此我们关闭了这些 LED。

第 4 步 - 运行项目

单击Visual Studio中的“运行”按钮。它应该类似于以下 GIF:

LedJoystick 项目运行
 

查看 Meadow.Foundation!

就您可以使用 Meadow.Foundation 做的大量令人兴奋的事情而言,这个项目只是冰山一角。

  • 它带有一个庞大的外设驱动程序库,其中包含适用于最常见传感器和外设的驱动程序。
  • 外设驱动程序封装了核心逻辑并公开了一个简单、干净、现代的 API。
  • 该项目得到了不断发展的社区的支持,该社区不断致力于构建酷炫的互联事物,并且总是乐于帮助新来者和讨论新项目。

参考


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !