Udostępnij za pośrednictwem


Забавные светодиоды, четыре символа за раз, с Netduino и ShieldStudio

Грег Дункан

Сегодняшнее сообщение возвращает нас к одной из самых забавных аппаратных штучек для игр – Netduino. Ден Делимарски (Den Delimarsky) с сообщением «Наилучший пример для четырехсимвольного дисплея Netduino ShieldStudio»

clip_image002

Ниже фрагмент сообщения Дена;

«...

Я добавил несколько вещей в обновленный пример:

  • Автоматическая инициализация экземпляра 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;
                  }
          }

  }

Несколько ссылок, которые могут быть полезны: