nanoFramework.MagicBit 1.2.150

前缀已保留
dotnet add package nanoFramework.MagicBit --version 1.2.150                
NuGet\Install-Package nanoFramework.MagicBit -Version 1.2.150                
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用了 NuGet 模块的 Install-Package 版本。
<PackageReference Include="nanoFramework.MagicBit" Version="1.2.150" />                
对于支持 PackageReference 项目的项目,请将此 XML 节复制到项目文件中以引用此包。
paket add nanoFramework.MagicBit --version 1.2.150                
#r "nuget: nanoFramework.MagicBit, 1.2.150"                
#r 指令可用于 F# Interactive 和 Polyglot Notebooks。将其复制到交互式工具或脚本的源代码中以引用包。
// Install nanoFramework.MagicBit as a Cake Addin
#addin nuget:?package=nanoFramework.MagicBit&version=1.2.150

// Install nanoFramework.MagicBit as a Cake Tool
#tool nuget:?package=nanoFramework.MagicBit&version=1.2.150                

Quality Gate Status Reliability Rating License NuGet #yourfirstpr Discord

nanoFramework logo


欢迎使用 .NET nanoFramework MagicBit 库存储库

构建状态

组件 构建状态 NuGet 包
MagicBit Build Status NuGet

用法

此 nuget 可与出色的 MagicBit 板一起使用。

它几乎支持所有传感器和机器人元件。然而,其中一些不是本地的,因为它们是现有 IoT.Device 绑定 的一部分。请参见已知的限制

您只需确保您的 MagicBit 已按照以下方式刷机

# Replace the com port number by your COM port
nanoff --platform esp32 --update --preview --serialport COM3

更详细的示例也可见于测试应用程序中。

屏幕

要访问屏幕,您需要初始化它。

MagicBit.InitializeScreen();

初始化后,您可以访问 Screen 静态类和 Console 静态类。

Screen 带来写入屏幕点的原语、选择颜色以及写入文本。

例如,您可以将一个8x8的缓冲区方框写入位置0, 26,宽度为8,如下所示

byte[] _heart = new byte[] {
            0b0100_0010,
            0b0110_0110,
            0b1111_1111,
            0b1111_1111,
            0b1111_1111,
            0b0011_1100,
            0b0011_1100,
            0b0001_1000,
        };
Screen.DrawBitmap(0, 26, 8, _heart);

请注意,宽度只能是8的倍数,缓冲区应为宽度/8的倍数。每个比特代表一个像素。这是展示图像的方式。

屏幕还提供其他基本函数,下面是一个快速示例

// You can use the Screen primitives like this:
Screen.Clear();
Screen.Write(2, 0, "MagicBit", 2);
Screen.Write(2, 26, "loves .NET", 1, true);
Screen.Write(2, 40, "nanoFramework", 1, true);
Screen.Write(2, 50, "Clk right button", 1, false);
Screen.DrawBitmap(0, 26, 8, _heart);
Screen.DrawBitmap(Screen.Width - 9, 26, 8, _heart);
// You should make sure that you call Display
Screen.Display();

通过 Screen.Device,您还将获得更多。

Console类与经典 System.Console 类工作方式相似

Console.Clear();
Console.WriteLine("Motors");
Console.CursorTop = 2;
Console.WriteLine("Motors will run reverse then rotate both direction");

注意:您也可以更改默认字体,您需要将其作为属性提供。光标位置是根据字体的宽度计算的。

按钮

提供了2个按钮。

它们分别命名为 ButtonLeftButtonRight。您还可以访问事件。例如

MagicBit.ButtonLeft.Press += (sender, e) =>
{
    Console.CursorLeft = 0;
    Console.CursorTop = 0;
    Console.Write($"Left Pressed  ");
};

// Simple way of getting the button status
while (!MagicBit.ButtonRight.IsPressed)
{
    Thread.Sleep(20);
}

另一个使用事件的示例

MagicBit.ButtonRight.IsHoldingEnabled = true;
MagicBit.ButtonRight.Holding += (sender, e) =>
{
    Console.Write("ButtonRight hold long.");
};

电机

MagicBit有一个驱动程序,可以控制2个直流电机。如果您有机器人套件,您将能够控制它们。如果您没有机器人套件,您仍然可以自己使用,只要将它们插入正确的引脚即可。

Console.Clear();
Console.WriteLine("Motors");
Console.CursorTop = 2;
Console.WriteLine("Motors will run reverse then rotate both direction");
var motor1 = MagicBit.Motor1;
var motor2 = MagicBit.Motor2;
motor1.Speed = -0.5;
motor2.Speed = -0.5;
Thread.Sleep(2000);
motor1.Speed = +0.5;
motor2.Speed = -0.5;
Thread.Sleep(2000);
motor1.Speed = -0.5;
motor2.Speed = +0.5;
Thread.Sleep(2000);
motor1.Speed = 0;
motor2.Speed = 0;

蜂鸣器

当然,可以使用蜂鸣器。以下是一个播放音调的示例

var buzz = MagicBit.Buzzer;
for (int i = 0; i < 10; i++)
{
    buzz.PlayTone(500 + i * 25, 1000);
}

电位器和光度

这两个内置传感器可以直接访问和使用。以下是一个完整示例,读取它们,在屏幕上显示值,并在按下左边按钮时中断它们

CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
MagicBit.ButtonLeft.Press += (sender, e) =>
{
    cancellationTokenSource.Cancel();
};

Console.Clear();
Console.WriteLine("Sensors");
Console.CursorTop = 2;
Console.WriteLine("Clk left button to stop");

while (!cancellationTokenSource.Token.IsCancellationRequested)
{
    // Read the potentiometer ratio, from 0.0 to 1.0
    var ratio = MagicBit.Potentiometer.ReadRatio();
    // Read the luminosity sensor ratio from 0.0 (full dark) to 1.0 (full light)
    var lumi = MagicBit.Luminosity.ReadRatio();
    Console.CursorTop = 4;
    Console.CursorLeft = 0;
    Console.WriteLine($"Pot: {ratio * 100:N2}%  ");
    Console.CursorTop = 5;
    Console.CursorLeft = 0;
    Console.WriteLine($"lum: {lumi * 100:N2}%  ");
    cancellationTokenSource.Token.WaitHandle.WaitOne(200, true);
}

伺服电机

可以连接伺服电机。到目前为止,您在蓝色引脚上有直接简单的方法。本完整示例显示了如何将角度从0度改为180度,显示下一个角度并等待按下左边按钮以停止

CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
MagicBit.ButtonLeft.Press += (sender, e) =>
{
    cancellationTokenSource.Cancel();
};

Console.Clear();
Console.WriteLine("Servo");
Console.CursorTop = 2;
Console.WriteLine("Clk left button to stop");

// The servo can be different and you can adjust the values as needed
var servo = MagicBit.GetServoPinBlue(180, 500, 2400);
// This is needed to start the servo
servo.Start();
int angle = 0;
while (!cancellationTokenSource.Token.IsCancellationRequested)
{
    servo.WriteAngle(angle);
    angle = angle == 0 ? 180 : 0;
    Console.CursorTop = 4;
    Console.CursorLeft = 0;
    Console.WriteLine($"Angle: {angle}deg  ");
    cancellationTokenSource.Token.WaitHandle.WaitOne(3000, true);
}

// Don't forget to stop it at the end.
servo.Stop();

注意:技术上可以使用任何可用的引脚来插入伺服电机。如果使用蓝色引脚,板包将使您的生活更轻松。否则,您将不得不自己设置伺服电机。

LED灯

有4个内置LED灯可用。

MagicBit.LedBlue.Write(PinValue.High);

重要:您不能将它们与电机一起使用,因为它们使用相同的引脚。

I2C设备

默认情况下,您可以通过红色引脚获取I2C设备。您可以使用 GetRedGetI2cDevice。例如,如果您想创建地址为0x42的I2C设备,只需这样做

var myI2cDevice = MagicBit.GetI2cDevice(0x42);

黑色左边和右边引脚

您可以获取GPIO引脚,这是一个您可以从中直接使用单个输出或输入的引脚。 GetPinBlackLeftGetPinBlackRight 都会为您提供

// This will create an output mode pint, you can for example attach a led
var myPin = MagicBit.GetPinBlackLeft(PinMode.Output);
// This will change the pin to high
myPin.Write(PinValue.High);

蓝色引脚

蓝色引脚默认设置为PWM。在获取时,您将获得一个PWM通道

var myPwm = MagicBit.GetPinBlue();

更改默认引脚行为

这是一个更高级的场景,但您可以在未使用默认功能之前更改任何引脚的功能。例如,您可以从黑色左边引脚创建PWM通道

Configuration.SetPinFunction(32, DeviceFunction.PWM11);
var myBlackPwm = PwmChannel.CreateFromPin(32);

即使蓝色引脚的默认行为是PWM,如果您不请求它,您也可以以不同的方式使用它。例如,用作简单的输入

var myBluePin = MagicBit.GpioController.Open(26, PinMode.Input);

已知限制

有几个传感器将无法工作,请参阅以下列表、原因和可能的缓解措施。

  • DHT传感器在ESP32 .NET托管代码中尚不支持。您可以使用其他支持的温度和湿度传感器。 请参考这里
  • 机器人上的HCSR04尚不支持,因为它使用相同的引脚用于信号的发射和接收。这是正在进行中的工作,以找到解决方案。单独出售的,当与红色端口一起使用时,将完美工作。
  • QRT传感器组尚未支持,这是正在进行中的工作。同时,您可以将它们作为模拟传感器单独读取。

反馈和文档

有关文档、提供反馈、问题以及了解如何贡献的信息,请参考 Home仓库

加入我们的 Discord 社区 这里

致谢

此项目的贡献者名单可以在 贡献者 页面找到。

许可协议

nanoFramework 类库采用 MIT 许可协议 许可。

行为准则

本项目采纳了贡献者公约定义的行为准则,以阐明我们社区中预期的行为。更多信息请参阅 .NET 基金会行为准则

.NET 基金会

本项目由 .NET 基金会 支持。

产品 兼容和额外计算目标框架版本。
.NET 框架 net 是兼容的。
兼容目标框架
包含目标框架(在包中)
了解更多关于 目标框架.NET Standard 的信息。

NuGet 包

此包不被任何 NuGet 包使用。

GitHub 仓库

此包不被任何流行的 GitHub 仓库使用。

版本 下载 最后更新
1.2.150 61 8/12/2024
1.2.149 62 8/8/2024
1.2.148 39 7/29/2024
1.2.147 76 7/22/2024
1.2.146 73 7/18/2024
1.2.145 68 7/15/2024
1.2.144 75 7/11/2024
1.2.142 89 6/20/2024
1.2.140 80 6/17/2024
1.2.137 85 5/30/2024
1.2.135 89 5/20/2024
1.2.133 91 5/16/2024
1.2.130 96 4/18/2024
1.2.128 86 4/8/2024
1.2.126 95 3/25/2024
1.2.124 102 3/18/2024
1.2.122 92 3/14/2024
1.2.120 101 2/29/2024
1.2.118 93 2/26/2024
1.2.116 109 1/26/2024
1.2.103 196 11/13/2023
1.2.101 104 11/9/2023
1.2.98 103 11/9/2023
1.2.96 139 10/9/2023
1.2.94 130 10/5/2023
1.2.92 115 9/28/2023
1.2.90 109 9/18/2023
1.2.88 118 9/7/2023
1.2.86 137 9/4/2023
1.2.84 128 8/17/2023
1.2.82 133 8/14/2023
1.2.80 153 8/3/2023
1.2.78 144 7/31/2023
1.2.76 138 7/27/2023
1.2.74 128 7/24/2023
1.2.72 156 7/20/2023
1.2.70 148 7/17/2023
1.2.68 136 7/13/2023
1.2.66 162 6/22/2023
1.2.64 148 6/19/2023
1.2.62 138 6/15/2023
1.2.60 156 6/12/2023
1.2.58 156 6/8/2023
1.2.56 129 6/5/2023
1.2.54 152 5/29/2023
1.2.52 147 5/25/2023
1.2.50 164 5/22/2023
1.2.46 174 5/15/2023
1.2.44 174 5/11/2023
1.2.42 138 5/8/2023
1.2.40 203 4/3/2023
1.2.38 224 3/27/2023
1.2.36 220 3/23/2023
1.2.34 231 3/20/2023
1.2.32 243 3/16/2023
1.2.30 231 3/13/2023
1.2.28 256 3/9/2023
1.2.26 230 3/2/2023
1.2.24 267 2/27/2023
1.2.22 243 2/23/2023
1.2.20 237 2/20/2023
1.2.18 277 2/16/2023
1.2.16 295 2/6/2023
1.2.13 334 1/16/2023
1.2.2.16170 315 12/25/2022
1.1.0.96 387 11/15/2022
1.1.0.94 369 11/14/2022
1.1.0.92 381 11/6/2022
1.1.0.90 377 11/4/2022
1.1.0.88 370 11/3/2022
1.1.0.86 368 11/1/2022
1.1.0.84 421 10/27/2022
1.1.0.82 437 10/26/2022
1.1.0.80 425 10/25/2022
1.1.0.78 446 10/24/2022
1.1.0.76 436 10/23/2022
1.1.0.74 427 10/22/2022
1.1.0.72 448 10/13/2022
1.1.0.70 432 10/12/2022
1.1.0.68 427 10/9/2022
1.1.0.65 472 9/23/2022
1.1.0.63 471 9/22/2022
1.1.0.61 484 9/16/2022
1.1.0.59 519 9/15/2022
1.1.0.57 470 9/9/2022
1.1.0.55 428 9/8/2022
1.1.0.53 438 9/5/2022
1.1.0.51 468 8/16/2022
1.1.0.49 452 8/15/2022
1.1.0.47 467 8/7/2022
1.1.0.45 442 8/6/2022
1.1.0.43 451 8/5/2022
1.1.0.41 443 8/4/2022
1.1.0.39 449 8/3/2022
1.1.0.37 445 8/2/2022
1.1.0.34 467 7/25/2022
1.1.0.32 449 7/24/2022
1.1.0.30 474 7/23/2022
1.1.0.28 483 7/10/2022
1.1.0.26 488 7/9/2022
1.1.0.24 481 7/8/2022
1.1.0.22 482 7/1/2022
1.1.0.20 467 6/30/2022
1.1.0.18 482 6/29/2022
1.1.0.16 502 6/27/2022
1.1.0.14 466 6/25/2022
1.1.0.12 465 6/24/2022
1.1.0.10 468 6/16/2022
1.1.0.8 455 6/15/2022
1.1.0.6 441 6/14/2022
1.1.0.4 455 6/1/2022
1.0.1-preview.101 115 3/26/2022
1.0.1-preview.99 115 3/25/2022
1.0.1-preview.97 104 3/22/2022
1.0.1-preview.95 113 3/21/2022
1.0.1-preview.93 116 3/20/2022
1.0.1-preview.91 116 3/18/2022
1.0.1-preview.89 121 3/18/2022
1.0.1-preview.87 122 3/17/2022
1.0.1-preview.85 114 3/16/2022
1.0.1-preview.83 110 3/14/2022
1.0.1-preview.81 113 3/14/2022
1.0.1-preview.79 119 3/12/2022
1.0.1-preview.77 109 3/9/2022
1.0.1-preview.75 120 3/7/2022
1.0.1-preview.73 119 3/4/2022
1.0.1-preview.71 115 3/3/2022
1.0.1-preview.69 120 2/28/2022
1.0.1-preview.67 112 2/27/2022
1.0.1-preview.65 120 2/26/2022
1.0.1-preview.63 116 2/19/2022
1.0.1-preview.61 110 2/18/2022
1.0.1-preview.57 122 2/17/2022
1.0.1-preview.55 126 2/16/2022
1.0.1-preview.53 113 2/13/2022
1.0.1-preview.51 119 2/12/2022
1.0.1-preview.49 117 2/11/2022
1.0.1-preview.47 119 2/10/2022
1.0.1-preview.45 110 2/9/2022
1.0.1-preview.43 134 2/5/2022
1.0.1-preview.41 134 2/1/2022
1.0.1-preview.39 137 1/28/2022
1.0.1-preview.37 133 1/28/2022
1.0.1-preview.35 128 1/28/2022
1.0.1-preview.33 133 1/28/2022
1.0.1-preview.31 136 1/27/2022
1.0.1-preview.29 134 1/25/2022
1.0.1-preview.27 123 1/22/2022
1.0.1-preview.25 126 1/21/2022
1.0.1-preview.24 133 4/16/2022
1.0.1-preview.23 130 1/21/2022
1.0.1-preview.22 123 4/15/2022
1.0.1-preview.21 131 1/21/2022
1.0.1-preview.20 120 4/6/2022
1.0.1-preview.19 131 1/21/2022
1.0.1-preview.18 116 4/3/2022
1.0.1-preview.17 134 1/20/2022
1.0.1-preview.16 112 3/31/2022
1.0.1-preview.15 133 1/17/2022
1.0.1-preview.13 132 1/11/2022
1.0.1-preview.10 171 11/10/2021