nanoFramework.MagicBit 1.2.150
前缀已保留
dotnet add package nanoFramework.MagicBit --version 1.2.150
NuGet\Install-Package nanoFramework.MagicBit -Version 1.2.150
<PackageReference Include="nanoFramework.MagicBit" Version="1.2.150" />
paket add nanoFramework.MagicBit --version 1.2.150
#r "nuget: nanoFramework.MagicBit, 1.2.150"
// 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
欢迎使用 .NET nanoFramework MagicBit 库存储库
构建状态
组件 | 构建状态 | NuGet 包 |
---|---|---|
MagicBit |
用法
此 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个按钮。
它们分别命名为 ButtonLeft
和 ButtonRight
。您还可以访问事件。例如
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设备。您可以使用 GetRed
或 GetI2cDevice
。例如,如果您想创建地址为0x42的I2C设备,只需这样做
var myI2cDevice = MagicBit.GetI2cDevice(0x42);
黑色左边和右边引脚
您可以获取GPIO引脚,这是一个您可以从中直接使用单个输出或输入的引脚。 GetPinBlackLeft
和 GetPinBlackRight
都会为您提供
// 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 是兼容的。 |
-
- nanoFramework.CoreLibrary (≥ 1.15.5)
- nanoFramework.Hardware.Esp32 (≥ 1.6.19)
- nanoFramework.Iot.Device.Button (≥ 1.2.570)
- nanoFramework.Iot.Device.Buzzer (≥ 1.2.613)
- nanoFramework.Iot.Device.DCMotor (≥ 1.2.570)
- nanoFramework.Iot.Device.ServoMotor (≥ 1.2.570)
- nanoFramework.Iot.Device.Ssd13xx (≥ 1.3.384)
- nanoFramework.System.Device.Adc (≥ 1.1.11)
- nanoFramework.System.Device.Gpio (≥ 1.1.41)
- nanoFramework.System.Device.I2c (≥ 1.1.16)
- nanoFramework.System.Device.Model (≥ 1.2.586)
- nanoFramework.System.Device.Pwm (≥ 1.1.10)
- nanoFramework.System.Math (≥ 1.5.43)
- UnitsNet.nanoFramework.Frequency (≥ 5.56.0)
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 |