nanoFramework.Iot.Device.Charlieplex 1.2.590
前缀已保留
dotnet add package nanoFramework.Iot.Device.Charlieplex --version 1.2.590
NuGet\Install-Package nanoFramework.Iot.Device.Charlieplex -Version 1.2.590
<PackageReference Include="nanoFramework.Iot.Device.Charlieplex" Version="1.2.590" />
paket add nanoFramework.Iot.Device.Charlieplex --version 1.2.590
#r "nuget: nanoFramework.Iot.Device.Charlieplex, 1.2.590"
// Install nanoFramework.Iot.Device.Charlieplex as a Cake Addin #addin nuget:?package=nanoFramework.Iot.Device.Charlieplex&version=1.2.590 // Install nanoFramework.Iot.Device.Charlieplex as a Cake Tool #tool nuget:?package=nanoFramework.Iot.Device.Charlieplex&version=1.2.590
Charlieplex 段绑定
Charliplexing 是一种多路复用方案,它允许控制比传统布线方案更多的 LED 或其他负载或传感器。Charliplexing 允许寻址最多 n^2-n
个 LED,其中 n 是可用引脚数。例如,3 个引脚可以控制多达 6 个 LED,4 个引脚可以控制 12 个,5 个引脚可以控制 20 个。这听起来很棒,然而由于复杂性,charlieplexed 电路布线困难。
一个更大的挑战是,该方案(至少在其基本形式中)一次只能点亮一个LED。乍一看,这似乎是一个大问题。不用担心。LED的变化非常快,以至于眼睛会被骗以为同时点亮了多个LED。这意味着,在LED点亮时,您的代码不能做其他事情。这就是为什么API接受定时信息。如果您习惯于直接通过GPIO引脚或使用移位寄存器来点亮LED,那么这不可能是您预期的。
显示dotnet:使用charlieplexing动画40个LED演示了如何使用此绑定。
用法
以下代码示例演示了使用3个引脚来控制6个LED。
var pins = new int[] { 6, 13, 19 };
var ledCount = 6;
var charlie = new CharlieplexSegment(pins, ledCount);
for (int i = 0; i < ledCount; i++)
{
// will keep lit for 500ms
charlie.Write(i, 1, 500);
charlie.Write(i, 0);
}
charlieplex-test示例展示了API的更广泛使用。
使用LED
以下图像展示了3针Charlieplex电路,这是charlieplexing的起点。电路中有6个LED,分为两组。每组两个LED连接到相同的两个GPIO引脚,但极性相反(阳极和阴极互换了)。
使用LED条形图表
上图展示了在Charlieplex电路中使用LED。由于可以改变LED的阳极/阴极方向,因此LED的使用很简单。由于LED条形图表的阳极和阴极腿是固定不变的,因此不能这样做。相反,您需要在面包板上创建自己的电路,然后将电路连接到相应的引脚。下面的图像展示了这一过程。
电路寻址方案
使用的是CharlieplexSegment
类型的寻址方案,可以将其视为深度优先然后是宽度优先。每对引脚之间有一对LED或其他负载。第一个LED是阳极优先放置的,第二个是阴极优先放置的。您从第一对LED的第一和第二引脚开始,然后是第二和第三个引脚用于第二对。继续这样做,直到引脚用完。之后,您从第一个引脚重新开始,但这次是将第三个引脚配对。这种模式一直持续到达到所需的LED数量或引脚用完。
理解LED的阳极(通常较长)和阴极腿之间的差异至关重要。您将在每次放置时检查这些。
绑定包括一个API,该API返回您需要使用的电路的描述。示例代码调用此API并将这些信息打印到终端,使用与上面的代码示例相同的引脚。这些信息对于正确配置电路非常有帮助。
Node 0 -- Anode: 6; Cathode: 13
Node 1 -- Anode: 13; Cathode: 6
Node 2 -- Anode: 13; Cathode: 19
Node 3 -- Anode: 19; Cathode: 13
Node 4 -- Anode: 6; Cathode: 19
Node 5 -- Anode: 19; Cathode: 6
CharlieplexLayout.cs中的测试调用此API并通过不同数量的引脚演示了电路地址方案。
给定一个包含6个LED的电路,charlie.Write(5,1)
将点亮图中的LED6。API使用0基于的方案。因此,charlie.Write(6,1)
将抛出异常。
此图像展示了2针电路。除了作为学习练习外,没有理由使用2针的Charlieplex电路。
此图像展示了3针电路。
此图像展示了6针电路。
使用Charlieplexing从5个Arduino引脚控制20个LED包括更大的布线图,与绑定使用的方案相匹配。
替代方案
Charlieplex电路的替代方案是移位寄存器。参见SN74HC595 -- 8位移位寄存器。移位寄存器比Charlieplex电路更有效地利用引脚,并且更容易配置。
-
- nanoFramework.CoreLibrary (>= 1.15.5)
- nanoFramework.Iot.Device.Multiplexing (>= 1.2.586)
- nanoFramework.Runtime.Events (>= 1.11.18)
- nanoFramework.System.Device.Gpio (>= 1.1.41)
- nanoFramework.System.Diagnostics.Stopwatch (>= 1.2.586)
- nanoFramework.System.Math (>= 1.5.43)
- nanoFramework.System.Threading (>= 1.1.32)
NuGet包
此包不被任何NuGet包使用。
GitHub仓库
此包不支持任何流行的GitHub仓库。
版本 | 下载 | 最后更新 |
---|---|---|
1.2.590 | 64 | 7/17/2024 |
1.2.570 | 87 | 6/14/2024 |
1.2.560 | 90 | 5/29/2024 |
1.2.552 | 87 | 5/17/2024 |
1.2.548 | 90 | 5/15/2024 |
1.2.536 | 90 | 4/15/2024 |
1.2.514 | 108 | 3/22/2024 |
1.2.436 | 198 | 11/10/2023 |
1.2.416 | 79 | 11/8/2023 |
1.2.329 | 129 | 5/26/2023 |
1.2.313 | 112 | 5/12/2023 |
1.2.308 | 119 | 5/11/2023 |
1.2.302 | 128 | 5/10/2023 |
1.2.297 | 136 | 5/3/2023 |
1.2.273 | 195 | 3/17/2023 |
1.2.212 | 288 | 1/5/2023 |
1.2.208 | 287 | 1/3/2023 |
1.2.203 | 283 | 12/28/2022 |
1.2.159 | 332 | 11/14/2022 |
1.2.153 | 350 | 11/5/2022 |
1.2.141 | 357 | 10/25/2022 |
1.2.128 | 353 | 10/22/2022 |
1.2.122 | 404 | 10/12/2022 |
1.2.114 | 360 | 10/8/2022 |
1.2.95 | 411 | 9/22/2022 |
1.2.87 | 459 | 9/15/2022 |
1.2.73 | 389 | 9/8/2022 |
1.1.116.8772 | 414 | 6/24/2022 |
1.1.113.2032 | 433 | 6/23/2022 |
1.1.3 | 472 | 4/15/2022 |
1.1.1 | 416 | 4/14/2022 |
1.0.300 | 431 | 3/31/2022 |
1.0.288-preview.114 | 119 | 3/25/2022 |
1.0.288-preview.113 | 111 | 3/25/2022 |
1.0.288-preview.100 | 119 | 3/19/2022 |
1.0.288-preview.99 | 114 | 3/18/2022 |
1.0.288-preview.98 | 109 | 3/18/2022 |
1.0.288-preview.94 | 120 | 3/15/2022 |
1.0.288-preview.93 | 114 | 3/15/2022 |
1.0.288-preview.90 | 106 | 3/11/2022 |
1.0.288-preview.87 | 111 | 3/10/2022 |
1.0.288-preview.86 | 123 | 3/8/2022 |
1.0.288-preview.65 | 111 | 2/18/2022 |
1.0.288-preview.48 | 137 | 2/4/2022 |
1.0.288-preview.41 | 139 | 1/31/2022 |
1.0.288-preview.29 | 129 | 1/28/2022 |
1.0.288-preview.20 | 132 | 1/27/2022 |
1.0.288-preview.19 | 132 | 1/27/2022 |
1.0.288-preview.5 | 134 | 1/24/2022 |
1.0.288-preview.3 | 119 | 1/21/2022 |
1.0.288-preview.1 | 129 | 1/21/2022 |
1.0.272 | 160 | 1/10/2022 |
1.0.259 | 298 | 12/9/2021 |
1.0.218 | 195 | 10/18/2021 |
1.0.195 | 317 | 10/1/2021 |
1.0.136 | 229 | 7/17/2021 |
1.0.135 | 158 | 7/16/2021 |
1.0.134 | 173 | 7/15/2021 |
1.0.133 | 184 | 7/14/2021 |
1.0.131 | 165 | 7/8/2021 |
1.0.121 | 213 | 6/29/2021 |
1.0.120 | 185 | 6/29/2021 |
1.0.119 | 228 | 6/28/2021 |
1.0.118 | 200 | 6/20/2021 |
1.0.112 | 195 | 6/16/2021 |
1.0.110 | 232 | 6/9/2021 |
1.0.109 | 164 | 6/8/2021 |
1.0.106 | 193 | 6/1/2021 |
1.0.104 | 261 | 5/29/2021 |
1.0.63 | 167 | 5/26/2021 |
1.0.40 | 181 | 5/24/2021 |