Just tried TinyCLR Os and 7 Segment and love it!
using GHIElectronics.TinyCLR.Devices.Gpio;
using System;
using System.Collections;
using System.Text;
using System.Threading;
namespace _7SegmentLeds
{
class LDS5463EX
{
const int DIG1_PIN_ID = 11;
const int DIG2_PIN_ID = 8;
const int DIG3_PIN_ID = 7;
const int DIG4_PIN_ID = 5;
const int SEGA_PIN_ID = 10;
const int SEGB_PIN_ID = 6;
const int SEGC_PIN_ID = 3;
const int SEGD_PIN_ID = 1;
const int SEGE_PIN_ID = 0;
const int SEGF_PIN_ID = 9;
const int SEGG_PIN_ID = 4;
const int SEGDP_PIN_ID = 2;
const bool ON = true;
const bool OFF = false;
private GpioPin[] digPins;
private GpioPin[] segPins;
static byte[] FontNumber = { 0b00111111, 0b00000110, 0b01011011, 0b01001111, 0b01100110, 0b01101101, 0b01111101, 0b00000111, 0b01111111, 0b01101111 };
public LDS5463EX(int[] pins) {
digPins = GpioController.GetDefault().OpenPins(new int[] { pins[DIG1_PIN_ID], pins[DIG2_PIN_ID], pins[DIG3_PIN_ID], pins[DIG4_PIN_ID] });
segPins = GpioController.GetDefault().OpenPins(new int[] { pins[SEGA_PIN_ID], pins[SEGB_PIN_ID], pins[SEGC_PIN_ID], pins[SEGD_PIN_ID],
pins[SEGE_PIN_ID], pins[SEGF_PIN_ID], pins[SEGG_PIN_ID], pins[SEGDP_PIN_ID] });
for (var i = 0; i < digPins.Length; i++)
{
digPins[i].SetDriveMode(GpioPinDriveMode.Output);
digPins[i].Write(GpioPinValue.High);
}
for (var i = 0; i < segPins.Length; i++)
{
segPins[i].SetDriveMode(GpioPinDriveMode.InputPullUp);
}
}
private void SetSegment(int pos, bool on)
{
if (on)
{
segPins[pos].SetDriveMode(GpioPinDriveMode.Output);
segPins[pos].Write(GpioPinValue.Low);
}
else
{
segPins[pos].SetDriveMode(GpioPinDriveMode.InputPullUp);
}
}
private void SetDig(int pos, bool on)
{
digPins[pos].Write(on ? GpioPinValue.High : GpioPinValue.Low);
}
public void Clear()
{
for (var i = 0; i < 4; i++)
{
SetDig(i, OFF);
}
for (var i = 0; i < 8; i++)
{
SetSegment(i, OFF);
}
}
public void DrawDp(bool on)
{
for (var i = 0; i < 8; i++)
{
SetSegment(i, on ? i == 7 ? ON : OFF : OFF);
}
for (var i = 0; i < 4; i++)
{
SetDig(i, on ? i == 1 ? ON : OFF : OFF);
}
}
public void DrawNumber(int pos, int number)
{
for (var i = 0; i < 4; i++)
{
var value = (pos == i) ? ON : OFF;
SetDig(i, value);
}
for (var i = 0; i < 8; i++)
{
var value = (FontNumber[number] & (1 << i)) != 0 ? ON : OFF;
SetSegment(i, value);
}
}
}
}