nanoFramework.Iot.Device.ShiftRegister 1.2.587

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

// Install nanoFramework.Iot.Device.ShiftRegister as a Cake Tool
#tool nuget:?package=nanoFramework.Iot.Device.ShiftRegister&version=1.2.587                

通用移位寄存器

移位寄存器可以控制多个设备(如LED),使用少数引脚(至少3个 -- 数据、数据时钟和寄存器锁存)。移位寄存器可以级联使用而无需额外的引脚,从而只需要少量引脚即可控制大量设备,受到当前和所用算法的限制。

ShiftRegister绑定抽象了与存储寄存器、存储时钟、寄存器时钟和其他移位寄存器功能的交互。此绑定通过GPIO或SPI进行交互。

移位寄存器被用作Sn74hc595Mbi5027绑定类的基础类。它可以直接使用,也可以作为那些更具体绑定的实现细节进行依赖。它已经与SN74HC595MBI5027MBI5168移位寄存器进行了测试。

以下图片展示了流行的8位移位寄存器SN74HC595

shift-register

以下图片展示了更大的16位移位寄存器MBI5027

MBI5027

以下示例展示了如何以一些基本的方式使用移位寄存器。

使用GPIO

该绑定可以使用GpioController引脚来控制移位寄存器。它使用ShiftRegisterPinMapping来描述将要使用的引脚。

以下示例代码演示了如何使用GPIO来使用移位寄存器。

ShiftRegister sr = new(ShiftRegisterPinMapping.Minimal, 8);

// Light up three of first four LEDs
sr.ShiftBit(1);
sr.ShiftBit(1);
sr.ShiftBit(0);
sr.ShiftBit(1);
sr.Latch();

// Display for 1s
Thread.Sleep(1000);

// Write to all 8 registers with a byte value
// ShiftByte latches data by default
sr.ShiftByte(0b_1000_1101);

以下图表展示了使用SN74HC595时所需的连接方式。其他移位寄存器也将类似。

sn74hc595-led-bar-graph-spi_bb

使用SPI

重要:在创建SpiDevice前,请确保正确设置了SPI引脚,特别是对于ESP32,请确保安装nanoFramework.Hardware.ESP32 nuget

//////////////////////////////////////////////////////////////////////
// when connecting to an ESP32 device, need to configure the SPI GPIOs
// used for the bus
Configuration.SetPinFunction(21, DeviceFunction.SPI1_MOSI);
Configuration.SetPinFunction(22, DeviceFunction.SPI1_MISO);
Configuration.SetPinFunction(23, DeviceFunction.SPI1_CLOCK);
// Make sure as well you are using the right chip select

对于STM32等其他设备,请确保您正在使用要使用的SPI总线的预置引脚。芯片选择也可以预先设置。

该绑定可以使用SpiDevice来控制移位寄存器。移位寄存器时序映射到SPI协议,从而可以使用SPI。连接简单,从SPI引脚到移位寄存器:SDI (MOSI) → SDI;SCLK → CLK;CEO → LE。

注意:SPI协议有一些带有对奴隶的随意引用的术语。我们正在为此做出自己的贡献。

以下示例代码演示了如何使用SPI和移位寄存器。

// assuming an 8-bit shift register
ShiftRegister sr = new(SpiDevice.Create(new(1, 42)), 8);

// Light up three of first four LEDs
// The ShiftBit() method is disallowed when using SPI
sr.ShiftByte(0b_1011);

// Clear register
sr.ShiftClear();

// Write to all 8 registers with a byte value
sr.ShiftByte(0b_1010_1010);

以下图表展示了使用SN74HC595时所需使用SPI的连接方式。其他移位寄存器也将类似。

sn74hc595-led-bar-graph-spi_bb

级联

该绑定支持GPIO或SPI进行级联。以下基于GPIO的示例演示了如何实例化绑定以控制/寻址两个级联的8位移位寄存器。这是通过构造函数中的整数值指定的。

ShiftRegister sr = new(ShiftRegisterPinMapping.Minimal, 16);

移位寄存器需要正确连接以启用级联。在SN74HC595中,第一个寄存器中的QH'将连接到第二个寄存器中的SER。MBI5027和MBI5168的模式类似,第一个寄存器中的SDO将连接到第二个寄存器中的SDI

您可以通过以下几种方式之一在多个级联设备中写入值,如同以下代码所示。您通常不会使用所有这些方法,但可以从中选择一种。

// Write a value to each register bit and latch
// Only works with GPIO
for (int i = 0; i < sr.BitLength; i++)
{
    sr.ShiftBit(1);
}
sr.Latch();

// Prints the following pattern to each register: 10101010
// This pattern only works for register lengths divisible by 8 (which is common)
for (int i = 0; i < sr.BitLength / 8; i++)
{
    sr.ShiftByte(0b_1010_1010);
}

// Downshift a 32-bit number to the desired number of daisy-chained devices
// Same thing could be done with a 64-bit integer if you have more than four 8-bit shift registers (or more than two 16-bit ones)
// Prints the following pattern across two registers: 0001001110001000
int value = 0b_0001_0011_1000_1000; // 5000
for (int i = (sr.BitLength / 8) - 1; i > 0; i--)
{
    int shift = i * 8;
    int downShiftedValue = value >> shift;
    sr.ShiftByte((byte)downShiftedValue, false);
}

sr.ShiftByte((byte)value);

// Print array of bytes
// Result will be same as previous example
var bytes = new byte[] { 0b10001000, 0b00010011};
foreach (var b in bytes)
{
    sr.ShiftByte(b);
}

以下图表展示了使用SN74HC595时所需的级联连接方式。其他移位寄存器也将类似。此图表使用的是Minimal映射。}Complete映射将有所不同。

sn74hc595-minimal-led-bar-graph-double-up_bb

资源

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

NuGet 包 (3)

显示依赖 nanoFramework.Iot.Device.ShiftRegister 的前 3 个 NuGet 包

下载
nanoFramework.Iot.Device.Sn74hc595

此包包含适用于 .NET nanoFramework C# 项目的 .NET IoT Core 绑定 Iot.Device.Sn74hc595。

nanoFramework.Iot.Device.CharacterLcd

此包包含适用于 .NET nanoFramework C# 项目的 .NET IoT Core 绑定 Character LCD。

nanoFramework.Iot.Device.Mbi5027

此包包含适用于 .NET nanoFramework C# 项目的 .NET IoT Core 绑定 Iot.Device.Mbi5027。

GitHub 仓库 (1)

显示依赖 nanoFramework.Iot.Device.ShiftRegister 的前 1 个最热门 GitHub 仓库

仓库 星标
nanoframework/nanoFramework.IoT.Device
📦 此仓库包含各种传感器、芯片、显示屏、帽子以及驱动程序的 .NET nanoFramework 实现
版本 下载 最后更新
1.2.587 395 7/12/2024
1.2.558 641 5/29/2024
1.2.546 269 5/15/2024
1.2.424 2,074 11/9/2023
1.2.421 100 11/9/2023
1.2.419 117 11/9/2023
1.2.326 2,680 5/24/2023
1.2.301 1,311 5/10/2023
1.2.296 840 5/3/2023
1.2.287 295 4/5/2023
1.2.271 1,140 3/15/2023
1.2.202 2,980 12/28/2022
1.2.196 268 12/28/2022
1.2.195 273 12/27/2022
1.2.158 2,269 11/13/2022
1.2.149 2,368 11/3/2022
1.2.141 398 10/25/2022
1.2.121 3,799 10/12/2022
1.2.103 4,735 9/24/2022
1.2.94 2,504 9/22/2022
1.2.86 1,953 9/15/2022
1.2.72 1,638 9/8/2022
1.2.4 1,878 7/13/2022
1.1.140.3705 1,437 7/6/2022
1.1.115.33436 1,418 6/24/2022
1.1.113.2032 398 6/23/2022
1.1.26 3,318 4/26/2022
1.1.19 1,376 4/21/2022
1.1.2 1,438 4/15/2022
1.1.1 418 4/14/2022
1.0.300 1,660 3/30/2022
1.0.277-preview.126 158 3/25/2022
1.0.277-preview.125 126 3/25/2022
1.0.277-preview.112 172 3/19/2022
1.0.277-preview.102 257 3/11/2022
1.0.277-preview.99 142 3/10/2022
1.0.277-preview.85 146 2/25/2022
1.0.277-preview.60 133 2/4/2022
1.0.277-preview.32 135 1/27/2022
1.0.277-preview.17 133 1/24/2022
1.0.277-preview.1 130 1/11/2022
1.0.259 309 12/9/2021
1.0.221 160 10/19/2021
1.0.219 169 10/19/2021
1.0.218 198 10/18/2021
1.0.207 186 10/11/2021
1.0.155 163 8/31/2021
1.0.119 232 6/28/2021
1.0.112 199 6/16/2021
1.0.78 173 5/26/2021
1.0.49 187 5/24/2021