Как создать программу для ардуино

В пределах метода draw() мы мы будем отсылать необходимые данные по серийному порту. Для этого используем метод write из библиотеки Processing Serial library. В этом скетче мы передаем ‘1’ при клике мышкой в пределах окна Processing. Кроме того, мы отобразим ее в консоли, чтобы удостовериться, что мы что-то передали. Если мы не кликаем, будет передаваться ‘0’.

myPort.write(‘1’); //отсылаем 1

myPort.write(‘0’); //отсылаем 0

К этому моменту ваш скетч должен выглядеть примерно так:

Processing передает данные 1

После того как вы запустили программу, должен появится вектор-столбец, который содержит 1, если вы кликаете мышкой в пределах окна. Отлично! Но как наш Arduino будет искать эти 1-цы? И что полезного мы можем с ними сделать?

. Arduino принимает данные

Итак, теперь мы будем «отлавливать» 1-цы, которые идут от Processing. Когда мы обнаружим единицу, включим светодиод на 13 пине Arduino, идет (на многих платах Arduino есть встроенный светодиод на 13 пине, так что внешний нам даже не придется подключать)?

Уроки Ардуино. Как написать скетч: многозадачность на millis() и переключение режимов

В верхней части скетча Arduino нам надо объявить две глобальные переменные: одна для получения и хранения данных, которые поступают от Processing, а вторая для того, чтобы объяснить Arduino, к какому пину подключен светодиод.

char val; // данные, полученные с серийного порта

int ledPin = 13; // наш светодиод будет использовать цифровой пин 13

Дальше. В пределах метода setup() мы устанавливаем режим работы пина, к которому подключен светодиод на output (вывод данных). Начинаем обмен данными по серийному порту на скорости 9600 baud.

pinMode(ledPin, OUTPUT); // устанавливаем режим работы пина — OUTPUT

Serial.begin(9600); // начинаем обмен данными со скоростью 9600 bps

В пределах метода loop() будем отслеживать данные, которые поступают на плату через серийный порт. Если мы обнаруживаем ‘1’, мы устанавливаем светодиод в HIGH (включен), если нет (то есть, если нам передается ‘0’), мы выключаем светодиод. В конце цикла делаем небольшую задержку, чтобы Arduino успевал справиться с потоком данных.

val = Serial.read(); // считываем их и передаем на хранение в val

digitalWrite(ledPin, HIGH); // включаем светодиод

digitalWrite(ledPin, LOW); // в противоположном случае отключаем светодиод

delay(10); // ждем 10 миллисекунд до следующей итерации чтения данных

Вот как должен выглядеть ваш код:

Arduino принимает данные 1

Вуаля! После загрузки этого скетча на Arduino можно запускать программу в Processing, которую мы рассмотрели в предыдущей части статьи и включать светодиод на вашем Arduino кликом мыши по окну в Processing!

Рукопожатие (часть 1 — Arduino)

Итак, мы разобрались с тем, как Arduino и Processing могут обмениваться данными через серийный порт. При этом один передает данные, а второй принимает и наоборот. А можем ли мы сделать так, чтобы оба одновременно — и Arduino т Processing передавали и принимали данные? Можем! И назовем мы это «рукопожатием», так как оба согласовываются по времени для передачи и приема данных.

Дальше мы рассмотрим пример, в котором Processing примет ‘Hello, world!’ от Arduino и отправит обратно на наш контроллер 1. В результате на Arduino загорится светодиод. Это означает, что Arduino должен отсылать ‘Hello, world!’ и при этом отслеживать наличие 1-цы от Processing.

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

Как и в примере Serial read, нам нужна переменная для данных, которые поступают на контроллер и переменная для хранения информации о состоянии пина со светодиодом:

char val; // данные, полученные с серийного порта

int ledPin = 13; // пин для светодиода

boolean ledState = LOW; //управляем состоянием светодиода

Так как мы стремимся к максимальной эффективности нашей программы, организуем скетч таким образом, что он будет отслеживать только 1-цы. И каждый раз, когда мы получаем ‘1’, будем включать светодиод. Для этого мы добавили булеву (boolean) переменную, которая имеет два состояния (правда или ложь). В результате у нас отпадает необходимость постоянно отсылать 1 или 0 от Processing. В результате серийный порт прилично разгружается и не передает лишнюю информацию.

Наш метод setup() выглядит практически так же. Единственно , добавлена функция establishContact() ,которую мы рассмотрим дальше. На данном этапе просто укажите ее в коде.

pinMode(ledPin, OUTPUT); // устанавливаем пин в режим OUTPUT

//устанавливаем скорость обмена данными 9600 baud

establishContact(); // отсылаем байт для налаживания контакта, пока ресивер отвечает

Читайте также:
Программа для настройки удаленного рабочего стола

В пределах функции loop мы просто объединяет код из наших предыдущих скетчей. Самое важное и принципиальное изменение — введение булевого значения. Восклицательный знак — ‘!’ В коде означает, что когда мы обнаруживаем единицу, мы меняем булевое значение на противоположное относительно текущего состояния (то есть LOW становится HIGH и наоборот). В пределах условия else мы вставили наш ‘Hello, world!’. То есть мы будем отправлять эту строку только в случае, когда не обнаружим ‘1’.

val = Serial.read(); // считываем их и передаем в переменную val

if(val == ‘1’) //если мы получили 1

Теперь мы добрались до функции establishContact(), которую использовали в методе setup(). Эта функция просто отсылает строку (именно ту, которую мы ожидаем получить в Processing). Если ответ приходит, значит Processing может получить данные.

while (Serial.available() Случайные

  • Датчик атмосферного давления BMP085 и Arduino
  • Автоматический «умный» замок и Arduino
  • Библиотеки для Arduino
  • Распознаем движение и жесты при помощи ПИР датчика и Arduino Nano
  • Видеотрансляция на Youtube с Arduino Yun

Популярные

  • Arduino и цифровой датчик температуры DS18B20
  • Советы для начинающих. Arduino и шаговый двигатель Nema 17
  • Пироэлектрический инфракрасный (PIR) датчик движения и Arduino
  • Драйвер шагового двигателя и двигателя постоянного тока L298N и Arduino
  • Жидкокристаллический дисплей (LCD) 1602 и Arduino

Подписывайтесь на Telegram канал Arduino-DIY и будьте в кусе самых интересных постов и новостей в мире Arduino!

Источник: arduino-diy.com

Как создать приложение для Windows 10 Arduino (для начинающих)

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

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

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

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

Если вы уже достаточно опытны в программировании приложений для Windows или даже ищете простой способ начать программирование в Windows без этого Arduino, попробуйте руководство Райана по созданию простого приложения на Visual Basic.

, Абсолютные начинающие программисты могут захотеть проверить мое программирование 101

Вы должны быть знакомы с некоторыми начинающими проектами 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

Если вы еще этого не сделали, загрузите IDE Arduino с официального сайта 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 добавить проекты

Перейдите туда, куда вы загрузили файлы Remote Wiring с 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.Maker проекты.

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

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

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

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

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

возможности

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

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

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

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

using Microsoft.Maker.serial; using Microsoft.Maker.RemoteWiring;

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

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

UsbSerial connection; RemoteDevice arduino; UInt16 lastvalue;

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

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

connection =new UsbSerial(«VID_2341», «PID_0043»);

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

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

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

arduino = new RemoteDevice(connection); connection.ConnectionEstablished += OnConnectionEstablished; connection.begin(57600, SerialConfig.SERIAL_8N1);

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

Читайте также:
Лучшая программа для видео обоев

Финал только что сообщает, что соединение уже началось со скоростью 57600 бод, используя 8-битную комбинацию.

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

private void OnConnectionEstablished() < // LOGIC HERE >

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

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

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

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

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

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

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

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

private void OnConnectionEstablished() < // enable the on off buttons var action = Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler(() =>< OnButton.IsEnabled = true; OffButton.IsEnabled = true; >)); arduino.pinMode(14, PinMode.ANALOG); arduino.AnalogPinUpdatedEvent += MyAnalogPinUpdateCallback; Debug.WriteLine(arduino.analogRead(14)); >

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

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

arduino.digitalWrite(13, PinState.HIGH);

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

arduino.digitalWrite(13, PinState.LOW);

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

public void MyAnalogPinUpdateCallback(byte pin, UInt16 value) < if(value-lastvalue >5 || lastvalue-value > 5)
Debug.WriteLine(«Pin A» + pin + » is now » + value); var action = Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler(() => < byte num = Convert.ToByte(value / 4); Page.Background = new SolidColorBrush(Windows.UI.Color.FromArgb(255, num, num, Convert.ToByte(255 -num))); >)); > lastvalue = value; >

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

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

Законченный

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

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

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

? Дай мне знать в комментариях.

Источник: helpexe.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru