Skip to main content
Any Framework

Iot.Device.Tm1637 assembly for .NET nanoFramework C# projects

Published
Oct 23, 2024
2y ago
Total Downloads
27.3K
27,295

Install

dotnet add package nanoFramework.Iot.Device.Tm1637 --version 1.2.673

No framework information available.

README

TM1637 - Segment Display

TM1637 is a segments display with 6 characters Led controler. It uses a 2 wire implementation, one for the clock (CLK), one for the data (DIO). This chip can act as well as a key reader. This part has not been implemented. Only the Led display has been implemented. Most of its modern usages are for 4 to 6 segment displays.

Documentation

Device family

You can find this display as Grove elements as well as very cheap with no brand. A search on your favorite online shop will give you lots of options. Those simple displays are used a lot for simple clock for example.

Testing was performed with a HiLetgo part.

Usage

You need to create a Tm1637 class with 2 pins, the clock one and the data one.

Tm1637 tm1637 = new Tm1637(4, 0);

tm1637

Screen on, off, brightness

It is possible and you have to turn the screen on when you want to use the Tm1637.

tm1637.Brightness = 7;
tm1637.ScreenOn = true;
tm1637.ClearDisplay();

As an example, this will blink the screen:

for (int i = 0; i < 10; i++)
{
    tm1637.ScreenOn = !tm1637.ScreenOn;
    tm1637.Display(rawData);
    Thread.Sleep(500);
}

When adjusting the screen brightness from 0 to 7 where 7 is the maximum, the command is immediate.

You can clear the display as well:

tm1637.ClearDisplay();

Displaying pre build characters

Characters are prebuild from 0 to F to facilitate hexadecimal displays on the segments. The following example will display the number 4 then 2 with a dot then A and F.

Character[] toDisplay = new Character[4] {
    Character.Digit4,
    Character.Digit2 | Character.Dot,
    Character.Digit3,
    Character.Digit8
};
tm1637.Display(toDisplay);

The maximum size of the buffer is 6.

Displaying raw data

You can as well display raw data like in the following example:

// Displays couple of raw data
Character[] rawData = new Character[6] {
    // All led on including the dot
    (Character)0b1111_1111, 
    // All led off
    (Character)0b0000_0000,
    // top blanck, right on, turning like this including dot
    (Character)0b1010_1010,
    // top on, right black, turning like this no dot
    (Character)0b0101_0101,
    // half one half off
    Character.SegmentTop | Character.SegmentTopRight | Character.SegmentBottomRight | Character.SegmentBottom, 
    // half off half on
    Character.SegmentTopLeft|Character.SegmentBottomLeft|Character.SegmentMiddle | Character.Dot,
};
// If you have a 4 display, only the first 4 will be displayed
// on a 6 segment one, all 6 will be displayed
tm1637.Display(rawData);

The maximum size of the buffer is 6.

Segment order

You can change the order of the characters. In some cases, especially when you have displays with 6 segments split with 2 displays of 3, the order may not be the one you expect.

tm1637.CharacterOrder = new byte[] { 2, 1, 0, 5, 4, 3 };

Make sure you have a length of 6 and all numbers from 0 to 5.

Changes from Previous Version

No structural changes between v1.2.662 and v1.2.673.

Adoption Assessment

A verified publisher signal is available. Assess fit from the package's supported frameworks, license and dependency graph rather than popularity alone.

No SPDX license expression is published. Review the license text and your organisation's policy before redistribution.No target framework metadata is available. Confirm compatibility in a representative project before standardising on this package.

Related Guides & Workflows

Learn how to evaluate, integrate, or audit this package in your .NET project.