Управление через Qt
- Войдите на сайт для отправки комментариев
Здравствуйте! Помогите пожалуйста преодолеть порог вхождения.
Хочу написать приложение с графическим интерфейсом, управляющее не только Ардуиной, но и параллельно другими приборами через другие библиотеки. Соответственно, родная среда разработки не подходит. Пользоваться собираюсь C++ Qt через класс QextSerialPort. От Ардуины нужно всего лишь управлять герконами, подавая 0/5 В через цифровой порт.
Насколько понял, после подключения COM-порта отправление и считывание команд осуществляется методами QIODevice::read(qint64) и QIODevice::write(const QByteArray &). Ну и, собственно, сам вопрос: Что отправлять-то? Понятное дело, в родной среде есть простые и удобные функции, а вот чем заполнять этот мой QByteArray - не понимаю и нигде не могу найти. Например, каким набором байтов мне включить цифровой вывод N в режим OUTPUT, а затем установить на нем уровень HIGH?
Заранее извиняюсь, если ответ очевиден. Скорее всего я слишком привык к SCPI-командам или плохо представляю, как работать с COM-портом.
Соответственно, родная среда разработки не подходит.
Соответственно чему?
От Ардуины нужно всего лишь управлять герконами, подавая 0/5 В через цифровой порт.
Геркон это пассивный элемент, не требующий управления.
Понятное дело, в родной среде есть простые и удобные функции
Что? Что ты вообще имеешь в виду под "родной средой"?
Моим требованиям. Мне не удобен формат скетча, требуется графический интерфейс, экзешник, подключение библиотек, написанных под Qt... в конце концов Qt Creator мощнее в плане написания кода и я к нему привык.
Замыкать/размыкать герконовое реле.
Arduino IDE.
Arduino IDE.
Можно поинтересоваться, какое отношение имеет Ардуино ИДЕ к разработке графического интерфейса для компьютера?
Никаким! ;))
Я понял, что ты не понимаешь. ;)))
Ардуино - голый контроллер. Ты для него можешь написать программу, которая так или иначе будет интерпретировать "набор байт", принимаемый через UART.
Еще раз: сам пишешь, как будет реагировать Ардуина и на что. Сам придумываешь и сам реализуешь.
Моим требованиям. Мне не удобен формат скетча, требуется графический интерфейс, экзешник, подключение библиотек, написанных под Qt... в конце концов Qt Creator мощнее в плане написания кода и я к нему привык.
Так Qt Creator и есть родная среда для qt приложений.
Arduino IDE.
В Arduino IDE.нет никаких простых и понятных функций для работы с arduino из qt приложения. Да и вообще никаких нету.
Может ты хоть самый простой пример мигания светодиодом на ардуино посмотришь, прежде чем нести какую-то чушь тут?
Похоже, что так) Контроллеры не программировал, но сейчас погуглю. Посоветуйте, от чего оттолкнуться? В общем-то в конечном счете мне и нужна функция, аналогичная той, что используется в скетчах.
Посоветуйте, от чего оттолкнуться?
Начните хотя бы с ЭТОГО.
Никаким! ;))
Я понял, что ты не понимаешь. ;)))
Ардуино - голый контроллер. Ты для него можешь написать программу, которая так или иначе будет интерпретировать "набор байт", принимаемый через UART.
Еще раз: сам пишешь, как будет реагировать Ардуина и на что. Сам придумываешь и сам реализуешь.
Хм, в общем-то да, если внезапно посмотреть на Arduino-микроконтроллер как, собственно, на микроконтроллер, а Arduino IDE как на высокоуровневую среду его программирования и ничего более - тогда все вроде становится на свои места, и сама Arduino IDE оказывается действительно в тему, а Qt - вроде как и нет) Спасибо!
Просто с контроллерами не работал и изначально думал, что Arduino IDE обязывает меня работать только в этой среде и запускать ее каждый раз при выполнении программы, а плату Arduino как какой-нибудь измерительный прибор.
Выходит, в Arduino IDE мне в loop() нужно написать постоянную проверку вывода на наличие команды, а затем на Qt или где еще - драйвер с этой командой? Могу ли я использовать USB-B для приема этих команд? Впрочем, это я и сам, думаю, нагуглю.
В роликах Дмитрия Осипова есть как со смартфона управлять ардуиной
Мой совет. Начните с классики - блинка (т.е. поморгать светодиодом).
http://arduino.ru/Guide/Windows
Ну и после этого можно просто подключить ардуину к любой телефонной зарядке и она будет все также моргать светодиодом.
http://arduino.ru/Guide/Windows
Ну и после этого можно просто подключить ардуину к любой телефонной зарядке и она будет все также моргать светодиодом.
Спасибо) Да разобрался уже, суть проблемы была именно в том, о чем написал wdrakula. Вчера не получилось подключить через библиотеку QextSerialPort, но потом обнаружил, что с версии 5.1 Qt есть встроенный класс QtSerialPort, и он отработал как положено.
Единственное, не пойму теперь вот что. У меня Ardino Mega 2560 R3, при работе USB всегда будет подключен, так как основная работа будет происходить на компьютере. Пины "RX0" и "TX1" у меня под напряжением - это какое-то дублирование USB порта? Аналогично я могу распаять пины 14-19 еще на три USB? И не произойдет ли аварии, если 52 цифровых пина у меня будут одновременно работать при токе 36 мА? Ничего не перегрею? Скорее всего так делать не придется, но все же интересно.
Всё сгорит. Давай ты даташит на контроллер прочитаешь. Ты по аглицки читаешь ведь? Я надеюсь!
RX0 и TX0 через микросхему подключены к USB. Микросхема эта может быть CH340 (или подобная) на китайских ардуинах, а может быть еще один МК как на оригинальной так и на китайской. Функцию микросхема выполняет одну - преобразует сигнал с USB в UART и наоборот. Без крайней необходимости эти 2 пина лучше не использовать, а если все время будет подключение по USB, то рекомендую забыть что они есть на плате, только в программе где они будут выполнять работу Serial.
ps. Даташит не даташит, а вот спеки на ардуину лучше прочитать что она умеет: http://arduino.ru/Hardware/ArduinoBoardMega2560
"Каждый из 54 цифровых выводов Mega (...) может настраиваться как вход или выход. Выводы работают при напряжении 5 В. Каждый вывод (...) может пропускать до 40 мА."
Вот я это и прочитал. А потом даташит прочитал, но с наскока ничего не нашел (не понял). Выходит, можно? На самом деле никто так извращаться над портом не собирается, но все же интересно, какой суммарный ток выдерживает эта казявка, да еще и с наработкой 20 лет при 85 °С))
"Каждый из 54 цифровых выводов Mega (...) может настраиваться как вход или выход. Выводы работают при напряжении 5 В. Каждый вывод (...) может пропускать до 40 мА."
Вот я это и прочитал. А потом даташит прочитал, но с наскока ничего не нашел (не понял). Выходит, можно? На самом деле никто так извращаться над портом не собирается, но все же интересно, какой суммарный ток выдерживает эта казявка, да еще и с наработкой 20 лет при 85 °С))
Да, 40мА на порт, но общее потребление (порты + сам контроллер) не должно быть больше 200мА
В даташите надо смтореть Аbsolute Maximum Ratings