Рекламное объявление

Microsoft делает ставку на Windows 10, наконец осуществив мечту о приложениях, работающих на кроссплатформенных платформах. В сочетании с официальной поддержкой Arduino в вашем распоряжении новый мощный инструмент: возможность легко создавать универсальные приложения Windows, которые имеют аппаратное соединение с реальным миром.

Вот как начать, даже если вы никогда ранее не программировали приложение для Windows.

Прежде чем читать дальше, ознакомьтесь с демонстрацией того, что мы собираемся сделать.

Должен отметить, что я не использовал Visual Studio и даже не трогал C # около 10 лет назад. Я подхожу к этому с точки зрения новой установки Visual Studio и забыл все, что знаю.

Если вы уже достаточно опытны в программировании приложений для Windows или даже ищете простой способ начать программирование в Windows без этого Arduino, попробуйте Ryan's руководство по созданию простого приложения Visual Basic Как вы можете сделать свое собственное простое приложение с VBAХотите знать, как создать собственное приложение VBA для решения проблем? Используйте эти советы для создания своего собственного программного обеспечения VBA.

instagram viewer
Подробнее . Абсолютные начинающие программисты могут захотеть проверить мои Программирование 101 Основы компьютерного программирования 101 - Переменные и типы данныхПознакомившись и немного поговорив об объектно-ориентированном программировании и о том, где его тезка приходит, я думал, что пришло время пройти через абсолютные основы программирования в неязыковой путь. Эта... Подробнее часть 2 Абсолютные основы программирования для начинающих (часть 2)Во второй части нашего абсолютного руководства по программированию для начинающих я расскажу об основах функций, возвращаемых значениях, циклах и условных выражениях. Убедитесь, что вы прочитали часть 1, прежде чем заняться этим, где я объяснил ... Подробнее ) статья первая.

Вы должны быть знакомы с некоторыми начинающие проекты Arduino 15 отличных проектов Arduino для начинающихЗаинтересованы в проектах Arduino, но не знаете, с чего начать? Эти начинающие проекты научат вас, как начать. Подробнее (и, возможно, даже читать наши Arduino Guide Начало работы с Arduino: руководство для начинающихArduino - это платформа для создания прототипов электроники с открытым исходным кодом, основанная на гибком, простом в использовании аппаратном и программном обеспечении. Он предназначен для художников, дизайнеров, любителей и всех, кто заинтересован в создании интерактивных объектов или сред. Подробнее ), но, вероятно, вы впервые попытаетесь создать настоящий программный продукт для взаимодействия с ним.

Загрузки

Во-первых: вам нужно присоединиться к Программа Windows Insider чтобы получить последнюю предварительную версию Visual Studio 2015и последняя сборка Windows 10 Preview. Сделай это сейчас - это бесплатно. Windows 10 является предварительной версией разработчика и не должна устанавливаться в качестве основной операционной системы. Это чертовски глючит.

  • Присоединяйся к Программа Windows Insiderи загрузите Windows 10 Technical Preview
  • Получите предварительную версию Visual Studio 2015 Community Edition [больше не доступно].

Visual Studio это собственная среда разработки Microsoft, которую мы будем использовать для создания приложения на C # для Windows.

Почему C #? С сильным сходством с Java, это относительно простой язык программирования для начинающих, позволяющий запустить и запустить работающее приложение, но при этом мощный Достаточно того, что вы можете продолжать создавать потрясающие приложения (даже игры: C # - это язык сценариев Unity на выбор - ознакомьтесь с нашим бесплатным электронная книга, Руководство для начинающих по программированию игры с Unity Программирование игры с Unity: руководство для начинающихВ развивающейся среде разработки инди-игр Unity стала стандартом де-факто: его низкая стоимость, простота использования и широкий набор функций делают его идеальным для быстрой разработки игр. Подробнее ).

Если вы еще этого не сделали, загрузите Arduino IDE от официального Arduino.cc сайт, и установите стандартные фирмы на доску. Вы найдете это под Примеры -> Firmata -> Стандарт Фирмата. Это просто превращает его в «тупое» последовательное устройство, которое будет делать то, о чем говорит наше приложение - приложения не будет логика на самой плате, просто интерфейс между нашим приложением и любыми датчиками или устройствами вывода, подключенными к Arduino.

Что касается проводки, вы можете либо прикрепить светодиод непосредственно к контакту 13 и GND, как показано ниже, либо использовать встроенный светодиод. Вам также понадобится переменный резистор (я использовал линейный потенциометр 10 кОм), идущий в A0 (с соответствующими ножками на GND и + 5 В, очевидно).

Arduino-Windows 10-демо

Наконец, загрузите пакет Remote Wiring с GitHub [Больше не доступно]. Это слой, который мы должны добавить, чтобы наше приложение Windows могло общаться с Arduino.

Создать приложение

Идите вперед и откройте Visual Studio. Если вы запускаете его впервые, вам будет предложено войти в систему. Проигнорируйте это, если хотите. выбирать Visual C # как вариант развития и продолжения; В любом случае, подготовка Visual Studio к первому использованию занимает несколько минут.

Создать новый проект, используя шаблон Visual C # -> Пустое приложение (Windows Universal). Я назвал мой «Тест Arduino», но это не имеет значения.

новое универсальное приложение c sharp для Windows

В этот момент я столкнулся с ошибкой, связанной с необходимостью переключения Windows 10 в режим разработчика, если я действительно хотел запустить приложение. Сделайте это, хотя, если вы обнаружите, что ваша сборка Windows 10 не работает с этим параметром, это известная ошибка, и вам нужно используйте редактор групповой политики, чтобы включить режим разработчика.

Затем щелкните правой кнопкой мыши в любом месте Обозреватель решений (это вещь справа) и выберите добавлять -> Существующий проект.

Solution Explorer добавить проекты

Перейдите туда, куда вы загрузили файлы удаленного подключения с Github - если он был разархивирован, это должна быть папка с именем дистанционное подключение-разработки. Внутри вы найдете Microsoft. Maker.win10; и внутри этого вы найдете еще 3 папки. В свою очередь, добавьте каждую из них, перейдя в эти три папки и найдя файл проекта.

Если вы получаете какие-либо сообщения об ошибке «Файл XAML 8.2 не найден», значит у вас неправильная версия Visual Studio или еще не установлены инструменты разработчика. Вернитесь к началу этой статьи и убедитесь, что вы загрузили и установили оба связанных файла Visual Studio.

Эти 3 проекта, которые вы только что добавили, представляют собой просто разные слои интерфейса Arduino. В обозревателе решений щелкните правой кнопкой мыши и выберите зависимости -> Зависимости сборки, вы можете увидеть, какие слои зависят от каких (последовательный не зависит ни от чего; Firmata зависит от серийного номера; RemoteWiring зависит от обоих). Единственное изменение, которое вам нужно сделать, - это выбрать свой проект из выпадающего списка и установить флажки в каждом поле, чтобы указать, что ваш проект зависит от всех этих других проектов.

проверить зависимости

Последний шаг: снова в обозревателе решений щелкните правой кнопкой мыши использованная литература пункт под вашим проектом, и выберите Добавить ссылку. Слева, перейдите к Windows Universalзатем поставьте галочку напротив Microsoft Visual C ++ AppLocal Runtime Package. Пока не закрывайте диалог.

ссылки на проект

Далее перейдите к проектов (также в том же диалоговом окне из списка слева) и установите флажок рядом с каждым из трех Microsoft. производитель проекты.

ссылки производителя

Это было сложнее, чем должно быть, но вам нужно сделать это только один раз; теперь мы можем повеселиться с программированием - обещаю, что это не так страшно.

программирование

Если у вас возникли проблемы, полный код доступен на Pastebin. Тем не менее, я настоятельно рекомендую прочитать примечания ниже, чтобы объяснить, что на самом деле делает код.

Во-первых, нам нужно добавить немного кода, который говорит, что нам нужен USB-порт для связи с Arduino. Найди Package.appxmanifest файл из обозревателя решений, и дважды щелкните, чтобы отредактировать его. Нам нужно вставить сюда некоторый код - технически, мы будем «вставлять дочерний узел», потому что это XML-файл, а просто заменить весь раздел с кодом ниже, так это выглядит так:

возможности

Точный код будет отличаться, если вы используете Bluetooth, или если вы нацеливаетесь на Win8.1 вместо 10, но следующее для Windows 10, USB-соединение.

Перейти к Сложение меню -> Восстановить решениеи убедитесь, что вы не получили никаких ошибок.

Из обозревателя решений разверните MainPage.xaml узел. Двойной щелчок по нему загрузит конструктор форм, к которому мы вернемся позже, но пока откроем MainPage.xaml.cs, которая содержит основную логику нашего приложения.

Добавьте две строки в первом разделе, чтобы указать, что мы будем «использовать» биты Arduino.

используя Microsoft. Maker.serial; используя Microsoft. Чайник. RemoteWiring;

Я также добавил строку, чтобы сказать, что мы будем использовать Система. Диагностика; что позволяет нам использовать Debug. ЕЫпе () функция для вывода отладочных сообщений в IDE.

Прежде всего, давайте определим несколько переменных, которые мы будем использовать повсюду. Добавьте эти строки непосредственно перед public MainPage () объявление функции.

Соединение UsbSerial; RemoteDevice Arduino; UInt16 lastvalue;

Затем перейдем к функции MainPage () - это называется конструктор, и это функция, которая вызывается сразу при создании нашего приложения, поэтому мы используем ее для настройки всего.

Сначала добавьте строку для установки последовательного USB-подключения к определенному USB-устройству (Arduino).

соединение = новый UsbSerial ("VID_2341", "PID_0043");

Обратите внимание, что идентификаторы USB стандартного Arduino Uno уже закодированы в блоке, но вы можете проверить это из Диспетчер устройств -> Порты (COM и LPT) -> Arduino Uno -> подробности вкладка -> Аппаратные идентификаторы.

проверьте USB HID PID

Затем добавьте следующие строки сразу после этого.

arduino = новый RemoteDevice (соединение); подключение. ConnectionEstablished + = OnConnectionEstablished; connection.begin (57600, SerialConfig. SERIAL_8N1);

Несколько вещей происходят здесь. Во-первых, мы создаем объект RemoteDevice - помните, что это слой, который дает нам кучу команд Arduino, - и присваиваем ему имя переменной «arduino». Следующая строка присоединяется к событию ConnectionEstablished, скажем, «После того, как USB-соединение успешно установлено, запустите функцию OnConnectionEstablish ()».

Финал только говорит, что соединение уже установлено, со скоростью 57600 бод, используя 8N1 битовый паттерн.

Вам также необходимо создать эту функцию OnConnectionEstablished (), поэтому выйдите за пределы функции MainPage () и просто создайте пустую функцию следующим образом.

закрытое пространство OnConnectionEstablished () { // ЛОГИКА ЗДЕСЬ. }

Вернитесь к дизайнеру форм, о котором я упоминал ранее (если вы забыли, как: дважды щелкните MainPage.xaml из обозревателя решений). Создайте две кнопки. Для этого откройте вкладку «Панель инструментов», которую вы найдете закрепленной вертикально в левой части экрана. Перетащите две кнопки на страницу, затем пометьте одну На и один от.

кнопки добавления дизайнера форм

Выберите первую кнопку, затем в поле «Свойства» в правом нижнем углу назовите ее «OnButton». Нажмите на маленький значок молнии - это список событий и действий, который используется для указания того, что происходит при взаимодействии элементов формы. Введите «OnButtonClick» в щелчок поле.

Когда вы нажимаете ввод, он автоматически создает код для этого конкретного события кнопки и загружает стандартное представление кода. Вернитесь назад к конструктору форм и сделайте то же самое для кнопки «Выкл.», Но на этот раз назовите ее «OffButton» и «OffButtonClick». Пока вы там, идите вперед и назовите форму главного окна за ней как «Страница» - мы будем использовать это позже. Теперь у вас должно быть что-то похожее на скриншот ниже:

дизайнер создает события

Снова вернитесь к дизайнеру и снова для каждой кнопки установите включен собственность на Ложь. Вы можете сделать это, введя свойство непосредственно в представление кода XAML, или вы можете найти это флажок в окне Свойства (нажмите на гаечный ключ, если вы все еще в представлении действий) - он находится под расширенный общий категория недвижимости.

Это не важно, но рекомендуется отключать кнопки, пока мы не убедимся, что Arduino подключен и подключен.

Чтобы снова включить их, добавьте следующее в функцию OnConnectionEstablished (). Пока не беспокойтесь о точном значении кода, это всего лишь способ, которым вы должны обрабатывать обновления форм в современных приложениях Windows, чтобы обеспечить хорошую производительность. Как только мы подключились к Arduino, мы установили Включен свойство кнопок к истине.

private void OnConnectionEstablished () {// включить кнопки включения / выключения var action = Dispatcher. RunAsync (Windows. UI.Core. CoreDispatcherPriority. Обычная, новая винда. UI.Core. DispatchedHandler (() => {OnButton. IsEnabled = true; OffButton. IsEnabled = true; })); arduino.pinMode (14, PinMode. АНАЛОГ); Arduino. AnalogPinUpdatedEvent + = MyAnalogPinUpdateCallback; Debug. WriteLine (arduino.analogRead (14)); }

Вы также увидите более привычный оператор pinMode (), который говорит, что у нас есть аналоговый вход на контакте 14 (есть 13 цифровых контактов, поэтому A0 начинает считать с 14). Затем мы получили еще одно объявление события - когда значение аналогового вывода обновится, вызовем функцию MyAnalogPinUpdateCallback.

Наконец, нам нужно отредактировать события нажатия кнопки и решить, что произойдет, когда изменится аналоговый вход. Давайте начнем с кнопок. Мы можем взаимодействовать с Arduino, используя имена функций, подобные обычному коду Arduino, следующим образом:

arduino.digitalWrite (13, PinState. ВЫСОКАЯ);

Вставьте это для события onButton, и это для offButton:

arduino.digitalWrite (13, PinState. НИЗКИЙ);

Просто. Аналоговый вход от Arduino немного сложнее, но вот что я придумал.

public void MyAnalogPinUpdateCallback (вывод байта, значение UInt16) {if (value-lastvalue> 5 || lastvalue-value> 5) {
Debug. WriteLine («Pin A» + pin + «is now» + value); var action = Dispatcher. RunAsync (Windows. UI.Core. CoreDispatcherPriority. Обычная, новая винда. UI.Core. DispatchedHandler (() => {byte num = Convert. ToByte (значение / 4); Page. Фон = новый SolidColorBrush (Windows. UI.Color. FromArgb (255, число, число, конвертировать. ToByte (255 -num))); })); } lastvalue = значение; }

Обратите внимание, что я сохраняю предыдущее значение, которое мы получили от вывода, в переменной lastValue; это позволяет нам проверить, насколько сильно изменяется значение, и реагировать, только если разница значительна (своего рода сглаживание сигнала). Если он изменяется в любом направлении более чем на 5 (0-1024 - полный диапазон значений), то мы реагируем, изменяя значение цвета фона RGB элемента Page.

Поскольку у нас есть только один номер, с которым я работал, и я спешил, я немного выдумал здесь три цифры, необходимые для R, G и B. Вы, вероятно, можете придумать что-нибудь намного красивее.

Законченный

Arduino Windows 10 завершена

Вот и все - запустите код, и вы должны увидеть нечто похожее на скриншот выше. Кнопки включают и выключают светодиод, а переменный резистор меняет фон. Если у вас возникли проблемы, не забудьте полный код здесь.

Теперь, когда вы можете написать свои собственные приложения для Windows 10, которые взаимодействуют с Arduino, что вы будете делать? Возможно контроллер домашней автоматизации Руководство по домашней автоматизации с Raspberry Pi и ArduinoРынок домашней автоматизации наводнен дорогими потребительскими системами, несовместимыми друг с другом и дорогостоящими в установке. Если у вас есть Raspberry Pi и Arduino, вы можете добиться того же в ... Подробнее ? Дай мне знать в комментариях.

Джеймс имеет степень бакалавра в области искусственного интеллекта и сертифицирован CompTIA A + и Network +. Он является ведущим разработчиком MakeUseOf и проводит свое свободное время за игрой в VR-пейнтбол и настольные игры. Он строит компьютеры с детства.