Забавные светодиоды, четыре символа за раз, с Netduino и ShieldStudio
Сегодняшнее сообщение возвращает нас к одной из самых забавных аппаратных штучек для игр – Netduino. Ден Делимарски (Den Delimarsky) с сообщением «Наилучший пример для четырехсимвольного дисплея Netduino ShieldStudio»
Ниже фрагмент сообщения Дена;
«...
Я добавил несколько вещей в обновленный пример:
- Автоматическая инициализация экземпляра I2CDevice при создании экземпляра класса LEDMatrix
- Выполнение автоматической установки устройства при создании экземпляра класса
- Возможность записи единственного символа в одну позицию матрицы с дополнительными эффектами (ShortBlink или LongBlink)
- Возможность прямой записи строки вместо посимвольной передачи
- Поддержка разных способов отображения строки (MarqueeRight, MarqueeLeft, Blocks)
- Встроенные ссылки для некоторых специальных символов (символ денежной единицы, стрелка вверх, стрелка вниз)
- Поддержка записи инвертированных символов (фон/передний план)
Как уже говорилось простой фрагмент кода, позволяющий вывести строку будет выглядеть следующим образом:
LEDMatrix matrix = new LEDMatrix(0×50, 400);
matrix.Clear();
matrix.WriteString("Hello from my sample!", StringEffect.MarqueeRight);
...
Чтобы загрузить решение Visual Studio вам нужно, как минимум, установить Microsoft Visual C# Express 2010 и .NET Micro Framework 4.1. Конечно, вы не сможете развернуть решение без железа, но если все, что вы хотите – это проверить код …
Вот фрагмент кода, выводящий символ:
public void WriteSingleCharacter(char value, MatrixUnit panel, CharEffect effect = CharEffect.None)
{
switch (effect)
{
case CharEffect.None:
{
if (value != '\0')
{
device.Execute(new I2CDevice.I2CTransaction[]
{
I2CDevice.CreateWriteTransaction(new byte[] { (byte)panel, (byte)value })
}, i2ctimeout);
}
else
{
device.Execute(new I2CDevice.I2CTransaction[]
{
I2CDevice.CreateWriteTransaction(new byte[] { (byte)panel, 0x20 })
}, i2ctimeout);
}
break;
}
case CharEffect.ShortBlink:
{
WriteSingleCharacter(value, panel);
Thread.Sleep(500);
WriteSingleCharacter((char)SpecialChar.Empty, panel);
Thread.Sleep(500);
WriteSingleCharacter(value, panel);
break;
}
case CharEffect.LongBlink:
{
WriteSingleCharacter(value, panel);
Thread.Sleep(2000);
WriteSingleCharacter((char)SpecialChar.Empty, panel);
Thread.Sleep(2000);
WriteSingleCharacter(value, panel);
break;
}
}
}
Несколько ссылок, которые могут быть полезны: