Remotexy flprog: FLProg + RemoteXY – FLProg

Содержание

FLProg + RemoteXY – FLProg

FLProg очень удобная программа для взаимодействия с миром микроконтроллеров.
А если использовать готовые сервисы для удаленного управления, такие например как RemoteXY, то перед Вами открываются возможности, ограниченные только фантазией и кругозором пользователя! Для взаимодействия с FLProg не требуется глубоких познаний языков программирования, достаточно разбираться в элементарной логике.
Однако для успешного представления своей идеи с помощью прекрасной программы FLProg (как наверно и с любой другой программой) и реализации этой идеи “в железе”, знания об структуре программного кода, назначении определенных его разделов и принципах их работы, а также о структуре и размерах памяти контроллера- будут очень полезны.
Не лишним будет также изучение такого могучего инструмента как язык программирования “С” или его урезанной версии “С++”. Хотя-бы поверхностные знания этого языка, будут очень полезны при создании “пользовательских блоков”, с помощью которых можно сделать свой код более компактным и читаемым для создателя. “Блок пользователя”- настолько многогранный инструмент, что его возможности ограничены лишь Вашей потребностью и фантазией.

При написании собственного программного кода следует помнить о том, что в сущности это обычная математика и изложенные с её помощью алгоритмы действий для микроконтроллера.
Следует не забывать о том, что все числа конечны и имеют свой предел. Разные типы данных имеют различные границы своего существования которые чётко обозначены в языке программирования, выход за эти границы может привести к непредсказуемому результату! Нужно помнить о возможном переполнении, предвидя не допускать его, заранее прописывать варианты действий в таком случае. В связи с этим, с осторожностью использовать функции, команды и блоки использующие временные интервалы (millis(),micros(), таймеры и генераторы), особое внимание следует обратить на delay(). По мере своих расширяющихся возможностей стараться понять суть написанного на языке “С++”, перед заливкой кода в контроллер.
Не следует забывать об очередности выполнения отдельных алгоритмов и о времени необходимом на их выполнение, очень в этом помогает кнопочка “порядок компиляции блоков”. Иногда для устранения ошибки в коде достаточно “вырезать участок кода” и “вставить” его без изменений, чуть ниже и правее, отложив выполнение этого участка на “чуть позже”. В связи с этим рекомендуется разбивать код на отдельные фрагменты размещённые на разных “платах” и выполнять эти фрагменты только в случае необходимости, а не каждый цикл исполнения программы. Проще говоря не забывать о синхронизации. Тем самым экономя время исполнения кода и минимизируя проблемы связанные с недостатком этого времени в других участках кода на исполнение которых времени требуется больше. К таким время затратным участкам кода можно отнести процедуры с аналоговыми входами/выходами, прием/передача данных, работа с EEPROM. Последняя заслуживает особого внимания в связи с ограничениями на количество раз записей в одну ячейку памяти.
Не взирая на то, что программа относительно молодая и разработчикам есть ещё над чем поработать, я пользуюсь ей регулярно и с удовольствием. Считаю, что это очень удачный продукт, один из лучших с моей точки зрения. Всем его рекомендую и приобщил к нему нескольких начинающих ,но очень перспективных пользователей.
Спасибо Вам, уважаемые создатели FLProg!


Publication author

1 Comments: 0Publics: 1Registration: 26-01-2020

Инструкция по прошивке модуля ESP8266 для работы с сервисом RemoteXY – FLProg

Для прошивки модуля необходимы  преобразователь USB -> UART,  либо плата Arduino c USB на борту. Обратите внимание что модуль надо питать от 3.3 вольт, поэтому преобразователь должен иметь выход на такое напряжение или  необходимо использовать дополнительный стабилизатор. Варианты подключения преобразователя.

Подключаем модуль в соответствии с таблицей.

ESP8266 Проеобразователь USB -> UART Arduino
VCC 3.3V 3.3v
CH_PD 3.3V 3.3v
RX TX RX0(D0)
TX RX TX0(D1)
CPIO 0 GND GND
GND GND GND

Обратите внимание, что в случае Arduino RX и TX подключаются напрямую, а не накрест как в случае преобразователя. Так же на Arduino необходимо посадить контакт Reset на GND что бы работа контроллера не мешала прошивке. Подключение CPIO 0 к GND переводит модуль ESP в режим программирования.

Затем скачиваем архивы:

Архив прошивки: https://yadi.sk/d/nXgqo6V4qechd
Архив программы для прошивки: https://yadi.sk/d/hqCFssdhqeaMd

Распаковываем архивы. Папку с прошивкой желательно положить, так что бы в пути к ней не было русских символов.

Запускаем программу прошивки.

Заполняем поля программы

 

Сначала выбираем файл из папки с архивом (1), а затем задаём адрес начала для него (2). Всё в соответствии со скриншотом. Затем настраиваем FLASH SIZE

Установить 8 Mbit. Почему не знаю, так написано в файле приложенном к прошивке (https://yadi.sk/i/KfA73H5tqefBx ). И это работает.
Выбрать компорт который создался при подключении преобразователя или ардуинки

И нажать пуск. В окне терминала пойдёт процесс прошивки. По окончании вместо IDLE появится FINISH. Программу можно закрывать.  После этого необходимо отключить ESP от питания и отключить  CPIO 0 от GND (перевести ESP в нормальный режим)

Добавил: support


Publication author

69 Comments: 26Publics: 76Registration: 21-12-2017

FLProg + RemoteXY = Беспроводная клавиатура для компьютера на Вашем телефоне / Хабр

У меня дома сложилась интересная ситуация. Телевизор в спальне подключен к компьютеру расположенному в другой комнате, и для того что бы жена могла посмотреть очередную серию сериала (хотя у меня есть андроидная приставка, которая стоит рядом с телевизором, она предпочитает смотреть с компа), приходится приложить достаточно много усилий. В виду присутствия детей, беспроводные мыши и клавиатуры у нас не приживаются. Я давно с интересом присматривался к возможности Arduino Leonardo прикидываться мышкой и клавиатурой, и когда эта плата пришла ко мне, реализовал данную возможность в программе FLProg версии 2.2. В паре с возможностями проекта RevoteXY получилась очень интересная штука. Для начала видео работы получившегося устройства.

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

Сейчас на сайте RemoteXY появилась возможность делится своими проектами, и вот ссылка на мой проект для рассматриваемого в этом уроке устройства. Проект состоит из четырёх экранов.

Первый экран – управление мышью.

Для управления перемещением мыши служит джойстик. Управление с помощью него очень напоминает управление с помощью той штуки, которая торчала посередине клавиатуры на известном «ThinkPad T41».

У меня достаточно долго такой был, так что опыт есть. Разработчики проекта RemoteXY обещали сделать новый элемент – «Сенсорная панель», с помощью которой можно будет полностью имитировать тачпад ноутбука. Когда это произойдёт в данном проекте я заменю джойстик на него. Слайдер в правой части экрана имитирует колесо прокрутки. Чем сильнее его сдвиг от центра, тем быстрее будет крутиться колесо виртуальной мышки.

Три столбца кнопок в левой части экрана имитируют разные нажатия на кнопки виртуальной мыши. Каждый столбец отвечает за свою кнопку – левую, среднюю, и правую соответственно. Верхний ряд кнопок (с символом “P”) имитирует обычное нажатие. То есть при нажатии на эту кнопку, будет нажата соответствующая кнопка виртуальной мыши, при отпускании — отпущена. Второй ряд (с символом “PF”) – имитирует нажатие с фиксацией. При первом нажатии на эту кнопку, кнопка виртуальной мыши будет нажата, при втором – отпущена. Это удобно при перетаскивании окон например. Навели мышь на заголовок окна, нажали кнопку “PF” (закрепили окно к мышке), перетащили окно, ещё раз нажали “PF” (отпустили окно). Ну а третий ряд (с символом “C”) – клик по соответствующей кнопке виртуальной мыши.

Второй экран – английская клавиатура.

Тут объяснять особенно нечего. Кнопочка “Caps” включает ввод прописных символов, кнопка “Shft”включает прописные символы на один символ. После ввода одного символа она сбрасывается.

Тут то же все понятно. Клавиши “Caps” и “Shift” работают так же как и на предыдущем экране.

Тут есть небольшая тонкость. В онлайн редакторе RemoteXY обнаружилась небольшая бага. Если в надписи на кнопке использовать символ “\” то проект не сохраняется и не обрабатывается. Поэтому для кнопки этого символа я использовал надпись “not/”. Ну не придумал я ничего лучше.

После создания проекта на сайте RemoteXY необходимо получить код для загрузки в блок “RemoteXY” в проекте FLProg. Для этого в свойствах проекта RemoteXY выбираем среду программирования – FLProg.

Код, полученный на сайте RemoteXY для данного урока

REMOTEXY_MODE__SOFTSERIAL
REMOTEXY_SERIAL_RX 8
REMOTEXY_SERIAL_TX 9
REMOTEXY_SERIAL_SPEED 9600
[128,5,144,5,6,8,4,5,32,41
,11,47,47,7,1,4,48,92,11,7
,50,7,1,1,1,1,18,12,12,7
,1,80,0,1,1,14,18,12,12,7
,1,80,0,1,1,27,18,12,12,7
,1,80,0,1,1,1,32,12,12,7
,1,80,70,0,1,1,14,32,12,12
,7,1,80,70,0,1,1,27,32,12

,12,7,1,80,70,0,1,1,1,47
,12,12,7,1,67,0,1,1,14,47
,12,12,7,1,67,0,1,1,27,47
,12,12,7,1,67,0,1,1,1,22
,8,8,6,2,81,0,1,1,10,22
,8,8,6,2,87,0,1,1,19,22
,8,8,6,2,69,0,1,1,28,22
,8,8,6,2,82,0,1,1,37,22
,8,8,6,2,84,0,1,1,46,22
,8,8,6,2,89,0,1,1,55,22
,8,8,6,2,85,0,1,1,64,22
,8,8,6,2,73,0,1,1,73,22
,8,8,6,2,79,0,1,1,82,22
,8,8,6,2,80,0,1,1,1,31
,8,8,6,2,65,0,1,1,10,31
,8,8,6,2,83,0,1,1,19,31
,8,8,6,2,68,0,1,1,28,31
,8,8,6,2,70,0,1,1,37,31
,8,8,6,2,71,0,1,1,46,31
,8,8,6,2,72,0,1,1,55,31
,8,8,6,2,74,0,1,1,64,31
,8,8,6,2,75,0,1,1,1,40
,8,8,6,2,90,0,1,1,10,40
,8,8,6,2,88,0,1,1,19,40
,8,8,6,2,67,0,1,1,28,40
,8,8,6,2,86,0,1,1,37,40
,8,8,6,2,66,0,1,1,46,40
,8,8,6,2,78,0,1,1,55,40
,8,8,6,2,77,0,1,1,1,49
,98,13,6,2,0,1,1,73,31,8
,8,6,2,76,0,1,1,91,22,8
,8,6,2,60,0,1,1,82,31,17
,17,6,2,69,110,116,101,114,0,1
,1,64,40,8,8,6,2,44,0,1
,1,73,40,8,8,6,2,46,0,1
,1,1,16,17,5,6,2,83,104,105
,102,116,0,1,1,7,10,11,5,6
,2,67,97,112,115,0,1,1,1,25
,7,7,0,3,208,153,0,1,1,8
,25,7,7,0,3,208,166,0,1,1
,15,25,7,7,0,3,208,163,0,1
,1,22,25,7,7,0,3,208,154,0
,1,1,29,25,7,7,0,3,208,149
,0,1,1,43,25,7,7,0,3,208
,147,0,1,1,57,25,7,7,0,3
,208,169,0,1,1,78,25,7,7,0
,3,208,170,0,1,1,36,25,7,7
,0,3,208,157,0,1,1,64,25,7
,7,0,3,208,151,0,1,1,71,25
,7,7,0,3,208,165,0,1,1,50
,25,7,7,0,3,208,168,0,1,1
,86,25,13,7,0,3,60,0,1,1
,1,49,98,13,0,3,0,1,1,1
,41,7,7,0,3,208,175,0,1,1
,9,41,7,7,0,3,208,167,0,1
,1,17,41,7,7,0,3,208,161,0
,1,1,25,41,7,7,0,3,208,156
,0,1,1,33,41,7,7,0,3,208
,152,0,1,1,41,41,7,7,0,3
,208,162,0,1,1,49,41,7,7,0
,3,208,172,0,1,1,57,41,7,7
,0,3,208,145,0,1,1,65,41,7
,7,0,3,208,174,0,1,1,1,33
,7,7,0,3,208,164,0,1,1,9
,33,7,7,0,3,208,171,0,1,1
,17,33,7,7,0,3,208,146,0,1
,1,25,33,7,7,0,3,208,144,0
,1,1,33,33,7,7,0,3,208,159
,0,1,1,41,33,7,7,0,3,208
,160,0,1,1,49,33,7,7,0,3
,208,158,0,1,1,57,33,7,7,0
,3,208,155,0,1,1,65,33,7,7
,0,3,208,148,0,1,1,73,33,7
,7,0,3,208,150,0,1,1,81,33
,7,7,0,3,208,173,0,1,1,73
,41,7,7,0,3,44,0,1,1,81
,41,7,7,0,3,46,0,1,1,89
,33,10,15,0,3,69,110,116,101,114
,0,1,1,7,13,11,5,0,3,67
,97,112,115,0,1,1,1,19,17,5
,0,3,83,104,105,102,116,0,1,1
,1,13,9,8,5,4,49,0,1,1
,11,13,9,8,5,4,50,0,1,1
,21,13,9,8,5,4,51,0,1,1
,41,13,9,8,5,4,53,0,1,1
,51,13,9,8,5,4,54,0,1,1
,61,13,9,8,5,4,55,0,1,1
,91,13,9,8,5,4,48,0,1,1
,81,13,9,8,5,4,57,0,1,1
,71,13,9,8,5,4,56,0,1,1
,31,13,9,8,5,4,52,0,1,1
,32,49,68,13,5,4,0,1,1,51
,40,9,8,5,4,60,0,1,1,61
,40,9,8,5,4,39,0,1,1,71
,40,9,8,5,4,34,0,1,1,1
,31,9,8,5,4,95,0,1,1,91
,22,9,8,5,4,60,60,0,1,1
,41,40,9,8,5,4,62,0,1,1
,31,40,9,8,5,4,125,0,1,1
,21,40,9,8,5,4,123,0,1,1
,11,40,9,8,5,4,93,0,1,1
,1,40,9,8,5,4,91,0,1,1
,51,22,9,8,5,4,38,0,1,1
,61,31,9,8,5,4,124,0,1,1
,51,31,9,8,5,4,110,111,116,47
,0,1,1,41,31,9,8,5,4,47
,0,1,1,31,31,9,8,5,4,61
,0,1,1,21,31,9,8,5,4,45
,0,1,1,11,31,9,8,5,4,43
,0,1,1,71,31,9,8,5,4,63
,0,1,1,1,22,9,8,5,4,33
,0,1,1,11,22,9,8,5,4,64
,0,1,1,21,22,9,8,5,4,35
,0,1,1,31,22,9,8,5,4,36
,0,1,1,41,22,9,8,5,4,94
,0,1,1,61,22,9,8,5,4,42
,0,1,1,71,22,9,8,5,4,40
,0,1,1,81,22,9,8,5,4,41
,0,1,1,81,40,9,8,5,4,44
,0,1,1,91,40,9,8,5,4,46
,0,1,1,91,31,9,8,5,4,69
,110,116,101,114,0,1,1,81,31,9
,8,5,4,37,0,1,1,1,49,9
,8,5,4,58,0,1,1,11,49,9
,8,5,4,59,0,1,1,21,49,9
,8,5,4,126,0,65,10,1,10,5
,5,2,2,65,10,1,13,5,5,2
,3,65,9,1,1,5,5,2,2,65
,9,1,1,5,5,2,3,65,9,1
,1,5,5,2,4,131,1,82,1,17
,6,7,1,77,111,117,115,101,0,131
,0,64,1,17,6,6,2,69,110,0
,131,0,46,1,17,6,0,3,208,160
,209,131,209,129,0,131,0,28,1,17
,6,5,4,49,46,46,57,0];
input signed char joystick_1_x; /* =-100..100 координата x положения джойстика */
input signed char joystick_1_y; /* =-100..100 координата y положения джойстика */
input signed char slider_1; /* =-100..100 положение слайдера */
input unsigned char pressL; /* =1 если кнопка нажата, иначе =0 */
input unsigned char PressM; /* =1 если кнопка нажата, иначе =0 */
input unsigned char PressR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char pressLF; /* =1 если кнопка нажата, иначе =0 */
input unsigned char pressMF; /* =1 если кнопка нажата, иначе =0 */
input unsigned char pressRF; /* =1 если кнопка нажата, иначе =0 */
input unsigned char ClickL; /* =1 если кнопка нажата, иначе =0 */
input unsigned char ClickM; /* =1 если кнопка нажата, иначе =0 */
input unsigned char ClickR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bQ; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bW; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bE; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bT; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bY; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bU; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bI; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bO; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bP; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bA; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bS; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bD; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bF; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bG; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bH; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bJ; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bK; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bZ; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bX; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bC; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bV; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bB; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bN; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bM; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSpace; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bL; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bBacspace; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bEnter; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bZap; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bTochka; /* =1 если кнопка нажата, иначе =0 */
input unsigned char ShiftEn; /* =1 если кнопка нажата, иначе =0 */
input unsigned char CapsEn; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bQR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bWR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bER; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bRR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bTR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bUR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bOR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bTverdR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bYR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bPR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bXXR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bIR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bBacspaceR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSpaceR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bZR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bXR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bCR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bVR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bBR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bMR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bRusBR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bRusUR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bAR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bDR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bFR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bGR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bHR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bJR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bKR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bLR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bRusGR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bRusER; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bZapR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bTochkaR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bEnterR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char CapsRus; /* =1 если кнопка нажата, иначе =0 */
input unsigned char ShiftRus; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum1; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum2; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum3; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum5; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum6; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum7; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum0; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum9; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum8; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum4; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSpaceSim; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim24; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim25; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim26; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim10; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bBacspaceSim; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim23; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim22; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim21; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim20; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim19; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim6; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim16; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim15; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim14; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim13; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim12; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim11; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim17; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim1; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim2; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim3; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim4; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim5; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim7; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim8; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim9; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim27; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim28; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bEnterSim; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim18; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim29; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim30; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim31; /* =1 если кнопка нажата, иначе =0 */
output unsigned char IsShiftEn_g; /* =0..255 яркость зеленого цвета индикатора */
output unsigned char IsShiftRus_g; /* =0..255 яркость зеленого цвета индикатора */
output unsigned char hasEngSim_b; /* =0..255 яркость синего цвета индикатора */
output unsigned char hasRusSim_b; /* =0..255 яркость синего цвета индикатора */
output unsigned char hasSpecSim_b; /* =0..255 яркость синего цвета индикатора */

С сайтом RemoteXY мы закончили. Переходим к проекту на FLProg.

Прикидываться стандартной (то есть не требующей специальных драйверов) мышью и клавиатурой могут контроллеры Arduino Leonardo (проверено), Arduino DUE (поддержка данного контролера появилась с версии 2.3 — проверено), и Arduino Micro (теоритически, ещё не пришла, жду что бы проверить).

Проект FLProg для данного урока можно скачать здесь . В качестве устройтва связи с телефоном используется модуль блютуз HC-05. Подключён он в соответствии с таблицей.

Здесь присутствует очень большой блок “RemoteXY” который обеспечивает связь с телефоном. Для его настройки необходимо загрузить в него код полученный с сайта проекта RemoteXY. Процесс загрузки подробно описан в информации к блоку (свойства блока -> закладка “Информация”), поэтому не будем здесь её дублировать. Отмечу только для тех, кто работает в версии FLProg 2.3 и младше. В этих версиях есть небольшая бага. Если при создании проекта на сайте RemoteXY в настройках выбрать порт который отсутствует или занят в проекте в который будет производится загрузка описания, то при загрузке произойдёт падение программы. Что бы этого избежать, необходимо СНАЧАЛА выбрать в настройках блока свободный порт, а ЗАТЕМ загружать описание. В более поздних версиях программы FLProg эта ошибка исправлена.

Блоки CD (шифратор) служат для определения номера нажатой кнопки. Они выдают на своём выходе номер входа на котором появилась логическая 1. В случае отсутствия лог. 1 на всех входах, на выходе этого блока 0.

Здесь мы из данных полученных с телефона детектируем направление перемещения мыши и колеса. Зону нечувствительности я выбрал 5 едениц (при максимальном изменении сигнала от джойстика и слайдера 0-100 в каждую сторону). В принципе для улучшения работы с мышкой этой величиной можно поиграться. Так же здесь определяется величина шага (скорость перемещения мыши или прокрутки). Параметрами блоков “Scale” так же можно поиграть для более комфортного управления мышью.

Здесь мы непосредственно отправляем команды на перемещение виртуальной мыши. Для этого используем новый блок “Mouse move”. Каждый из блоков отправляет команду на перемещение мыши в определённом направлении каждые 10мс (задаётся в настройках блока), на шаг, рассчитанный в предыдущей плате при наличии высокого уровня на входе “Send”.

Здесь так же используется новый блок “Mouse wheel”. Тот блок отправляет команду на поворот колеса прокрутки виртуальной мыши. Здесь для достижения эффекта плавности используется другой (отличный от перемещения мыши) принцип. При наличии высокого уровня на входе “Send” блок передает на виртуальную мышь команду на поворот колеса прокрутки на один шаг, но с периодичностью рассчитанной на плате 2. Эта периодичность зависит от положения слайдера на телефоне и меняется от 200 миллисекунд до 5 миллисекунд при изменении значения получаемого со слайдера от 5 (зона нечувствительности) до 100 (крайнее положение).

Здесь используется блок “MousePressKey”. При высоком уровне на входе “Send” он держит нажатой выбранную в настройках кнопку виртуальной мыши, при низком – отпускает её. Для реализации эффекта нажатия с фиксацией используются триггеры ТТ (счётные триггеры). По первому переднему фронту на своём входе они переводят свой выход в состояние лог. 1 а при втором сбрасывают его в 0. И так по кругу.

Здесь используется блок “MouseClickKey”, который по переднему фронту на входе “Send” производит короткий клик на выбранную в настройках блока кнопку виртуальной мыши.

Здесь используются блоки “KeyboardStatus” и “MouseStatus” которые при высоком уровне на входе “Status” включают виртуальные клавиатуру и мышь соответственно, а при низком уровне – выключают их. В данной схеме для управления включением и отключением служит сигнал наличия соединения телефона с ардуинкой. Он формируется на выходе “CS” блока “RemoteXY” (плата 1). Кроме этого при наличии соединения мы зажигаем встроенный в плату ардуино светодиод (пин 13).

Здесь определяется факт нажатия кнопки на одной из клавиатур в приложении на телефоне, и на какой конкретно клавиатуре была нажата кнопка – русской или английской. Кроме того формируются сигналы для зажигания светодиода расположенного правом верхнем углу каждой из клавиатур приложения на телефоне. Этот светодиод показывает, что сигнал о нажатии кнопки дошёл до контроллера. Я использовал его при наладке, но решил оставить его и в финальной версии приложения.

Здесь определяется необходимость ввода прописного символа. Передний фронт нажатия кнопки “Shift” в приложении на телефоне устанавливает SR тригер в состояние лог.1. После окончания ввода символа (задний фронт сигнала наличия нажатого символа) тригер сбрасывается в 0.
Каждое нажатие кнопки “Caps” в приложении на телефоне инвертирует работу кнопки “Shift”. То есть в начальном положении основное состояние ввода – строчные символы, а при нажатии кнопки “Shift” вводится один прописной символ, то после однократого нажатия кнопки “Caps” режим меняется. Основными становятся прописные буквы, а при нажатии кнопки “Shift” вводится один строчный символ. При повторном нажатии кнопки “Caps” ввод переводится в основной режим. Кроме того здесь формируется сигнал для зажигания индикатора “Shift” в приложении на телефоне.

Здесь из номера нажатой на клавиатуре в приложении на телефоне кнопки формируется код символа этой кнопки. Это делается с помощью блока “Code table”этот блок выдаёт на выходе “Q” код, номер которого в загруженной в блоке таблице соответствует значению на входе “I”.

Обратите внимание, что и для русских символов и для английских символов используется одна таблица кодов. Дело в том, что библиотека Keybord понимает только однобайтовые коды, и реально нажимает кнопку виртуальной клавиатуры на которой написан символ с переданным ей кодом. Для ввода русских символов метод ввода на компьютере принудительно переключается на русский при их вводе. Как это сделано рассмотрим на следующей плате.

Здесь используются два блока “SequenceKeybord”. Эти блоки по переднему фронту на входе “Send” выполняют сценарий действий с клавиатурой, который был сконфигурирован при настройке блока. Именно с помощью этого блока мы можем настроить ввод русских или английских символов, а так же переключение строчных или прописных символов. Но для этого так же требуется некоторая настройка компьютера к которому подключено наше устройство. Надо настроить сочетание клавиш для включения русских и ангдийских раскладок. Это делается в панели управления компьютера.

Для данного устройства я настроил включение английского языка с помощью клафиш CTRL+1 а русского CTRL+0. Именно эти комбинации и используются блоках сценария.
Рассмотрим сценарий верхнего блока.

Сценарий выполняется по шагам сверху вниз по переднему фронту на входе “Send” (Когда появился сигнал наличия нажатого символа на клавиатуре приложения в телефоне). На первом шаге на виртуальной клавиатуре нажимается и удерживается кнопка CTRL. На втором шаге производится короткое нажатие на кнопку, код который подан на вход “Code Step 2”. В случае если нажатие было на русской клавиатуре это будет 48 (код символа 1) а если на английской – 49 (код символа 0). На третьем шаге отпускается кнопка CTRL. Таким образом, мы переключили язык ввода на нужный нам для ввода данного символа.

Выполнение следующего шага зависит от наличия высокого уровня на входе “Activity Step 4”. Он возникает при активном режиме ввода прописных символов. В этом случае шаг 4 выполняется, и нажимается и удерживается кнопка “Shift” на виртуальной клавиатуре. Таким образом производится ввод прописных символов.

Ну и на последнем шаге нажимается и удерживается кнопка виртуальной клавиатуры, код который приходит на вход “Code Step 5” (код нажатой нами кнопки на клавиатуре в приложении на телефоне).

При пропадании сигнала наличия нажатой кнопки на клавиатуре в приложении на телефоне, за счет инверсии на входе нижнего блока сценария, происходит выполнение сконфигурированного в нём сценария.

Сначала мы отпускаем ранее нажатую кнопку символа, а затем отпускаем кнопку “Shift”

Здесь аналогично плате 10 формируем сигнал о наличии нажатой кнопке на клавиатуре спецсимволов и цифр в приложении на телефоне, и код этой кнопки.

При появлении сигнала наличия нажатой клавише на клавиатуре спецсимволов в приложении на телефоне выполняется сценарий, сконфигурированный в блоке “SequenceKeyboard”. В нём мы сначала переводим способ ввода на английский (нажатие клавиши “CTRL” → нажатие клавиши “1” → отпускание клавиши “CTRL” ), а затем нажимаем необходимую символную клавишу. При пропадании сигнала наличия нажатой кнопки, выполняется блок однократного воздействия на клавиатуру “OneKeyboard” который выполняет одно запрограммированное в настройках действие. В данном случае отпускает ранее нажатую клавишу специального символа.

После компиляции данный проект занимает чуть более половины памяти контроллера Arduino Leonardo что позволяет произвести ещё различные доработки данного проекта.
Удачного Вам творчества.

FLProg + RemoteXY = Wireless keyboard for computer on your phone / Sudo Null IT News

I had an interesting situation at home. TV in the bedroom is connected to a computer located in another room, and in order for the wife to watch the next episode of the series (although I have an android console that stands next to the TV, she prefers to watch from the computer), it takes a lot of effort. In view of the presence of children, wireless mice and keyboards do not take root. I have long been watching with interest the possibility of the Arduino Leonardo to pretend to be a mouse and keyboard, and when this board came to me, I realized this possibility in FLProg version 2.2. Together with the capabilities of the RevoteXY project, a very interesting thing turned out. To start the video work of the resulting device.

First of all, a project is created on the RemoteXY website. The peculiarity of this project is that the interface you created does not need to be loaded onto the phone. It is enough to have the RemoteXY program on the phone, and all created interfaces are stored in the Arduino firmware. When connected to it, the description of the interface is transmitted to the phone, and opens in the program.

Now on the RemoteXY site there is an opportunity to share my projects, and here is a link to my project for the device discussed in this lesson. The project consists of four screens.

The first screen is mouse control.

To control the movement of the mouse is a joystick. Management with the help of it is very similar to management with the help of the thing that stuck out in the middle of the keyboard on the famous «ThinkPad T41».

I had such a long time, so there is experience. The developers of the RemoteXY project promised to make a new element — “Touch Panel”, with which you can completely imitate the touchpad of a laptop. When this happens in this project, I will replace the joystick with it. The slider on the right side of the screen simulates a scroll wheel. The stronger its shift from the center, the faster the virtual mouse wheel will spin.

Three columns of buttons on the left side of the screen simulate various button presses on a virtual mouse. Each column is responsible for its own button — left, middle, and right, respectively. The top row of buttons (with the “P” symbol) simulates a normal press. That is, when you click on this button, the corresponding button of the virtual mouse will be pressed, and when released, it will be released. The second row (with the “PF” symbol) simulates pressing with fixation. The first time you click on this button, the virtual mouse button will be pressed, while the second one will be released. This is useful when dragging windows for example. Hover the mouse over the window title, press the “PF” button (pin the window to the mouse), drag the window, press the “PF” button again (release the window). And the third row (with the “C” symbol) is to click on the corresponding button of the virtual mouse.

The second screen is an English keyboard.

There is nothing to explain here. The “Caps” button includes the input of uppercase characters, the “Shft” button includes uppercase characters for one character. After entering one character, it is reset.

. Everything is clear here. The “Caps” and “Shift” keys work the same as on the previous screen.

There is a small subtlety. In the online editor RemoteXY revealed a small bug. If the “\” symbol is used in the inscription on the button, then the project is not saved or processed. Therefore, for the button of this symbol, I used the inscription “not /”. Well, I did not think of anything better.

After creating a project on the RemoteXY website, you need to get the code for uploading to the “RemoteXY” block in the FLProg project. To do this, in the properties of the project RemoteXY choose the programming environment — FLProg.

The code received on the RemoteXY website for this lesson

REMOTEXY_MODE__SOFTSERIAL
REMOTEXY_SERIAL_RX 8
REMOTEXY_SERIAL_TX 9
REMOTEXY_SERIAL_SPEED 9600
[128,5,144,5,6,8,4,5,32,41
,11,47,47,7,1,4,48,92,11,7
,50,7,1,1,1,1,18,12,12,7
,1,80,0,1,1,14,18,12,12,7
,1,80,0,1,1,27,18,12,12,7
,1,80,0,1,1,1,32,12,12,7
,1,80,70,0,1,1,14,32,12,12
,7,1,80,70,0,1,1,27,32,12
,12,7,1,80,70,0,1,1,1,47
,12,12,7,1,67,0,1,1,14,47
,12,12,7,1,67,0,1,1,27,47
,12,12,7,1,67,0,1,1,1,22
,8,8,6,2,81,0,1,1,10,22
,8,8,6,2,87,0,1,1,19,22
,8,8,6,2,69,0,1,1,28,22
,8,8,6,2,82,0,1,1,37,22
,8,8,6,2,84,0,1,1,46,22
,8,8,6,2,89,0,1,1,55,22
,8,8,6,2,85,0,1,1,64,22
,8,8,6,2,73,0,1,1,73,22
,8,8,6,2,79,0,1,1,82,22
,8,8,6,2,80,0,1,1,1,31
,8,8,6,2,65,0,1,1,10,31
,8,8,6,2,83,0,1,1,19,31
,8,8,6,2,68,0,1,1,28,31
,8,8,6,2,70,0,1,1,37,31
,8,8,6,2,71,0,1,1,46,31
,8,8,6,2,72,0,1,1,55,31
,8,8,6,2,74,0,1,1,64,31
,8,8,6,2,75,0,1,1,1,40
,8,8,6,2,90,0,1,1,10,40
,8,8,6,2,88,0,1,1,19,40
,8,8,6,2,67,0,1,1,28,40
,8,8,6,2,86,0,1,1,37,40
,8,8,6,2,66,0,1,1,46,40
,8,8,6,2,78,0,1,1,55,40
,8,8,6,2,77,0,1,1,1,49
,98,13,6,2,0,1,1,73,31,8
,8,6,2,76,0,1,1,91,22,8
,8,6,2,60,0,1,1,82,31,17
,17,6,2,69,110,116,101,114,0,1
,1,64,40,8,8,6,2,44,0,1
,1,73,40,8,8,6,2,46,0,1
,1,1,16,17,5,6,2,83,104,105
,102,116,0,1,1,7,10,11,5,6
,2,67,97,112,115,0,1,1,1,25
,7,7,0,3,208,153,0,1,1,8
,25,7,7,0,3,208,166,0,1,1
,15,25,7,7,0,3,208,163,0,1
,1,22,25,7,7,0,3,208,154,0
,1,1,29,25,7,7,0,3,208,149
,0,1,1,43,25,7,7,0,3,208
,147,0,1,1,57,25,7,7,0,3
,208,169,0,1,1,78,25,7,7,0
,3,208,170,0,1,1,36,25,7,7
,0,3,208,157,0,1,1,64,25,7
,7,0,3,208,151,0,1,1,71,25
,7,7,0,3,208,165,0,1,1,50
,25,7,7,0,3,208,168,0,1,1
,86,25,13,7,0,3,60,0,1,1
,1,49,98,13,0,3,0,1,1,1
,41,7,7,0,3,208,175,0,1,1
,9,41,7,7,0,3,208,167,0,1
,1,17,41,7,7,0,3,208,161,0
,1,1,25,41,7,7,0,3,208,156
,0,1,1,33,41,7,7,0,3,208
,152,0,1,1,41,41,7,7,0,3
,208,162,0,1,1,49,41,7,7,0
,3,208,172,0,1,1,57,41,7,7
,0,3,208,145,0,1,1,65,41,7
,7,0,3,208,174,0,1,1,1,33
,7,7,0,3,208,164,0,1,1,9
,33,7,7,0,3,208,171,0,1,1
,17,33,7,7,0,3,208,146,0,1
,1,25,33,7,7,0,3,208,144,0
,1,1,33,33,7,7,0,3,208,159
,0,1,1,41,33,7,7,0,3,208
,160,0,1,1,49,33,7,7,0,3
,208,158,0,1,1,57,33,7,7,0
,3,208,155,0,1,1,65,33,7,7
,0,3,208,148,0,1,1,73,33,7
,7,0,3,208,150,0,1,1,81,33
,7,7,0,3,208,173,0,1,1,73
,41,7,7,0,3,44,0,1,1,81
,41,7,7,0,3,46,0,1,1,89
,33,10,15,0,3,69,110,116,101,114
,0,1,1,7,13,11,5,0,3,67
,97,112,115,0,1,1,1,19,17,5
,0,3,83,104,105,102,116,0,1,1
,1,13,9,8,5,4,49,0,1,1
,11,13,9,8,5,4,50,0,1,1
,21,13,9,8,5,4,51,0,1,1
,41,13,9,8,5,4,53,0,1,1
,51,13,9,8,5,4,54,0,1,1
,61,13,9,8,5,4,55,0,1,1
,91,13,9,8,5,4,48,0,1,1
,81,13,9,8,5,4,57,0,1,1
,71,13,9,8,5,4,56,0,1,1
,31,13,9,8,5,4,52,0,1,1
,32,49,68,13,5,4,0,1,1,51
,40,9,8,5,4,60,0,1,1,61
,40,9,8,5,4,39,0,1,1,71
,40,9,8,5,4,34,0,1,1,1
,31,9,8,5,4,95,0,1,1,91
,22,9,8,5,4,60,60,0,1,1
,41,40,9,8,5,4,62,0,1,1
,31,40,9,8,5,4,125,0,1,1
,21,40,9,8,5,4,123,0,1,1
,11,40,9,8,5,4,93,0,1,1
,1,40,9,8,5,4,91,0,1,1
,51,22,9,8,5,4,38,0,1,1
,61,31,9,8,5,4,124,0,1,1
,51,31,9,8,5,4,110,111,116,47
,0,1,1,41,31,9,8,5,4,47
,0,1,1,31,31,9,8,5,4,61
,0,1,1,21,31,9,8,5,4,45
,0,1,1,11,31,9,8,5,4,43
,0,1,1,71,31,9,8,5,4,63
,0,1,1,1,22,9,8,5,4,33
,0,1,1,11,22,9,8,5,4,64
,0,1,1,21,22,9,8,5,4,35
,0,1,1,31,22,9,8,5,4,36
,0,1,1,41,22,9,8,5,4,94
,0,1,1,61,22,9,8,5,4,42
,0,1,1,71,22,9,8,5,4,40
,0,1,1,81,22,9,8,5,4,41
,0,1,1,81,40,9,8,5,4,44
,0,1,1,91,40,9,8,5,4,46
,0,1,1,91,31,9,8,5,4,69
,110,116,101,114,0,1,1,81,31,9
,8,5,4,37,0,1,1,1,49,9
,8,5,4,58,0,1,1,11,49,9
,8,5,4,59,0,1,1,21,49,9
,8,5,4,126,0,65,10,1,10,5
,5,2,2,65,10,1,13,5,5,2
,3,65,9,1,1,5,5,2,2,65
,9,1,1,5,5,2,3,65,9,1
,1,5,5,2,4,131,1,82,1,17
,6,7,1,77,111,117,115,101,0,131
,0,64,1,17,6,6,2,69,110,0
,131,0,46,1,17,6,0,3,208,160
,209,131,209,129,0,131,0,28,1,17
,6,5,4,49,46,46,57,0];
input signed char joystick_1_x; /* =-100..100 координата x положения джойстика */
input signed char joystick_1_y; /* =-100..100 координата y положения джойстика */
input signed char slider_1; /* =-100..100 положение слайдера */
input unsigned char pressL; /* =1 если кнопка нажата, иначе =0 */
input unsigned char PressM; /* =1 если кнопка нажата, иначе =0 */
input unsigned char PressR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char pressLF; /* =1 если кнопка нажата, иначе =0 */
input unsigned char pressMF; /* =1 если кнопка нажата, иначе =0 */
input unsigned char pressRF; /* =1 если кнопка нажата, иначе =0 */
input unsigned char ClickL; /* =1 если кнопка нажата, иначе =0 */
input unsigned char ClickM; /* =1 если кнопка нажата, иначе =0 */
input unsigned char ClickR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bQ; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bW; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bE; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bT; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bY; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bU; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bI; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bO; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bP; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bA; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bS; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bD; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bF; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bG; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bH; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bJ; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bK; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bZ; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bX; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bC; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bV; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bB; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bN; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bM; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSpace; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bL; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bBacspace; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bEnter; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bZap; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bTochka; /* =1 если кнопка нажата, иначе =0 */
input unsigned char ShiftEn; /* =1 если кнопка нажата, иначе =0 */
input unsigned char CapsEn; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bQR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bWR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bER; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bRR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bTR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bUR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bOR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bTverdR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bYR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bPR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bXXR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bIR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bBacspaceR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSpaceR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bZR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bXR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bCR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bVR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bBR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bMR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bRusBR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bRusUR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bAR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bDR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bFR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bGR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bHR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bJR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bKR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bLR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bRusGR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bRusER; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bZapR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bTochkaR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bEnterR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char CapsRus; /* =1 если кнопка нажата, иначе =0 */
input unsigned char ShiftRus; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum1; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum2; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum3; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum5; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum6; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum7; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum0; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum9; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum8; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum4; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSpaceSim; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim24; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim25; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim26; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim10; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bBacspaceSim; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim23; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim22; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim21; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim20; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim19; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim6; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim16; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim15; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim14; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim13; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim12; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim11; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim17; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim1; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim2; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim3; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim4; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim5; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim7; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim8; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim9; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim27; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim28; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bEnterSim; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim18; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim29; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim30; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim31; /* =1 если кнопка нажата, иначе =0 */
output unsigned char IsShiftEn_g; /* =0..255 яркость зеленого цвета индикатора */
output unsigned char IsShiftRus_g; /* =0..255 яркость зеленого цвета индикатора */
output unsigned char hasEngSim_b; /* =0..255 яркость синего цвета индикатора */
output unsigned char hasRusSim_b; /* =0..255 яркость синего цвета индикатора */
output unsigned char hasSpecSim_b; /* =0..255 яркость синего цвета индикатора */

With the RemoteXY site we are done. Go to the project on FLProg.

The Arduino Leonardo controllers (checked), the Arduino DUE (support for this controller came from version 2.3 — tested), and the Arduino Micro (theoretically, not yet arrived, waiting to check) can pretend to be a standard mouse and keyboard as a standard mouse and keyboard. .

The FLProg project for this tutorial can be downloaded here . The Bluetooth module HC-05 is used as a communication device with the phone. It is connected in accordance with the table.

Here there is a very large block “RemoteXY” that provides communication with the phone. To configure it, you need to load the code received from the RemoteXY project site into it. The loading process is described in detail in the information for the block (block properties -> “Information” tab), so we will not duplicate it here. I will note only for those who work in the version FLProg 2.3 and younger. In these versions there is a small bug. If, when creating a project on the RemoteXY site, in the settings, select a port that is missing or busy in the project where the description will be loaded, then the program will crash when loading. To avoid this, you must FIRST select a free port in the block settings, and THEN load the description. In later versions of FLProg, this error has been fixed.

CD blocks (encoder) are used to determine the number of the pressed button. They give out at their output the number of the input on which logical one appeared. In the absence of a log. 1 at all inputs, at the output of this block 0.

Here we will detect the direction of movement of the mouse and wheel from the data received from the phone. I chose 5 units of dead band (with the maximum signal change from the joystick and the slider 0-100 to each side). In principle, to improve the work with the mouse, this value can be played. Also here is determined by the step size (the speed of movement of the mouse or scroll). The parameters of the “Scale” blocks can also be played for more comfortable mouse control.

Here we directly send commands to move the virtual mouse. For this we use the new “Mouse move” block. Each block sends a command to move the mouse in a certain direction every 10ms (set in the block settings), a step calculated in the previous board if there is a high level at the “Send” input.

It also uses the new “Mouse wheel” block. That block sends a command to rotate the scroll wheel of a virtual mouse. Here, to achieve the effect of smoothness, a different (different from moving the mouse) principle is used. If there is a high level at the “Send” input, the block sends to the virtual mouse a command to rotate the scroll wheel one step, but with a periodicity calculated on board 2. This periodicity depends on the position of the slider on the phone and changes from 200 milliseconds to 5 milliseconds when the value changes received from the slider from 5 (dead zone) to 100 (extreme position).

It uses the “MousePressKey” block. At a high level at the “Send” input, it keeps the button of the virtual mouse selected in the settings, at low — it releases it. To implement the effect of pressing with fixation, TT triggers are used (counting triggers). On the first leading edge at their entrance, they transfer their output to the log state. 1 and the second drop it to 0. And so on the circle.

Here, the “MouseClickKey” block is used, which, on the leading edge of the “Send” input, makes a short click on the virtual mouse button selected in the block settings.

Here, the “KeyboardStatus” and “MouseStatus” blocks are used, which at a high level at the “Status” input turn on the virtual keyboard and mouse, respectively, and at a low level, turn them off. In this scheme, to control the on and off is the signal that the phone is connected to an arduinka. It is formed at the output of the “CS” of the “RemoteXY” block (board 1). In addition, if there is a connection, we light the LED built into the Arduino board (pin 13).

This determines whether a button is pressed on one of the keyboards in the application on the phone, and on which keypad the button was pressed — Russian or English. In addition, signals are generated for ignition of the LED located in the upper right corner of each of the application keyboards on the phone. This LED indicates that the button press signal has reached the controller. I used it when setting up, but decided to leave it in the final version of the application.

This defines the need for an uppercase character. The front edge of pressing the “Shift” button in the application on the phone sets the SR trigger to the log.1 state. After the end of the character input (the falling edge of the signal of the presence of the pressed character), the trigger is reset to 0.
Each press of the “Caps” button in the application on the phone inverts the operation of the “Shift” button. That is, in the initial position, the main input state is lowercase characters, and when you press the “Shift” button, one uppercase character is entered, then once you press the “Caps” button, the mode changes. Capital letters become basic, and when you press the “Shift” button, one lower case character is entered. When you press the “Caps” button again, the input is transferred to the main mode. In addition, a signal is generated for ignition of the “Shift” indicator in the application on the phone.

Here, from the number pressed on the keyboard in the application on the button telephone, the code of the symbol of this button is formed. This is done using the “Code table” block. This block produces at the output “Q” a code whose number in the table loaded in the block corresponds to the value at the input “I”.

Please note that for both Russian characters and English characters one code table is used. The fact is that the Keybord library understands only single-byte codes, and actually presses the button of the virtual keyboard on which the character with the code passed to it is written. To enter Russian characters, the input method on the computer is forcibly switched to Russian as they are entered. How this is done consider on the next board.

Here, two “SequenceKeybord” blocks are used. These blocks, on the leading edge at the “Send” input, execute a script of actions with a keyboard that was configured when setting up the block. It is with this block that we can configure the input of Russian or English characters, as well as the switching of lowercase or uppercase characters. But this also requires some setup of the computer to which our device is connected. You need to configure the keyboard shortcut to enable Russian and Angdean layouts. This is done in the control panel of the computer.

For this device, I set up the inclusion of English using the CTRL + 1 keys and the Russian CTRL + 0. It is these combinations that are used by script blocks.
Consider the upper block script.

The script is executed in steps from top to bottom along the leading edge at the “Send” input (When the signal for the presence of a pressed character appears on the keyboard of the application in the phone). In the first step, the CTRL button is pressed and held on the virtual keyboard. In the second step, a short press on the button, the code that is fed to the input “Code Step 2”, is made. If the press was on the Russian keyboard, it will be 48 (character code 1) and if in English — 49 (character code 0). In the third step, the CTRL button is released. Thus, we switched the input language to the one we need to enter this character.

Performing the next step depends on having a high level at the input of “Activity Step 4”. It occurs when the active mode of entering uppercase characters. In this case, step 4 is performed, and the “Shift” button on the virtual keyboard is pressed and held. Thus, capitalization is entered.

Well, at the last step, the button of the virtual keyboard is pressed and held, the code that comes to the input of “Code Step 5” (the code of the button we pressed on the keyboard in the application on the phone).

When the signal of the presence of the pressed button on the keyboard disappears in the application on the phone, due to the inversion at the input of the lower block of the script, the script configured in it is executed.

First we release the previously pressed symbol button, and then release the “Shift” button

Here, similarly to board 10, we form a signal about the presence of special characters and numbers on the keyboard of the application on the phone, and the code of this button.

When a signal appears, the pressed key on the keyboard of special characters in the application on the phone runs the script configured in the “SequenceKeyboard” block. In it, we first translate the input method into English (pressing the “CTRL” key → pressing the “1” key → releasing the “CTRL” key), and then pressing the desired symbol key. When the signal of the presence of the pressed button disappears, a block of one-time impact on the keyboard “OneKeyboard” is performed, which performs one action programmed in the settings. In this case, releases the previously pressed special character key.

After compilation, this project takes up a little more than half the memory of the Arduino Leonardo controller, which allows you to make various modifications to this project.
Good luck to you creativity.

FLProg + RemoteXY = Беспроводная клавиатура для компьютера на Вашем телефоне

У меня дома сложилась интересная ситуация. Телевизор в спальне подключен к компьютеру расположенному в другой комнате, и для того что бы жена могла посмотреть очередную серию сериала (хотя у меня есть андроидная приставка, которая стоит рядом с телевизором, она предпочитает смотреть с компа), приходится приложить достаточно много усилий. В виду присутствия детей, беспроводные мыши и клавиатуры у нас не приживаются. Я давно с интересом присматривался к возможности Arduino Leonardo прикидываться мышкой и клавиатурой, и когда эта плата пришла ко мне, реализовал данную возможность в программе FLProg версии 2.2. В паре с возможностями проекта RevoteXY получилась очень интересная штука. Для начала видео работы получившегося устройства.


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

Сейчас на сайте RemoteXY появилась возможность делится своими проектами, и вот ссылка на мой проект для рассматриваемого в этом уроке устройства. Проект состоит из четырёх экранов.

Первый экран – управление мышью.

Для управления перемещением мыши служит джойстик. Управление с помощью него очень напоминает управление с помощью той штуки, которая торчала посередине клавиатуры на известном «ThinkPad T41».

У меня достаточно долго такой был, так что опыт есть. Разработчики проекта RemoteXY обещали сделать новый элемент – «Сенсорная панель», с помощью которой можно будет полностью имитировать тачпад ноутбука. Когда это произойдёт в данном проекте я заменю джойстик на него. Слайдер в правой части экрана имитирует колесо прокрутки. Чем сильнее его сдвиг от центра, тем быстрее будет крутиться колесо виртуальной мышки.

Три столбца кнопок в левой части экрана имитируют разные нажатия на кнопки виртуальной мыши. Каждый столбец отвечает за свою кнопку – левую, среднюю, и правую соответственно. Верхний ряд кнопок (с символом “P”) имитирует обычное нажатие. То есть при нажатии на эту кнопку, будет нажата соответствующая кнопка виртуальной мыши, при отпускании — отпущена. Второй ряд (с символом “PF”) – имитирует нажатие с фиксацией. При первом нажатии на эту кнопку, кнопка виртуальной мыши будет нажата, при втором – отпущена. Это удобно при перетаскивании окон например. Навели мышь на заголовок окна, нажали кнопку “PF” (закрепили окно к мышке), перетащили окно, ещё раз нажали “PF” (отпустили окно). Ну а третий ряд (с символом “C”) – клик по соответствующей кнопке виртуальной мыши.

Второй экран – английская клавиатура.

Тут объяснять особенно нечего. Кнопочка “Caps” включает ввод прописных символов, кнопка “Shft”включает прописные символы на один символ. После ввода одного символа она сбрасывается.

Тут то же все понятно. Клавиши “Caps” и “Shift” работают так же как и на предыдущем экране.

Тут есть небольшая тонкость. В онлайн редакторе RemoteXY обнаружилась небольшая бага. Если в надписи на кнопке использовать символ “” то проект не сохраняется и не обрабатывается. Поэтому для кнопки этого символа я использовал надпись “not/”. Ну не придумал я ничего лучше.

После создания проекта на сайте RemoteXY необходимо получить код для загрузки в блок “RemoteXY” в проекте FLProg. Для этого в свойствах проекта RemoteXY выбираем среду программирования – FLProg.

Код, полученный на сайте RemoteXY для данного урока

REMOTEXY_MODE__SOFTSERIAL
REMOTEXY_SERIAL_RX 8
REMOTEXY_SERIAL_TX 9
REMOTEXY_SERIAL_SPEED 9600
[128,5,144,5,6,8,4,5,32,41
,11,47,47,7,1,4,48,92,11,7
,50,7,1,1,1,1,18,12,12,7
,1,80,0,1,1,14,18,12,12,7
,1,80,0,1,1,27,18,12,12,7
,1,80,0,1,1,1,32,12,12,7
,1,80,70,0,1,1,14,32,12,12
,7,1,80,70,0,1,1,27,32,12
,12,7,1,80,70,0,1,1,1,47
,12,12,7,1,67,0,1,1,14,47
,12,12,7,1,67,0,1,1,27,47
,12,12,7,1,67,0,1,1,1,22
,8,8,6,2,81,0,1,1,10,22
,8,8,6,2,87,0,1,1,19,22
,8,8,6,2,69,0,1,1,28,22
,8,8,6,2,82,0,1,1,37,22
,8,8,6,2,84,0,1,1,46,22
,8,8,6,2,89,0,1,1,55,22
,8,8,6,2,85,0,1,1,64,22
,8,8,6,2,73,0,1,1,73,22
,8,8,6,2,79,0,1,1,82,22
,8,8,6,2,80,0,1,1,1,31
,8,8,6,2,65,0,1,1,10,31
,8,8,6,2,83,0,1,1,19,31
,8,8,6,2,68,0,1,1,28,31
,8,8,6,2,70,0,1,1,37,31
,8,8,6,2,71,0,1,1,46,31
,8,8,6,2,72,0,1,1,55,31
,8,8,6,2,74,0,1,1,64,31
,8,8,6,2,75,0,1,1,1,40
,8,8,6,2,90,0,1,1,10,40
,8,8,6,2,88,0,1,1,19,40
,8,8,6,2,67,0,1,1,28,40
,8,8,6,2,86,0,1,1,37,40
,8,8,6,2,66,0,1,1,46,40
,8,8,6,2,78,0,1,1,55,40
,8,8,6,2,77,0,1,1,1,49
,98,13,6,2,0,1,1,73,31,8
,8,6,2,76,0,1,1,91,22,8
,8,6,2,60,0,1,1,82,31,17
,17,6,2,69,110,116,101,114,0,1
,1,64,40,8,8,6,2,44,0,1
,1,73,40,8,8,6,2,46,0,1
,1,1,16,17,5,6,2,83,104,105
,102,116,0,1,1,7,10,11,5,6
,2,67,97,112,115,0,1,1,1,25
,7,7,0,3,208,153,0,1,1,8
,25,7,7,0,3,208,166,0,1,1
,15,25,7,7,0,3,208,163,0,1
,1,22,25,7,7,0,3,208,154,0
,1,1,29,25,7,7,0,3,208,149
,0,1,1,43,25,7,7,0,3,208
,147,0,1,1,57,25,7,7,0,3
,208,169,0,1,1,78,25,7,7,0
,3,208,170,0,1,1,36,25,7,7
,0,3,208,157,0,1,1,64,25,7
,7,0,3,208,151,0,1,1,71,25
,7,7,0,3,208,165,0,1,1,50
,25,7,7,0,3,208,168,0,1,1
,86,25,13,7,0,3,60,0,1,1
,1,49,98,13,0,3,0,1,1,1
,41,7,7,0,3,208,175,0,1,1
,9,41,7,7,0,3,208,167,0,1
,1,17,41,7,7,0,3,208,161,0
,1,1,25,41,7,7,0,3,208,156
,0,1,1,33,41,7,7,0,3,208
,152,0,1,1,41,41,7,7,0,3
,208,162,0,1,1,49,41,7,7,0
,3,208,172,0,1,1,57,41,7,7
,0,3,208,145,0,1,1,65,41,7
,7,0,3,208,174,0,1,1,1,33
,7,7,0,3,208,164,0,1,1,9
,33,7,7,0,3,208,171,0,1,1
,17,33,7,7,0,3,208,146,0,1
,1,25,33,7,7,0,3,208,144,0
,1,1,33,33,7,7,0,3,208,159
,0,1,1,41,33,7,7,0,3,208
,160,0,1,1,49,33,7,7,0,3
,208,158,0,1,1,57,33,7,7,0
,3,208,155,0,1,1,65,33,7,7
,0,3,208,148,0,1,1,73,33,7
,7,0,3,208,150,0,1,1,81,33
,7,7,0,3,208,173,0,1,1,73
,41,7,7,0,3,44,0,1,1,81
,41,7,7,0,3,46,0,1,1,89
,33,10,15,0,3,69,110,116,101,114
,0,1,1,7,13,11,5,0,3,67
,97,112,115,0,1,1,1,19,17,5
,0,3,83,104,105,102,116,0,1,1
,1,13,9,8,5,4,49,0,1,1
,11,13,9,8,5,4,50,0,1,1
,21,13,9,8,5,4,51,0,1,1
,41,13,9,8,5,4,53,0,1,1
,51,13,9,8,5,4,54,0,1,1
,61,13,9,8,5,4,55,0,1,1
,91,13,9,8,5,4,48,0,1,1
,81,13,9,8,5,4,57,0,1,1
,71,13,9,8,5,4,56,0,1,1
,31,13,9,8,5,4,52,0,1,1
,32,49,68,13,5,4,0,1,1,51
,40,9,8,5,4,60,0,1,1,61
,40,9,8,5,4,39,0,1,1,71
,40,9,8,5,4,34,0,1,1,1
,31,9,8,5,4,95,0,1,1,91
,22,9,8,5,4,60,60,0,1,1
,41,40,9,8,5,4,62,0,1,1
,31,40,9,8,5,4,125,0,1,1
,21,40,9,8,5,4,123,0,1,1
,11,40,9,8,5,4,93,0,1,1
,1,40,9,8,5,4,91,0,1,1
,51,22,9,8,5,4,38,0,1,1
,61,31,9,8,5,4,124,0,1,1
,51,31,9,8,5,4,110,111,116,47
,0,1,1,41,31,9,8,5,4,47
,0,1,1,31,31,9,8,5,4,61
,0,1,1,21,31,9,8,5,4,45
,0,1,1,11,31,9,8,5,4,43
,0,1,1,71,31,9,8,5,4,63
,0,1,1,1,22,9,8,5,4,33
,0,1,1,11,22,9,8,5,4,64
,0,1,1,21,22,9,8,5,4,35
,0,1,1,31,22,9,8,5,4,36
,0,1,1,41,22,9,8,5,4,94
,0,1,1,61,22,9,8,5,4,42
,0,1,1,71,22,9,8,5,4,40
,0,1,1,81,22,9,8,5,4,41
,0,1,1,81,40,9,8,5,4,44
,0,1,1,91,40,9,8,5,4,46
,0,1,1,91,31,9,8,5,4,69
,110,116,101,114,0,1,1,81,31,9
,8,5,4,37,0,1,1,1,49,9
,8,5,4,58,0,1,1,11,49,9
,8,5,4,59,0,1,1,21,49,9
,8,5,4,126,0,65,10,1,10,5
,5,2,2,65,10,1,13,5,5,2
,3,65,9,1,1,5,5,2,2,65
,9,1,1,5,5,2,3,65,9,1
,1,5,5,2,4,131,1,82,1,17
,6,7,1,77,111,117,115,101,0,131
,0,64,1,17,6,6,2,69,110,0
,131,0,46,1,17,6,0,3,208,160
,209,131,209,129,0,131,0,28,1,17
,6,5,4,49,46,46,57,0];
input signed char joystick_1_x; /* =-100..100 координата x положения джойстика */
input signed char joystick_1_y; /* =-100..100 координата y положения джойстика */
input signed char slider_1; /* =-100..100 положение слайдера */
input unsigned char pressL; /* =1 если кнопка нажата, иначе =0 */
input unsigned char PressM; /* =1 если кнопка нажата, иначе =0 */
input unsigned char PressR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char pressLF; /* =1 если кнопка нажата, иначе =0 */
input unsigned char pressMF; /* =1 если кнопка нажата, иначе =0 */
input unsigned char pressRF; /* =1 если кнопка нажата, иначе =0 */
input unsigned char ClickL; /* =1 если кнопка нажата, иначе =0 */
input unsigned char ClickM; /* =1 если кнопка нажата, иначе =0 */
input unsigned char ClickR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bQ; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bW; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bE; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bT; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bY; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bU; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bI; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bO; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bP; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bA; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bS; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bD; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bF; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bG; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bH; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bJ; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bK; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bZ; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bX; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bC; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bV; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bB; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bN; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bM; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSpace; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bL; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bBacspace; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bEnter; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bZap; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bTochka; /* =1 если кнопка нажата, иначе =0 */
input unsigned char ShiftEn; /* =1 если кнопка нажата, иначе =0 */
input unsigned char CapsEn; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bQR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bWR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bER; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bRR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bTR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bUR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bOR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bTverdR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bYR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bPR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bXXR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bIR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bBacspaceR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSpaceR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bZR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bXR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bCR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bVR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bBR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bMR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bRusBR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bRusUR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bAR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bDR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bFR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bGR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bHR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bJR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bKR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bLR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bRusGR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bRusER; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bZapR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bTochkaR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bEnterR; /* =1 если кнопка нажата, иначе =0 */
input unsigned char CapsRus; /* =1 если кнопка нажата, иначе =0 */
input unsigned char ShiftRus; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum1; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum2; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum3; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum5; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum6; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum7; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum0; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum9; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum8; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bNum4; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSpaceSim; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim24; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim25; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim26; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim10; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bBacspaceSim; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim23; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim22; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim21; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim20; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim19; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim6; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim16; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim15; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim14; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim13; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim12; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim11; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim17; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim1; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim2; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim3; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim4; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim5; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim7; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim8; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim9; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim27; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim28; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bEnterSim; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim18; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim29; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim30; /* =1 если кнопка нажата, иначе =0 */
input unsigned char bSim31; /* =1 если кнопка нажата, иначе =0 */
output unsigned char IsShiftEn_g; /* =0..255 яркость зеленого цвета индикатора */
output unsigned char IsShiftRus_g; /* =0..255 яркость зеленого цвета индикатора */
output unsigned char hasEngSim_b; /* =0..255 яркость синего цвета индикатора */
output unsigned char hasRusSim_b; /* =0..255 яркость синего цвета индикатора */
output unsigned char hasSpecSim_b; /* =0..255 яркость синего цвета индикатора */

С сайтом RemoteXY мы закончили. Переходим к проекту на FLProg.

Прикидываться стандартной (то есть не требующей специальных драйверов) мышью и клавиатурой могут контроллеры Arduino Leonardo (проверено), Arduino DUE (поддержка данного контролера появилась с версии 2.3 — проверено), и Arduino Micro (теоритически, ещё не пришла, жду что бы проверить).

Проект FLProg для данного урока можно скачать здесь . В качестве устройтва связи с телефоном используется модуль блютуз HC-05. Подключён он в соответствии с таблицей.

Здесь присутствует очень большой блок “RemoteXY” который обеспечивает связь с телефоном. Для его настройки необходимо загрузить в него код полученный с сайта проекта RemoteXY. Процесс загрузки подробно описан в информации к блоку (свойства блока -> закладка “Информация”), поэтому не будем здесь её дублировать. Отмечу только для тех, кто работает в версии FLProg 2.3 и младше. В этих версиях есть небольшая бага. Если при создании проекта на сайте RemoteXY в настройках выбрать порт который отсутствует или занят в проекте в который будет производится загрузка описания, то при загрузке произойдёт падение программы. Что бы этого избежать, необходимо СНАЧАЛА выбрать в настройках блока свободный порт, а ЗАТЕМ загружать описание. В более поздних версиях программы FLProg эта ошибка исправлена.

Блоки CD (шифратор) служат для определения номера нажатой кнопки. Они выдают на своём выходе номер входа на котором появилась логическая 1. В случае отсутствия лог. 1 на всех входах, на выходе этого блока 0.

Здесь мы из данных полученных с телефона детектируем направление перемещения мыши и колеса. Зону нечувствительности я выбрал 5 едениц (при максимальном изменении сигнала от джойстика и слайдера 0-100 в каждую сторону). В принципе для улучшения работы с мышкой этой величиной можно поиграться. Так же здесь определяется величина шага (скорость перемещения мыши или прокрутки). Параметрами блоков “Scale” так же можно поиграть для более комфортного управления мышью.

Здесь мы непосредственно отправляем команды на перемещение виртуальной мыши. Для этого используем новый блок “Mouse move”. Каждый из блоков отправляет команду на перемещение мыши в определённом направлении каждые 10мс (задаётся в настройках блока), на шаг, рассчитанный в предыдущей плате при наличии высокого уровня на входе “Send”.

Здесь так же используется новый блок “Mouse wheel”. Тот блок отправляет команду на поворот колеса прокрутки виртуальной мыши. Здесь для достижения эффекта плавности используется другой (отличный от перемещения мыши) принцип. При наличии высокого уровня на входе “Send” блок передает на виртуальную мышь команду на поворот колеса прокрутки на один шаг, но с периодичностью рассчитанной на плате 2. Эта периодичность зависит от положения слайдера на телефоне и меняется от 200 миллисекунд до 5 миллисекунд при изменении значения получаемого со слайдера от 5 (зона нечувствительности) до 100 (крайнее положение).

Здесь используется блок “MousePressKey”. При высоком уровне на входе “Send” он держит нажатой выбранную в настройках кнопку виртуальной мыши, при низком – отпускает её. Для реализации эффекта нажатия с фиксацией используются триггеры ТТ (счётные триггеры). По первому переднему фронту на своём входе они переводят свой выход в состояние лог. 1 а при втором сбрасывают его в 0. И так по кругу.

Здесь используется блок “MouseClickKey”, который по переднему фронту на входе “Send” производит короткий клик на выбранную в настройках блока кнопку виртуальной мыши.

Здесь используются блоки “KeyboardStatus” и “MouseStatus” которые при высоком уровне на входе “Status” включают виртуальные клавиатуру и мышь соответственно, а при низком уровне – выключают их. В данной схеме для управления включением и отключением служит сигнал наличия соединения телефона с ардуинкой. Он формируется на выходе “CS” блока “RemoteXY” (плата 1). Кроме этого при наличии соединения мы зажигаем встроенный в плату ардуино светодиод (пин 13).

Здесь определяется факт нажатия кнопки на одной из клавиатур в приложении на телефоне, и на какой конкретно клавиатуре была нажата кнопка – русской или английской. Кроме того формируются сигналы для зажигания светодиода расположенного правом верхнем углу каждой из клавиатур приложения на телефоне. Этот светодиод показывает, что сигнал о нажатии кнопки дошёл до контроллера. Я использовал его при наладке, но решил оставить его и в финальной версии приложения.

Здесь определяется необходимость ввода прописного символа. Передний фронт нажатия кнопки “Shift” в приложении на телефоне устанавливает SR тригер в состояние лог.1. После окончания ввода символа (задний фронт сигнала наличия нажатого символа) тригер сбрасывается в 0.
Каждое нажатие кнопки “Caps” в приложении на телефоне инвертирует работу кнопки “Shift”. То есть в начальном положении основное состояние ввода – строчные символы, а при нажатии кнопки “Shift” вводится один прописной символ, то после однократого нажатия кнопки “Caps” режим меняется. Основными становятся прописные буквы, а при нажатии кнопки “Shift” вводится один строчный символ. При повторном нажатии кнопки “Caps” ввод переводится в основной режим. Кроме того здесь формируется сигнал для зажигания индикатора “Shift” в приложении на телефоне.

Здесь из номера нажатой на клавиатуре в приложении на телефоне кнопки формируется код символа этой кнопки. Это делается с помощью блока “Code table”этот блок выдаёт на выходе “Q” код, номер которого в загруженной в блоке таблице соответствует значению на входе “I”.

Обратите внимание, что и для русских символов и для английских символов используется одна таблица кодов. Дело в том, что библиотека Keybord понимает только однобайтовые коды, и реально нажимает кнопку виртуальной клавиатуры на которой написан символ с переданным ей кодом. Для ввода русских символов метод ввода на компьютере принудительно переключается на русский при их вводе. Как это сделано рассмотрим на следующей плате.

Здесь используются два блока “SequenceKeybord”. Эти блоки по переднему фронту на входе “Send” выполняют сценарий действий с клавиатурой, который был сконфигурирован при настройке блока. Именно с помощью этого блока мы можем настроить ввод русских или английских символов, а так же переключение строчных или прописных символов. Но для этого так же требуется некоторая настройка компьютера к которому подключено наше устройство. Надо настроить сочетание клавиш для включения русских и ангдийских раскладок. Это делается в панели управления компьютера.

Для данного устройства я настроил включение английского языка с помощью клафиш CTRL+1 а русского CTRL+0. Именно эти комбинации и используются блоках сценария.
Рассмотрим сценарий верхнего блока.

Сценарий выполняется по шагам сверху вниз по переднему фронту на входе “Send” (Когда появился сигнал наличия нажатого символа на клавиатуре приложения в телефоне). На первом шаге на виртуальной клавиатуре нажимается и удерживается кнопка CTRL. На втором шаге производится короткое нажатие на кнопку, код который подан на вход “Code Step 2”. В случае если нажатие было на русской клавиатуре это будет 48 (код символа 1) а если на английской – 49 (код символа 0). На третьем шаге отпускается кнопка CTRL. Таким образом, мы переключили язык ввода на нужный нам для ввода данного символа.

Выполнение следующего шага зависит от наличия высокого уровня на входе “Activity Step 4”. Он возникает при активном режиме ввода прописных символов. В этом случае шаг 4 выполняется, и нажимается и удерживается кнопка “Shift” на виртуальной клавиатуре. Таким образом производится ввод прописных символов.

Ну и на последнем шаге нажимается и удерживается кнопка виртуальной клавиатуры, код который приходит на вход “Code Step 5” (код нажатой нами кнопки на клавиатуре в приложении на телефоне).

При пропадании сигнала наличия нажатой кнопки на клавиатуре в приложении на телефоне, за счет инверсии на входе нижнего блока сценария, происходит выполнение сконфигурированного в нём сценария.

Сначала мы отпускаем ранее нажатую кнопку символа, а затем отпускаем кнопку “Shift”

Здесь аналогично плате 10 формируем сигнал о наличии нажатой кнопке на клавиатуре спецсимволов и цифр в приложении на телефоне, и код этой кнопки.

При появлении сигнала наличия нажатой клавише на клавиатуре спецсимволов в приложении на телефоне выполняется сценарий, сконфигурированный в блоке “SequenceKeyboard”. В нём мы сначала переводим способ ввода на английский (нажатие клавиши “CTRL” → нажатие клавиши “1” → отпускание клавиши “CTRL” ), а затем нажимаем необходимую символную клавишу. При пропадании сигнала наличия нажатой кнопки, выполняется блок однократного воздействия на клавиатуру “OneKeyboard” который выполняет одно запрограммированное в настройках действие. В данном случае отпускает ранее нажатую клавишу специального символа.

После компиляции данный проект занимает чуть более половины памяти контроллера Arduino Leonardo что позволяет произвести ещё различные доработки данного проекта.
Удачного Вам творчества.

FLProg — визуальное программирование Arduino для домашнего пользования

В проекте я расскажу вам про замечательную
визуальную среду программирования FLProg для
Arduino. Программа FLProg работает с Arduino. Плата
очень удобна для быстрой разработки и отладки своих
устройств, что важно не только радиолюбителям, но
весьма полезно, например, и в школьных кружках, и в
учебных лабораториях. Вы подключаете плату Arduino
к компьютеру и загружаете готовую программу. В
настоящее время существует богатый выбор модулей
Arduino, датчиков и исполняющих устройств.
Arduino UNO представляет собой плату, с размещенными на ней
компонентами, главным из которых является микроконтроллер
ATmega328P. Микроконтроллер взаимодействует с внешним миром
посредством специальных портов ввода/вывода данных.
Для лучшего понимания можно привести очень яркий пример, которым
мы с вами и являемся. У человека есть мозг, то есть некоторая
вычислительная система снабженная памятью, и этот мозг, посредством
нервных окончаний управляет различными органами, будь то глаза или
руки. Тоже самое делает и микроконтроллер, а что и как ему делать, а так
же какими устройствами управлять, решаете уже непосредственно вы,
указывая все это в программном коде.
Вторым основным элементом является Bluetooth модуль, сегодня он
один из самых популярных типов связи для коротких дистанций,
которым пользуются большинство бытовых приборов и электронных
устройств — наушники, компьютерные клавиатуры и мышки и
другие гаджеты. В робототехнике Bluetooth модуль используют для
управления различных устройств на Arduino, например, управление
со смартфона.
Микросхема DS3231 является
часами реального времени с
температурной компенсацией.
Погрешность составляет ±2
минуты за год при температуре
окружающей среды от -40°С до
+85°С.
Датчик присутствия HC-SR501.
Модуль представляет собой
датчик движения человека. При
вхождении человека в зону
обзора, датчик регистрирует
инфракрасное излучения от
подвижного объекта.
Датчик протечки воды. При
попадании воды на контакты
происходит срабатывание
датчика. Также возможно
определить уровень воды в
пределах высоты датчика и
влажность почвы.
Генерировать звуки с
помощью Ардуино можно разными
способами. Самый простой из них
подключить к плате пьезоизлучатель
(или, как его ещё называют,
«пьезопищалку»). У нас она будет
служить для оповещения о протечки
воды в С/У и при срабатывании
датчика газа.
DHT11 цифровой датчик темпе
ратуры и влажности. Он
использует
емкостной датчик влажности
и терморезистор для
измерения температуры
окружающего воздуха, данные
выдает в цифровой форме
DS18B20 Выносной
датчик измеряет температуру в
градусах Цельсия. Датчик может
измерять температуру от -55 до
125 °C.
Датчик газа MQ 135. Это
универсальный датчик,
обнаруживающий в воздухе
бензол, спирт, пыль, дым и т.д.
Перед началом использования
рекомендуется прогреть датчик,
т.е. оставить его включенным на
сутки. В квартире он может
использоваться для определения
угарного газа. А также в квартирах
или домах с газовым отоплением,
утечку газа.
Разгрузочное реле.
Реле предназначается для
включения с помощью малого
тока например, с помощью
сигнала, исходящего от платы
Ардуино на 5 v включать
освещение или розетку 220 v
Из картонной коробки из-под обуви и деталей конструктора LEGO я
изготовил макет квартиры. Для наглядного показа применения
автоматики.
Далее я расскажу о схеме подключения и программировании.
Первая схема для управления со смартфона освещением, розеткой в
комнате и коридоре, сигнализации дыма, а также подключение датчиков
для метеостанции.
Далее покажу как эта схема выглядит в FLProg.
Схема представляет собой набор плат, на каждой, из которой собран законченный
модуль общей схемы. Для удобства работы каждая плата имеет наименование и
комментарии. При работе с программой пользователю нет необходимости
заниматься написанием кода. За всем этим следит программа. Так же она
проверяет корректность проекта целиком и указывает на наличие ошибок.
Схема каждой платы собирается из функциональных блоков. Большинство
функциональных блоков имеют возможность настройки, с помощью
которой их работу можно настроить для нужных нам целей
Так же для каждого функционального блока есть развернутое описание,
которое доступно в любой момент и помогает разобраться в его работе и
настройках.
Для управления с телефона была использована программа Remote XY.
Все настройки и оформление осуществляется на сайте программы, после этого
копируется код и вставляется в блок Remote XY программы FLProg.
В итоге получились 4 экрана для управления и отображения показаний
датчиков.
Экран 2-управление освещением
Экран 1 – метеостанция
и розеткой в комнате
Экран 3-управление
освещением в коридоре
Экран 4- управление RGB
подсветкой
Схема
подключения
автоматики в
С/У.
В программе FLProg блоки для этой схемы выглядят следующим образом.

Разрешите представиться – проект FLProg

Добрый день.

Меня зовут Сергей Глушенко, и я являюсь автором проекта FLProg. Данный блог посвящён этому проекту, и здесь я буду рассказывать о новостях проекта, и достижениях участников сообщества пользователей программы. Проект посвящён созданию визуальной среды программирования плат Arduino, и поэтому прежде чем рассказывать о программе FLProg, я хочу сделать небольшой обзор существующих программ предназначенных для программирования этих плат.

Среды программирования плат ардуино можно разделить на следующие типы:

  1. Прокачанные «Блокноты»
  2. Текстовые среды разработки
  3. Графические среды, визуализирующие структуру кода.
  4. Графические среды, отображающие код в виде графики.
  5. Визуальные среды программирования, не использующие кода.


Рассмотрим каждый тип.

Прокачанные «Блокноты»

К этому типу относятся оригинальная среда программирования Arduino-IDE, а так же множество её клонов.

Проектирование программы для контроллера в ней происходит на языке Processing/Wiring, который является диалектом языка Си (скорее Си++). Эта среда представляет собой, по сути, обычный текстовый редактор с возможностью загрузки написанного кода в контроллер

Текстовые среды разработки

Альтернативой Arduino IDE является среда разработки от производителя микроконтроллеров Atmel — AVRStudio.

Программирование в ней ведётся на чистом C, и она уже имеет намного больше возможностей и более похожа на серьёзные IDE для «настоящих» языков программирования.

Эти два типа программ рассчитаны на опытных программистов, которые хорошо знают язык и могут с помощью них создавать серьёзные проекты.

Графические среды, визуализирующие структуру кода.

Это программы, которые, по сути, являются расширением форматирования для обычного текстового редактора кода. В нем программа так же пишется на языке С, но в более удобном варианте. Сейчас таких сред очень много, самые яркие примеры: Scratch, S4A, Ardublock. Они очень хорошо подходят для начального обучения программированию на языке С, поскольку отлично показывают структуру и синтаксис языка. Но для больших серьёзных проектов программа получается громоздкой.

Графические среды, отображающие код в виде графики

Это программы, скрывающие код и заменяющие его графическими аналогами. В них так же повторяется структура языка, формируются циклы, переходы, условия. Так же очень хорошо подходят для обучения построению алгоритмов, с последующим переходом на программирование на классических языках. И так же не подходят для построения больших проектов ввиду громоздкости получаемого отображения. Пример такой программы: MiniBlog, Algorithm Builder, Flowcode

Описанные выше типы программ рассчитаны на программистов или на тех, кто решил изучать классическое программирование. Но для изготовления конечного устройства кроме непосредственно программирования контроллера обычно требуется разработка внешней обвязки платы, разработка и расчет силовой части, входных развязок и многого другого. С этим у программистов часто возникают проблемы. Зато с этим прекрасно справляются электрики и электронщики. Но среди них мало программистов, которые смогли бы составить программу для контроллера. Сочетание программиста и электронщика — достаточно редкий случай. В результате такой ситуации реальных, законченных проектов на основе плат Arduino (да и других контроллеров) единицы. Для решения этой проблемы и служат программы последнего типа.

Визуальные среды программирования, не использующие кода.

Данные программы реализуют принцип, который уже много лет применяется практически всеми производителями контроллеров промышленного применения. Он заключается в создании программ для контроллера на языках FBD или LAD. Собственно говоря, как таковыми языками они не являются. Это, скорее, графические среды для рисования принципиальных или логических схем. Вспомним, что процессоры далеко не всегда были микропроцессорами, а создавались на базе цифровых микросхем. Поэтому тем, кто привык работать с цифровой техникой, больше понравится работа на них, чем написание кода на классических языках программирования. Примером таких программ являются проекты Horizont и FLProg. Программы этого типа хорошо подходят как для изучения построения импульсной и релейной техники, так и для создания серьезных проектов.


Ну и наконец, герой этого блога, проект FLProg.

Поскольку я много лет работаю разработчиком систем АСУТП, я постарался собрать в программе FLProg все, что мне наиболее понравилось в средах от ведущих производителей промышленного оборудования (Tia-Portal, Zelio Soft, Logo Soft Comfort).
Программа позволяет составлять схемы в двух видах: функциональные схемы (FBD) и релейные схемы (LAD).

FBD (Function Block Diagram) — графический язык программирования стандарта МЭК 61131–3. Программа образуется из списка цепей, выполняемых последовательно сверху вниз. При программировании используются наборы библиотечных блоков. Блок (элемент) — это подпрограмма, функция или функциональный блок (И, ИЛИ, НЕ, триггеры, таймеры, счётчики, блоки обработки аналогового сигнала, математические операции и др.). Каждая отдельная цепь представляет собой выражение, составленное графически из отдельных элементов. К выходу блока подключается следующий блок, образуя цепь. Внутри цепи блоки выполняются строго в порядке их соединения. Результат вычисления цепи записывается во внутреннюю переменную либо подается на выход контроллера.



Ladder Diagram (LD, LAD, РКС) — язык релейной (лестничной) логики. Синтаксис языка удобен для замены логических схем, выполненных на релейной технике. Язык ориентирован на специалистов по автоматизации, работающих на промышленных предприятиях. Обеспечивает наглядный интерфейс логики работы контроллера, облегчающий не только задачи собственно программирования и ввода в эксплуатацию, но и быстрый поиск неполадок в подключаемом к контроллеру оборудовании. Программа на языке релейной логики имеет наглядный и интуитивно понятный инженерам-электрикам графический интерфейс, представляющий логические операции, как электрическую цепь с замкнутыми и разомкнутыми контактами. Протекание или отсутствие тока в этой цепи соответствует результату логической операции (истина — если ток течет; ложь — если ток не течет). Основными элементами языка являются контакты, которые можно образно уподобить паре контактов реле или кнопки. Пара контактов отождествляется с логической переменной, а состояние этой пары — со значением переменной. Различаются нормально замкнутые и нормально разомкнутые контактные элементы, которые можно сопоставить с нормально замкнутыми и нормально разомкнутыми кнопками в электрических цепях.


Такой способ программирования оказался очень удобным для легкого вхождения в разработку систем АСУ инженеров-электриков и электронщиков. Разрабатывая проекты устройств, они могут легко привязать работу этих установок к алгоритмам работы контроллера.

Построенная на этих представлениях программа FLProg работает с Arduino. Почему?
Плата очень удобна для быстрой разработки и отладки своих устройств, что важно не только радиолюбителям, но весьма полезно, например, и в школьных кружках, и в учебных лабораториях колледжей. Одно из преимуществ — вам не нужен программатор. Вы подключаете плату Arduino к компьютеру и готовую программу загружаете из среды разработки. В настоящее время существует богатый выбор модулей Arduino, дополнительных модулей, работающих с Arduino, датчиков и исполняющих устройств.

В настоящее время программой поддерживаются следующие версии Arduino: Arduino Diecimila, Arduino Duemilanove, Arduino Leonardo, Arduino Lilypad, Arduino Mega 2560, Arduino Micro, Arduino Mini, Arduino Nano (ATmega168), Arduino Nano (ATmega328), Arduino Pro Mini, Arduino Pro (ATmega168), Arduino Pro (ATmega328), Arduino UNO. Кроме того недавно в списке поддерживаемых контроллеров появилась плата Intel Galileo gen2. В дальнейшем предполагается пополнение и этого списка, и, возможно, добавление плат, основанных на контроллерах STM.

Проект в программе FLProg представляет собой набор своеобразных плат, на каждой из которых собран законченный модуль общей схемы. Для удобства работы каждая плата имеет наименование и комментарии. Также каждую плату можно свернуть (для экономии места в рабочей зоне, когда работа над ней закончена) и развернуть.

Состав библиотеки элементов для языка FBD на текущий момент. Оформление
  • Надпись
  • Изображение

Базовые элементы
  • [OR]
  • [AND]
  • [Bounce]
  • [XOR]
  • Таблица состояний

Специальные блоки
Тригеры
Таймеры
Счетчики
Математика
  • [SUM (+)]
  • [MUL (*)]
  • [SUB (-)]
  • [DIV (/)]

Алгебра
  • [COS]
  • [ABS]
  • [MAX]
  • [POW]
  • [SQRT]
  • [TAN]
  • [MIN]
  • [SQ]
  • [RANDOM]
  • [SIN]

Сравнение
UART
  • Отправка в UART
  • Приём из UART
  • Отправка переменной в UART
  • Прием переменной из UART

Переключатель
Моторы
Часы реального времени
  • [Alarm]
  • [GetTime]
  • [SetTime]

Дисплеи
  • Дисплей на чипе НD44780
  • Подсветка дисплея на чипе НD44780 I2C
  • Блок декодирования семисегментного индикатора

Строки
  • Сложение строк
  • Сравнение строк
  • Длинна строки
  • Поиск подстроки
  • Получение подстроки
  • Получить символ из строки
  • Добавить Char к строке

Массивы
  • Запись элемента в массив
  • Получение элемента массива
  • Сумма элементов массива
  • Стек
  • Поиск элемента в массиве

Датчики
  • [DS18×2x]
  • [IR Ressive]
  • [Ultrasonic HC-SR04]
  • [DHT11, DHT21, DHT22]
  • [BMP-085]
  • [Bh2750LightMeter]

SD карта
  • Выгрузка файла с SD карты
  • Запись переменной на SD карту

Конвертация типов
  • Преобразование Float в Integer
  • Преобразование строк
  • → Byte
  • → Char

Микросхемы расширений
  • Расширитель выводов 74HC595
  • Драйвер светодиодов MAX7219

Операции с битами
  • Дешифратор
  • Шифратор
  • Чтение бита
  • Запись бита

Разное
  • Матричная клавиатура
  • Пьезо динамик
  • Сканирование шины OneWare

EEPROM
  • Запись в EEPROM
  • Чтение из EEPROM

Коммуникации
  • RessiveVariableFromCommunication
  • WebServerPage
  • SendVariableFromCommunication
  • WebClient

Готовые сервисы
  • narodmon.ru
  • goplusplatform.com
  • Удалённое управление через RemoteXY

Состав библиотеки элементов для языка LAD на текущий момент. Оформление
  • Надпись
  • Изображение

Базовые блоки
  • Контакт
  • Катушка
  • Защита от дребезга
  • Выделение переднего фронта
  • Таблица состояний

Специальные реле
  • Двустабильное реле
  • Реле времени
  • Генератор
  • Реле сравнения

Алгебра
  • SIN
  • COS
  • TAN
  • ABS
  • MAX
  • MIN
  • SQ
  • SQRT
  • POW
  • RANDOM

Аналоговые блоки
  • Масштабирование
  • Математика
  • Счетчик
  • Аналоговый переключатель
  • Переключатель много к одному
  • Переключатель один ко многим
  • Аналоговый вход контроллера
  • Аналоговый выход контроллера
  • Вход аналогового соеденителя
  • Выход аналогового соеденителя
  • Скоростной счетчик

UART
  • Отправка в UART
  • Приём из UART
  • Отправка переменной в UART
  • Прием переменной из UART

Моторы
  • Сервомотор
  • Шаговый двигатель

Часы реального времени
  • Получить данные
  • Будильник
  • Установка времени

Дисплеи
  • Дисплей на чипе HD44780
  • Блок управления подсветкой дисплея на чипе HD4480 I2C
  • Блок декодирования семисегментного индикатора

Строки
  • Сложение строк
  • Сравнение строк
  • Длинна строки
  • Поиск подстроки
  • Получение подстроки
  • Получить символ из строки
  • Добавить Char к строке

Массивы
  • Запись элемента в массив
  • Получение элемента массива
  • Сумма элементов массива
  • Стек
  • Поиск элемента в массиве

Датчики
  • Ульразвуковой дальномер HC-SR04
  • Датчик температуры и влажности DHT11 (DHT21, DHT22)
  • Датчик температуры DS18×2x
  • IR Ressive
  • BMP-085
  • Bh2750 Light Meter

SD карта
  • Запись переменной на SD карту
  • Выгрузка файла с SD карты

Конвертирование типов
  • Конвертация строк
  • Преобразование Float в Integer
  • → Byte
  • → Char

Микросхемы расширений
  • Расширитель выводов 74HC595
  • Драйвер светодиодов MAX7219

Операции с битами
  • Шифратор
  • Дешифратор
  • Чтение бита
  • Запись бита

Разное
  • Матричная клавиатура
  • Пьезо динамик
  • Сканирование шины OneWare

EEPROM
  • Запись в EEPROM
  • Чтение из EEPROM

Коммуникации
  • Блок отправки переменной через коммуникации
  • Прием переменной через коммуникации
  • Страница Web сервера
  • Web клиент

Готовые сервисы
  • Передача данных на narodmon.ru
  • Удалённое управление через RemoteXY

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

© Geektimes

GUI-контроллер для проектов Arduino | RemoteXY

Мы все любим Arduino, верно? Ну вот что-то, что вы хотели бы. RemoteXY — это простой способ создать собственный графический интерфейс для контроллера Arduino, который можно использовать со смартфонов или планшетов. Вы можете подключиться к Arduino со смартфона, используя беспроводные средства, такие как USB, Bluetooth или WiFi.

RemoteXY Dashhoards — изображение с — http://remotexy.com/

Спонсорская ссылка

Этот проект спонсируется UTSource .UTSource является профессиональным поставщиком электронных компонентов.


Как работает RemoteXY?

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

RemoteXY работает

Как интегрировать RemoteXY в Arduino?

После завершения этапа проектирования вы можете извлечь исходный код непосредственно из RemoteXY.Это будет полный скетч, в который вы сможете добавлять свои собственные вещи и загружать прямо в Arduino.

Вы сможете загрузить со страницы загрузки RemoteXY специальное приложение, которое необходимо установить на Android и которое будет управлять соединением между Arduino и смартфоном?

Начало работы

Здесь вы найдете множество примеров для начала работы.

Вы можете начать учиться на них и создавать свои собственные проекты.Ваше воображение – ваш предел.

Поддержка RemoteXY IDE

Удаленные коды XY можно запрограммировать и загрузить с помощью следующих

  • Arduino IDE;
  • FLProg IDE;
  • МПИД;
Хотите попробовать? Проверьте это! – RemoteXY
Приложение

для беспроводного управления Arduino с помощью мобильного телефона

(12 полос сообщения) RemoteXY: Применение к ПК для управления Arduino ArduinocontrolforPC — Ресурсы документации по разработке оборудования — Библиотека CSDN https://download.csdn.net/download/u014331212/80934799

 RemoteXY для Arduino Простой способ создать и использовать мобильный графический интерфейс пользователя для плат и других контроллеров. Воспользуйтесь сайтом http://remotexy.com Mobile GUI Editor, вы можете создать свой собственный уникальный графический интерфейс пользователя и загрузить его в контроллер. С помощью этого мобильного приложения Вы сможете подключаться к контроллерам и управлять ими через графический интерфейс.
Графический интерфейс поддерживает следующие элементы:
— Кнопка;
— переключатель;
— выбор;
— ползунок;
— Джойстик ;
— Цвет RGB;
— Светодиод ;
— уровень;
— Печать текста;
— GUI Прочие элементы дизайна.
Соединение между контроллером и мобильным устройством использует:
— bluetooth;
— Клиенты беспроводной сети и точки доступа;
— принять IP или URL Ethernet;
— Доступ в Интернет из любого места через EC.
Генератор исходного кода поддерживает следующий контроллер:
— Arduino UNO,Arduino MEGA,Arduino Leonardo,Arduino Pro Mini,Arduino Nano,Arduino MICRO;
— WeMos D1, WeMos D1 R2, WeMos D1 мини;
— NodeMCU V2, NodeMCU V3;
— Плита воздушная;
Поддерживаемые коммуникационные модули:
— bluetooth HC-05,HC-06 Или совместимые;
— bluetooth BLE HM-10 или совместимый;
— беспроводной ESP8266;
— Экранирование Ethernet W5100;
Поддерживается IDE:
— Arduino IDE;
— FLProg IDE;

Как установить RemoteXY: управление Arduino для ПК с Windows или MAC:

RemoteXY:Управление Arduino Автор: Шемануев Евгений Разработаны приложения для Android Tools, опубликованы в Google Play В магазине.до сих пор он набрал около 50000 секунд установки, оставайтесь в игре. Средний балл в магазине составляет 4,0 филиала (полные оценки 5 филиала).

RemoteXY: Arduino Control должен иметь версию операционной системы Android 2.2 и выше. Кроме того, содержимое этого приложения оценивается как «Все люди». Вы можете решить, подходит ли оно для вашей семьи, для установки детьми или взрослыми. RemoteXY: Arduino Control — это приложение для Android, которое нельзя установить непосредственно на ПК с Windows или МАК вкл.

Android Симулятор представляет собой программное приложение, позволяющее имитировать операционную систему Android в операционной системе Android на ПК. Приложения и игры для Android. В интернете много бесплатных Android Simulator. однако симулятор потребляет много системных ресурсов для имитации операционной системы и запуска приложений на ней. поэтому рекомендуется загрузить и установить на ПК. Перед тем, как перейти на Android, проверьте минимальные и необходимые системные требования для симуляторов.

Ниже вы найдете инструкции по установке и запуску на ПК RemoteXY:Arduino Control:

  • Сначала возьмите Android Загрузите и установите симулятор на свой ПК
  • Загрузить пульт дистанционного управления XY:Arduino control APK На свой ПК
  • open RemoteXY:Arduino Используйте симулятор для управления APK или перетащите файл APK в симулятор, чтобы установить приложение.
  • Если вы не хотите загружать APK-файл, вы можете использовать свою учетную запись Google. Учетная запись подключена к симулятору и напрямую из Play Store загружает приложения для установки RemoteXY: компьютер управления Arduino.

Если вышеперечисленные шаги выполнены правильно, вы должны быть готовы RemoteXY: управление Arduino, чтобы работать в режиме Windows PC или MAC Up. Кроме того, перед установкой Вы можете проверить минимальные системные требования симулятора на официальном сайте.Таким образом, Вы можете избежать любых технических проблем, связанных с системой.

 

RemoteXY — это простой способ создать и использовать мобильный графический интерфейс пользователя для плат Arduino и других контроллеров. С помощью редактора мобильных графических интерфейсов, расположенного на сайте http://remotexy.com, вы можете сделать свой уникальный графический интерфейс пользователя и загрузить его в контроллер. С помощью этого мобильного приложения вы сможете подключиться к контроллеру и управлять им через графический интерфейс.
Графический интерфейс поддерживает следующие элементы:
— Кнопка;
— Переключатель;
— Выбрать;
— Слайдер;
— Джойстик;
— цвет RGB;
— Светодиод;
— Уровень;
— Текстовая печать;
— Другие элементы дизайна графического интерфейса.
Соединение между контроллером и мобильным устройством с помощью:
— Bluetooth;
— WiFi-клиент и точка доступа;
— Ethernet по IP или URL;
— Интернет из любого места через Облачный сервер.
Генератор исходного кода поддерживает следующие контроллеры:
— Arduino UNO, Arduino MEGA, Arduino Leonardo, Arduino Pro Mini, Arduino Nano, Arduino MICRO;
— WeMos D1, WeMos D1 R2, WeMos D1 мини;
— NodeMCU V2, NodeMCU V3;
— AirBoard;
Поддерживаемые модули связи:
— Bluetooth HC-05, HC-06 или совместимые;
— Bluetooth BLE HM-10 или совместимый;
— Wi-Fi ESP8266;
— Экран Ethernet W5100;
Поддерживаемая IDE:
— Arduino IDE;
— FLProg IDE;

Как установить RemoteXY: управление Arduino для ПК с Windows или MAC:

RemoteXY: управление Arduino — это приложение Android Tools, разработанное Шемануевым Евгением и опубликованное в магазине Google Play.На данный момент он получил около 50000 установок со средней оценкой 4,0 из 5 в магазине игр.

RemoteXY: для управления Arduino требуется ОС Android версии 2.2 и выше. Кроме того, приложение имеет рейтинг контента «Все», из которого вы можете решить, подходит ли оно для установки для семьи, детей или взрослых пользователей. RemoteXY: управление Arduino — это приложение для Android, которое нельзя установить напрямую на ПК с Windows или MAC.

Android Emulator — это программное приложение, позволяющее запускать приложения и игры для Android на ПК путем эмуляции ОС Android.В Интернете доступно множество бесплатных эмуляторов Android. Однако эмуляторы потребляют много системных ресурсов для эмуляции ОС и запуска на ней приложений. Поэтому рекомендуется проверить минимальные и требуемые системные требования эмулятора Android, прежде чем загружать и устанавливать его на свой компьютер.

Ниже вы найдете, как установить и запустить RemoteXY: управление Arduino на ПК:

  • Сначала загрузите и установите эмулятор Android на свой ПК
  • Скачать APK RemoteXY: управление Arduino на свой ПК
  • Откройте RemoteXY: Arduino управляет APK с помощью эмулятора или перетащите файл APK в эмулятор, чтобы установить приложение.
  • Если вы не хотите загружать APK-файл, вы можете установить RemoteXY: компьютер управления Arduino, подключив свою учетную запись Google к эмулятору и загрузив приложение напрямую из магазина игр.

Если вы правильно выполнили описанные выше шаги, у вас должен быть готов RemoteXY: элемент управления Arduino для запуска на вашем ПК с Windows или MAC. Кроме того, вы можете проверить минимальные системные требования эмулятора на официальном сайте перед его установкой. Таким образом, вы можете избежать любых технических проблем, связанных с системой.

Сравнение

: RemoteXY и Blynk IoT

Конструктор приложений IoT с функцией перетаскивания

Вам нужно удобное и красивое приложение для подключенного продукта или проекта IoT? Узнайте, почему более 500 000 разработчиков и компаний любят конструктор мобильных приложений Blynk с функцией перетаскивания!

Blynk — это простой и мощный конструктор приложений без кода, с помощью которого вы можете создавать прототипы, развертывать подключенные электронные устройства и управлять ими в любом масштабе — от ваших личных проектов до миллионов продуктов, используемых вашими клиентами.
Подключите свое оборудование, такое как ESP32, Arduino, Raspberry Pi, Seeed, Particle, SparkFun, Adafruit, TI и другие, к облаку и используйте широкий спектр виджетов, таких как кнопки, ползунки, диаграммы и т. д., для создания пользовательского интерфейса для визуализации данные датчиков и управлять любой электроникой.
Начать работу с Blynk очень просто. Первые результаты вы увидите уже через 5 минут!

Готово для конечных пользователей

Blynk также является очень удобным приложением IoT для всех остальных. После активации устройств пользователи могут:

• Легко подключать поддерживаемые устройства
• Удаленно управлять поддерживаемыми устройствами из любой точки мира
• Добавлять несколько устройств и управлять ими с помощью одного приложения
• Получать push-уведомления и уведомления по электронной почте в режиме реального времени
• Создавать Автоматизация: делайте устройства умнее, создавая сценарии для одного или нескольких устройств.В зависимости от состояния устройства, дня недели, времени, заката или восхода солнца и т. д.
• Управление доступом к устройствам других людей.
• Взаимодействуйте с голосовыми помощниками, такими как Amazon Echo и Google Home. Он создан разработчиками для разработчиков и заработал более 3200 звезд GitHub, поэтому вы знаете, что подписываетесь на постоянно улучшающуюся систему. Библиотеки Blynk высоко оценены такими сообществами IoT, как Arduino, Particle и другими.

Вот что вы получите после регистрации:

• Бесплатное облачное хранилище, размещенное, защищенное и готовое к прослушиванию ваших устройств
• Blynk.Edgent, наша аппаратная библиотека с ОТКРЫТЫМ ИСТОЧНИКОМ, которая поддерживает более 400 плат разработки оборудования, включая ESP32. , Arduino, Particle, платы Texas Instruments, терминал Seeed WIO и многие другие.
• Blynk.360 — мощный веб-портал для управления устройствами, пользователями и организациями
• Настройка Wi-Fi устройств
• Визуализация данных любых датчиков
• Удаленное управление любыми электронными устройствами
• Беспроводные обновления прошивки
• Умные оповещения и уведомления
• Общий доступ к устройствам
• Анализ данных
• Отслеживание активов
• и многое другое

RemoteXY: управление Arduino APK

RemoteXY: управление Arduino для Android — это приложение arduino , специально разработанное для полнофункционального поддерживаемого приложения.RemoteXY — это простой способ создать и использовать мобильный графический интерфейс пользователя для плат контроллеров. С помощью этого приложения вы сможете подключиться к плате и управлять ею через графический интерфейс. Поддерживаемые платы:. — платы ESP32; — платы ESP32; Поддерживаемая среда разработки:.

Ключевые особенности RemoteXY: управление Arduino

  • Управление Arduino и другими платами через WiFi, Bluetooth, USB, Интернет с помощью графического интерфейса
  • WiFi-клиент и точка доступа;
  • Bluetooth;
  • Arduino UNO, MEGA, Leonardo, Pro Mini, Nano, MICRO и совместимые платы AVR;
  • плат ESP8266;
  • плат ESP32;
  • Bluetooth HC-05, HC-06 или совместимый;
  • Bluetooth BLE HM-10 или совместимый;
  • ESP8266 в качестве модема;
  • Arduino IDE;
  • FLProg IDE;
  • Приложение с поддержкой Arduino, которое является отличной альтернативой Virtuino .
  • RemoteXY: APK для управления Arduino для Android доступен для бесплатного скачивания.
  • Обновлено 23 января 2022 г.
  • Все движки VirusTotal определили этот файл как безопасный и неопасный.

Связанный: Arduino Автомобиль: Arduino-автоматическое управление с bluetooth

RemoteXY: видеоролики управления Arduino

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

Видео учебник, объясняющий, как это приложение работает. У нас есть больше обзоров, пошаговых инструкций и видео геймплея на нашем бесплатном Android-канале YouTube . Как управлять светодиодом через приложение для мобильного телефона Android с помощью ESP8266 RemoteXY Remote XY — Как управлять Arduino с помощью смартфона с классным пользовательским интерфейсом [Полное руководство]

Это хорошо?

Что ж, как самое эффективное приложение с общим рейтингом 4,00 из 89 голосов, поданных , я могу с уверенностью подтвердить, что Это хорошо и стоит попробовать .Вот что люди говорят о RemoteXY: Управление Arduino:

как загрузить полную версию я 3 раза попробовать мой счет платежа сократить и erorr unsucsessfull msg плз помогите мне братан мне нужно это приложение у меня есть карта виза попробуйте o индия бхаи киси ке пройти иски лицензии kye hai to dedo yaar jitne pase inko dene hai me apko de dunga yaar je app mujse скачать nai ho rahi hai bhai plz help kro na yaar
Удивительное приложение… для подключения к esp-устройствам не требуется Интернет, что обеспечивает очень низкую задержку и быстрый отклик.Также разработка интерфейса на ПК более удобна, чем, скажем, на телефоне. Это, пожалуй, лучшее приложение, которое можно найти для управления роботами Arduino с помощью телефона…….

Убийственное приложение remotexy от Шемануева Евгения

Как ему удается быть таким хорошим приложением для инструментов? Легко, мне нравится, как RemoteXY: приложение управления Arduino создано как надежное приложение boards с потрясающими функциями. Шемануев Евгений успешно приложил усилия и разработал сложное программное обеспечение bluetooth .Попробуйте сами, я уверен, что вам тоже понравится.

При загрузке вы получите приложение-инструмент, прекрасно работающее на большинстве новейших устройств на базе Android. Несмотря на то, что с момента первоначального выпуска он был загружен 161 326 раз, он постоянно обновляется. Становится еще лучше, когда вы понимаете, что последний из них датирован 23 января 2022 года.

Как это выглядит на реальном устройстве

Правильный скриншот стоит тысячи слов. Вот несколько высококачественных снимков экрана, специально отобранных для предварительного просмотра этого поддерживаемого приложения Bluetooth.

Связанный: PLC Ladder Simulator 2: Симулятор языка релейной логики и генератор кода для плат Arduino.

Загрузите APK-файл RemoteXY: управление Arduino для Android и установите

Я хотел бы рассказать вам о , как загрузить и установить APK-файл RemoteXY: управление Arduino для Android всего за пять простых шагов. Но сначала давайте немного познакомимся с файлами APK. Android Package Kit — это формат файла пакета приложений Android, используемый для распространения файлов и их установки на устройствах с ОС Android.Установка приложений и игр из APK-файла — это простой и понятный процесс, который вы запомните навсегда, если сделаете это один раз. это безопасный и работающий способ обойти ограничения , введенные разработчиками для распространения приложений в некоторых географических регионах.

Шаг 1. Загрузите APK-файл RemoteXY: управление Arduino на Android-устройство

Нажмите синюю кнопку ниже и перейдите на страницу загрузки. Там вы выберете доступный метод загрузки.

Шаг 2. Выберите способ загрузки

Имейте в виду, что некоторые приложения и игры могут быть недоступны в Google Play для вашей страны проживания.Вы можете сохранить APK-файл с зеркал Android Freeware вместо того, чтобы загружать программное обеспечение из Play Store. Мы гордимся тем, что обслуживаем ваши рабочие зеркала 99,9% времени .

Шаг 3. Разрешите установку сторонних приложений.

Если вы получаете предупреждение об установке после запуска сохраненного файла, нажмите Меню > Настройки > Безопасность > и установите флажок Неизвестные источники , чтобы разрешить установку из этого источника! Это нужно делать только при первой установке неизвестного APK-файла.

Шаг 4. Найдите и установите загруженный файл APK

Я предлагаю использовать приложение файлового менеджера (мой выбор — MiXPlorer, так как оно надежное и простое в использовании), чтобы найти APK-файл RemoteXY: управление Arduino. Чаще всего он находится в папке Downloads . Откройте его сейчас и приступайте к установке (ознакомьтесь с этим руководством по загрузке и установке файлов APK и XAPK, если у вас возникнут трудности).

Шаг 5: Запустите приложение и наслаждайтесь

Запустите установленное приложение для управления RemoteXY: Arduino и наслаждайтесь!

Это безопасно?

Я настоятельно рекомендую RemoteXY: управление Arduino как хорошее программное обеспечение.С более чем 161 000 загрузок и подсчетом загрузок это безопасное приложение для загрузки, установки и обмена с друзьями.

Обратите внимание, что файл APK может работать на любом популярном эмуляторе Android. Вы также можете отправлять отчеты DMCA здесь.

Технические характеристики

Лицензия Бесплатно
Совместимость Требуется Android 2.3 и выше
Язык Английский
Категории инструменты, remotexy, arduino, поддерживаемые, bluetooth, платы
Размер файла 4.7М
Текущая версия 4.10.2
Подходит для Все
Дата выпуска
Разработчик Шемануев Евгений
Загрузки 161 326
Варианты загрузки APK / Google Play
Рейтинг пользователей 4.00 из 5 из 89 оценок

RemoteXY: альтернативы управления Arduino

По моему скромному мнению, хорошо иметь еще одно приложение tools , такое как arduino . Вы никогда не знаете, когда вам понадобится хороший аналог bluetooth . Ниже приведены некоторые другие приложения, такие как Arduino Programming Tutorial и ArduinoDroid , сравниваемые и доступные для бесплатной загрузки.

Сравните популярные альтернативные приложения

Сравнение 4 лучших приложений, похожих на RemoteXY: управление Arduino
Титул загрузок Рейтинг
RemoteXY: управление Arduino 161326 4.00
Bluetooth-управление Arduino 235577 4.10
Автомобиль Arduino 174175 3,70
Радиоуправляемая машина Arduino Bluetooth 1037462 4,00
Учебник по программированию Arduino 159948 3,80

Bluetooth-управление Ардуино Получите полный контроль над платами на базе микроконтроллеров через модули Bluetooth.

Автомобиль Ардуино Arduino-автоуправление с bluetooth

Радиоуправляемая машинка Arduino Bluetooth Управляйте своим радиоуправляемым автомобилем на базе Arduino с помощью телефона

Учебник по программированию на Arduino Учебники по программированию на ардуино.Изучайте и создавайте потрясающие проекты Arduino!

Виртуино Платформа IoT HMI — MQTT, MODBUS, HTTP, Bluetooth, WIFI, Thingspeak

ArduinoDroid Пишите скетчи, компилируйте и загружайте в Arduino/ESP8266/ESP32 через USB или WiFi

Симулятор лестницы ПЛК 2 Симулятор языка лестничной логики и генератор кода для плат Arduino.

Блинк Создайте приложение IoT за 5 минут. Работает с Arduino, ESP8266, ESP32, Raspberry Pi и т. д.

RemoteXY: управление Arduino PRO (com.shevauto.remotexy.pro) APK

Управление Arduino и другими устройствами через WiFi, Bluetooth, сеть, Интернет. Создайте свой собственный графический интерфейс

Информация о приложении

Скачать версию 4.5.1 (451)
Размер APK 5,70 МБ 5.70 MB
Shamemauev Evgeny
Malware Check Неизвестно
Установить на Android 2.3.x и выше
Пакет приложений com.shevauto.remotexy.pro.apk
MD5 F5A06FBC4E77D379F79D616A5833C81A
5
сайт http://remotexy.com/

Скачать RemoteXY: управление Arduino PRO 4.5.1 APK

Описание приложения

RemoteXY: управление Arduino PRO — шевавто, удаленное управление, инструменты, удаленное управление, рейтинг контента — все (PEGI-3). Это приложение имеет рейтинг 5 от 1 пользователей, которые используют это приложение.Чтобы узнать больше о компании/разработчике, посетите сайт Шемануева Евгения, который ее разработал. Приложения com.shevauto.remotexy.pro.apk можно загрузить и установить на устройства Android 2.3.x и выше. Последняя версия 4.5.1 доступна для скачивания. Загрузите приложение с помощью своего любимого браузера и нажмите «Установить», чтобы установить приложение. Обратите внимание, что мы предоставляем как базовые, так и чистые APK-файлы, а также более высокую скорость загрузки, чем APK Mirror. Это приложение APK было загружено в магазине более 2026 раз.Вы также можете скачать APK-файл com.shevauto.remotexy.pro и запустить его с помощью популярных эмуляторов Android.

 RemoteXY — это простой способ создать и использовать мобильный графический интерфейс пользователя для плат контроллеров. С помощью редактора мобильных графических интерфейсов, расположенного на сайте http://remotexy.com, вы можете сделать свой уникальный графический интерфейс пользователя и загрузить его в контроллер. С помощью этого мобильного приложения вы сможете подключиться к контроллеру и управлять им через графический интерфейс.Графический интерфейс поддерживает следующие элементы:
- Кнопка;
- Выключатель;
- Выбирать;
- Слайдер;
- Джойстик;
- цвет RGB;
- ВЕЛ;
- Уровень;
- текстовая печать;
- Другие элементы дизайна графического интерфейса.
Связь между контроллером и мобильным устройством с помощью:
- Bluetooth;
- WiFi клиент и точка доступа;
- Ethernet по IP или URL;
Генератор исходного кода поддерживает следующие контроллеры:
- Arduino UNO, Arduino MEGA, Arduino Leonardo, Arduino Pro Mini, Arduino Nano, Arduino MICRO;
- WeMos D1, WeMos D1 R2, WeMos D1 мини;
- NodeMCU V2, NodeMCU V3;
- AirBoard;
Поддерживаемые коммуникационные модули:
- Bluetooth HC-05, HC-06 или совместимый;
- Bluetooth BLE HM-10 или совместимый;
- Wi-Fi ESP8266;
- Ethernet Shield W5100;
Поддерживаемая среда разработки:
- Arduino IDE;
- FLProg IDE;
  

Журнал изменений приложения

  • Новые возможности:
    — Подключение через облачный сервер.Ваши устройства доступны из любой точки мира.
    — Поддержка пароля доступа к устройству.

Экраны приложений

com-shevauto-remotexy-pro-451-50946264-f5a06fbc4e77d379f79d616a5833c81a.apk

Результаты сканирования APK

 
Apk, просканированный TotalVirus Antivirus, com.shevauto.remotexy.pro.apk был рискованным. Обнаружено 1 из 55 сканирований. 
Статистика сканирования:  подтвержденный тайм-аут: 0  |  сбой:1  |  безвредный:0  |  вредоносный:0  |  подозрительно:0  |  таймаут:6  |  тип неподдерживаемый:11  |  необнаруженный:56  |
Название: com-shevauto-remotexy-pro-451-50946264-f5a06fbc4e77d379f79d616a5833c81a.APK
SHA-1: 6454c71b285ac9b1464aa5deab595eab75745b04
SHA-256:ac4385862e8fe39d00cd21ee16067b158502a21892c3452a9cffcbf9cd4934d7
SSDEEP:98304:FDKNeg5NeBljboCdN08Wt8uQY2VFxnXUw7ply4ATDS2FoVHLi:t25NeBBlnLnuQYgFxnv7q/GyoVri
Тип файла: Android
Magic:Zip архив данных
Размер файла:5981303
Размер без сжатия: 7299404
Содержащиеся файлы: 373
Содержащиеся файлы по типу: MF: 1, RSA: 1, SF: 1, dex: 1, mp3: 89, png: 212, wav: 19, xml: 47,
 

RemoteXY: Arduino control PRO 4.5.1 APK Скачать Шемануев Евгений

Скачать RemoteXY: Arduino control PRO APK Для Android, название файла APK и компания-разработчик приложения: Шемануев Евгений .Последний Android APK Vesion RemoteXY: Arduino control PRO можно бесплатно загрузить APK, а затем установить на телефон Android.

Скачать RemoteXY: Arduino control PRO 4.5.1 APK Other Version

Для загрузки Other RemoteXY: Arduino control PRO версии Посетите RemoteXY: Arduino control PRO APK Архив.

Скачать RemoteXY: Arduino control PRO.apk android apk files version 4.5.1 Размер: 5981302 md5: 8d66bc565ca758e6833e605b06ddfe7a Автор: Шемануев Евгений Для этой версии нужен Gingerbread 2.3 — 2.3.2 Уровень API 9, NDK 5 или выше, мы индексируем версию из этого файла. Код версии 451 соответствует версии 4.5.1. Дополнительную информацию можно найти с помощью поиска com.shevauto.remotexy.pro в Google. shevauto,remotexy,tools,remote Найдет больше, например com.shevauto.remotexy.pro,RemoteXY: Arduino control PRO 4.5.1 Загружено 902 Время и все RemoteXY: Время загрузки приложения Arduino control PRO. RemoteXY — это простой способ создать и использовать мобильный графический интерфейс пользователя для плат контроллеров. С помощью редактора мобильных графических интерфейсов, расположенного на сайте http://remotexy.com, вы можете создать свой собственный уникальный графический интерфейс пользователя и загрузить его в контроллер. С помощью этого мобильного приложения вы сможете подключиться к контроллеру и управлять им через графический интерфейс. Графический интерфейс поддерживает следующие элементы: — Кнопка; — Выключатель; — Выбирать; — Слайдер; — Джойстик; — цвет RGB; — ВЕЛ; — Уровень; — текстовая печать; — Другие элементы дизайна графического интерфейса. Связь между контроллером и мобильным устройством с помощью: — Bluetooth; — WiFi клиент и точка доступа; — Ethernet по IP или URL; Генератор исходного кода поддерживает следующие контроллеры: — Arduino UNO, Arduino MEGA, Arduino Leonardo, Arduino Pro Mini, Arduino Nano, Arduino MICRO; — WeMos D1, WeMos D1 R2, WeMos D1 мини; — NodeMCU V2, NodeMCU V3; — AirBoard; Поддерживаемые коммуникационные модули: — Bluetooth HC-05, HC-06 или совместимый; — Bluetooth BLE HM-10 или совместимый; — Wi-Fi ESP8266; — Ethernet Shield W5100; Поддерживаемая среда разработки: — Arduino IDE; — FLProg IDE;

Управление Arduino PRO Android APK Скачать бесплатно – APKTurbo

   

4.3/5

419 оценок

Проявитель

Шемануев Евгений

Текущая версия
4.8.01
Дата публикации
Размер файла
4,8 МБ
Идентификатор пакета
com.shevauto.remotexy.pro
Цена
7,99 €
Скачиваний
5000+
Категория
Приложения для Android
Жанр
Инструменты

APK История версий
Версия
4.8.01 (*)
Архитектура
все
Дата выпуска
25 июня 2021 г.
Требование
Android 2.3 и выше

О Радио FM 90-х

RemoteXY — это простой способ создать и использовать мобильный графический интерфейс пользователя для плат контроллеров.С помощью редактора графического интерфейса, расположенного по адресу https://remotexy.com, вы можете сделать свой уникальный GUI и загрузить его на доску. С помощью этого приложения вы сможете подключиться к плате и управлять ею через графический интерфейс.
Поддерживаемые способы подключения:
— Интернет через облачный сервер;
— WiFi-клиент и точка доступа;
— Bluetooth;
— Ethernet по IP или URL;
— USB OTG;
Поддерживаемые платы:
— Arduino UNO, MEGA, Leonardo, Pro Mini, Nano, MICRO и совместимые платы AVR;
— платы ESP8266;
— платы ESP32;
Поддерживаемые модули связи:
— Bluetooth HC-05, HC-06 или совместимые;
— Bluetooth BLE HM-10 или совместимый;
— ESP8266 в качестве модема;
— Ethernet W5100;
Поддерживаемая IDE:
— Arduino IDE;
— FLProg IDE;

Что нового в этой версии

Исправлены некоторые ошибки

.

Добавить комментарий

Ваш адрес email не будет опубликован.