Тизер был воспринят консервативно, но положительно, так что продолжаем.
Итак, коробку распаковали, кнопочки потыкали, повтыкали на отладочный вывод при запуске. Круто! Железяка-то работает.
Хотя, с другой стороны, она не делает ничего полезного.
Установку IDE, SDK, и первичную прошивку железки я описывать не буду, т.к. с первыми двумя и так всё ясно, а прошивка — дело специфическое, и хорошо описана производителем.
Disclaimer: Embedded платформу я в своих руках держу впервые. Опыта разработки нету (не думаю, что просмотра hackaday.com и чтения wasm.ru достаточно). Есть только смутные представления. Зато есть опыт написания на C#. Если вы суровый Asm/C эмбедщик и для вас эта история — суровые трудовые будни, то моя статья наверное не для вас.
А я пока что напишу коротенький хеллоу-ворлд!
Открываю студию, выбираю новый проект для ChipworkX Module.
Бодро пишу в main метод
и тут-же получаю
Ээ, проехали. Консолью тут и не пахнет. Мы пойдём другим путём.
— Экран есть?
— Есть!
— Значит будет рисовать картинки.
После недолгого поиска появляется следующая конструкция:
Ресурс Habr это битмап, лежащий в обычном *.resx
Запускаю и лицезрею. Работает, картинку рисует, Хабру привет.
Но нам бы по-интерактивнее.
— Кнопки есть?
— Есть!
— Будем перехватывать прерывания.
После пробега по документации обнаружился класс InterruptPort, который позволяет вешать обработчик прерываний на GPIO пины.
Немножечко курения манов, и был написан код, который при нажати на центральную кнопку делает операцию поднять перо и опустить перо, подмигивая при этом светодиодом (класс OutputPort), а курсорные кнопки соответственно двигают перо по экрану.
Код: pastebin.com/AMF2Th2g
И результат :)
Прошло 3 с небольшим часа. Пока-что результат удволетворительный… На днях напишу чего-нибудь ещё.
P.S.
На обвязке есть акселерометр, так что продолжение эксперимента будет заключаться в общении с сенсором по I2C и отрисовывании катающегося шарика по экрану :)
P.P.S.
Литература:
Beginner's Guide to NETMF
MicroFrameworkProject.com
Итак, коробку распаковали, кнопочки потыкали, повтыкали на отладочный вывод при запуске. Круто! Железяка-то работает.
Хотя, с другой стороны, она не делает ничего полезного.
Что нам необходимо для начала?
- Visual Studio 2010 Express (C# Edition)
- Microsoft .Net Micro Framework 4.1 SDK
- GHI Electronics SDK (это, ясное дело, только для этого семейства железок)
Установку IDE, SDK, и первичную прошивку железки я описывать не буду, т.к. с первыми двумя и так всё ясно, а прошивка — дело специфическое, и хорошо описана производителем.
Среда подготовлена? Поехали!
Disclaimer: Embedded платформу я в своих руках держу впервые. Опыта разработки нету (не думаю, что просмотра hackaday.com и чтения wasm.ru достаточно). Есть только смутные представления. Зато есть опыт написания на C#. Если вы суровый Asm/C эмбедщик и для вас эта история — суровые трудовые будни, то моя статья наверное не для вас.
А я пока что напишу коротенький хеллоу-ворлд!
Открываю студию, выбираю новый проект для ChipworkX Module.
Бодро пишу в main метод
Console.WriteLine("Hello, World!");
и тут-же получаю
Error 1 The name 'Console' does not exist in the current context
Ээ, проехали. Консолью тут и не пахнет. Мы пойдём другим путём.
— Экран есть?
— Есть!
— Значит будет рисовать картинки.
После недолгого поиска появляется следующая конструкция:
public class Program { private static readonly int LCDHeight = SystemMetrics.ScreenHeight; private static readonly int LCDWidth = SystemMetrics.ScreenWidth; private static Bitmap LCD = new Bitmap(LCDWidth, LCDHeight); public static void Main() { Bitmap habr = Resources.GetBitmap(Resources.BitmapResources.Habr); LCD.Clear(); LCD.DrawRectangle(Colors.White, 0, 0, 0, LCDWidth, LCDHeight, 0, 0, Colors.White, 0, 0, Colors.White, 0, 0, ushort.MaxValue); LCD.DrawImage((LCDWidth - habr.Width) / 2, (LCDHeight - habr.Height) / 2, habr, 0, 0, habr.Width, habr.Height); LCD.Flush(); Thread.Sleep(Timeout.Infinite); } }
Ресурс Habr это битмап, лежащий в обычном *.resx
Запускаю и лицезрею. Работает, картинку рисует, Хабру привет.
Но нам бы по-интерактивнее.
— Кнопки есть?
— Есть!
— Будем перехватывать прерывания.
После пробега по документации обнаружился класс InterruptPort, который позволяет вешать обработчик прерываний на GPIO пины.
Немножечко курения манов, и был написан код, который при нажати на центральную кнопку делает операцию поднять перо и опустить перо, подмигивая при этом светодиодом (класс OutputPort), а курсорные кнопки соответственно двигают перо по экрану.
Код: pastebin.com/AMF2Th2g
И результат :)
Прошло 3 с небольшим часа. Пока-что результат удволетворительный… На днях напишу чего-нибудь ещё.
P.S.
На обвязке есть акселерометр, так что продолжение эксперимента будет заключаться в общении с сенсором по I2C и отрисовывании катающегося шарика по экрану :)
P.P.S.
Литература:
Beginner's Guide to NETMF
MicroFrameworkProject.com