1

Тема: QtDruino - библиотека для работы с Arduino через последовательный порт

Мне ребята на последний День рождения подарили Arduino UNO. Вот на днях решил поразбираться.
Вспомнил про робота Niko the Robot, решил соединить Arduino с N900.

В комплекте с подаренной платкой никаких средств беспроводной коммуникации не было,  поэтому подключал через USB, используя H-e-h. Немножко повозился, все вышло. Инструкция в базе знаний.

Потом нужно было сделать программную составляющую для общения с Arduino. Результатом стала библиотека QtDruino, позволяющая контролировать состояние пинов платы. Скачать ее исходники и скетчи (прошивки) для Arduino можно на github.

На видео ниже пример взаимодействия.

На то, о чем можно спросить на форуме, не отвечаю через личные сообщения, аську, почту и т.п. для общения есть jabber-конференция: maemo@conference.jabber.org.
QKit - инструментарий для быстрого кроссплатформенного создания приложений на QML.
FAQ по Nokia N9 - читаем, пополняем.
Прежде, чем задать вопрос, воспользуйтесь поиском!

17

Re: QtDruino - библиотека для работы с Arduino через последовательный порт

Ну и пускай любят. Я не ощущаю за собой обязанности писать свои изыскания на хабр.

На то, о чем можно спросить на форуме, не отвечаю через личные сообщения, аську, почту и т.п. для общения есть jabber-конференция: maemo@conference.jabber.org.
QKit - инструментарий для быстрого кроссплатформенного создания приложений на QML.
FAQ по Nokia N9 - читаем, пополняем.
Прежде, чем задать вопрос, воспользуйтесь поиском!

Сайт KiRiK

Поделиться

18

Re: QtDruino - библиотека для работы с Arduino через последовательный порт

хабр не нужен

Поделиться

19

Re: QtDruino - библиотека для работы с Arduino через последовательный порт

Здравствуйте обитатели форума.
Вопрос к  KiRiK - нужна Ваша помощь, удалось с ооочень долгими танцами с бубном повторить Ваш опыт Arduino + n900.
Собственно хочу переделать интерфейс программы для н900, но в программировании на qt да и вообще в этом деле начинающий, подскажите как лучше с Вами обсудить данный вопрос? Спасибо.

Поделиться

20

Re: QtDruino - библиотека для работы с Arduino через последовательный порт

sixaxis, можно прямо тут, например.

На то, о чем можно спросить на форуме, не отвечаю через личные сообщения, аську, почту и т.п. для общения есть jabber-конференция: maemo@conference.jabber.org.
QKit - инструментарий для быстрого кроссплатформенного создания приложений на QML.
FAQ по Nokia N9 - читаем, пополняем.
Прежде, чем задать вопрос, воспользуйтесь поиском!

Сайт KiRiK

Поделиться

21

Re: QtDruino - библиотека для работы с Arduino через последовательный порт

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

Поделиться

22

Re: QtDruino - библиотека для работы с Arduino через последовательный порт

sixaxis пишет:

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

Да нет, все есть уже.
Для задания цифрового значения пина нужно просто использовать метод digitalWrite.
Для считывания цифрового значения нужно установить состояние пина в DIGITAL_INPUT функцией pinMode, потом обрабатывать сигнал digitalValueChanged, который будет посылаться при изменении значения, или просто использовать digitalRead.

В файле Arduino.h есть комментарии ко всем функциям.

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

На то, о чем можно спросить на форуме, не отвечаю через личные сообщения, аську, почту и т.п. для общения есть jabber-конференция: maemo@conference.jabber.org.
QKit - инструментарий для быстрого кроссплатформенного создания приложений на QML.
FAQ по Nokia N9 - читаем, пополняем.
Прежде, чем задать вопрос, воспользуйтесь поиском!

Сайт KiRiK

Поделиться

23

Re: QtDruino - библиотека для работы с Arduino через последовательный порт

KiRiK пишет:
sixaxis пишет:

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

Да нет, все есть уже.
Для задания цифрового значения пина нужно просто использовать метод digitalWrite.
Для считывания цифрового значения нужно установить состояние пина в DIGITAL_INPUT функцией pinMode, потом обрабатывать сигнал digitalValueChanged, который будет посылаться при изменении значения, или просто использовать digitalRead.

В файле Arduino.h есть комментарии ко всем функциям.

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

Спасибо за ответ!! Я чуть чуть не правильно задал вопрос, в Вашей программе "simplecontrol", которая запускается на n900, можно вводить только аналоговые значения, т.е. в интерфейсе программы нет ни одной "кнопки" для ввода цифровых значений, т.е. в программе 5 "бар кнопок" и 1 окошко которое отображает аналоговый уровень с датчика света. Вопрос собственно заключается в программировании, подскажите пожалуйста как создать кнопку в интерфейсе программы, чтоб она задавала цифровое значение или направьте меня в "нужное русло")))  мне для примера хотяб одну кнопочку) а дальше я разберусь, желательно еще чтоб эта кнопочка была на физической клавиатуре, а состояние пина отображалось в проге.

MSP430 - Интересная "штучка")) добью проект на своей Freeduino и возьмусь за другие платформы!!
Надеюсь на Вашу помощь, огромное спасибо!!!

p.s. Наизвращался с программой simplecontrol и дуинками своими, слава богу у меня их 2е, 2ую использовал как конвертор))) т.е. снимал с первой аналог. сигнал заданный через n900 и передавал его на другую freeduinо (тупо соединив ноги), вторая считывала ШИМ уровень и и по его значению выставляла нужные "ноги" в HIGH ИЛИ LOW.  Задача частично решилась, но для полного "кайфа" этого не достаточно.

Поделиться

24

Re: QtDruino - библиотека для работы с Arduino через последовательный порт

sixaxis пишет:

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

Сначала допиши в класс MyArduino методы для работы с ним. Например, такие добавления (сразу скажу, что код пишу не проверяя, с возможными опечатками бороться придется тебе).

В MyArduino.h:

#define PIN_DIGITAL номер_пина // номер цифрового пина

...

Q_PROPERTY(bool digitalPinValue READ getDigitalPinValue WRITE setDigitalPinValue NOTIFY digitalPinValueChanged) // сотояние цифрового пина

...

/*!
     * \brief Получить значение цифрового пина.
     * \return значение пина (true - HIGHT, false - LOW)
     */
    bool getDigitalPinValue() {return this->digitalRead(PIN_DIGITAL) == Arduino::HIGH;}

    /*!
     * \brief Задать значение цифрового пина.
     * \param value значение пина (true - HIGHT, false - LOW)
     */
    void setDigitalPinValue(bool value) {this->digitalWrite(PIN_DIGITAL, value ? Arduino::HIGH : Arduino::LOW);}

...

    /*!
     * \brief Посылается при изменении свойства digitalPinValue.
     */
    void digitalPinValueChanged();

В MyArduino.cpp:

void MyArduino::digitalValueChangedHandler(unsigned char pin, Arduino::DigitalValue value) {
    switch (pin) {
    case PIN_DIGITAL:
        emit this->digitalPinValueChanged();
        break;
    }    
}

Затем нужно создать кнопку для изменения его состояния.
Попробуй создать новый элемент в Mail.qml (с его положением сам разберешься, я думаю):

        QKitButton {
            onClicked: arduino.digitalPinValue = !arduino.digitalPinValue;
        }
sixaxis пишет:

желательно еще чтоб эта кнопочка была на физической клавиатуре

В этом случае еще проще. В элемент page добавь

        Keys.onEnterPressed: arduino.digitalPinValue = !arduino.digitalPinValue;
sixaxis пишет:

а состояние пина отображалось в проге

Можно, например, регулировать цвет любого QKit-элемента в зависимости от состояния пина так:

backgroundColor: (arduino.digitalPinValue ? #FF0000 : #00FFFF);
На то, о чем можно спросить на форуме, не отвечаю через личные сообщения, аську, почту и т.п. для общения есть jabber-конференция: maemo@conference.jabber.org.
QKit - инструментарий для быстрого кроссплатформенного создания приложений на QML.
FAQ по Nokia N9 - читаем, пополняем.
Прежде, чем задать вопрос, воспользуйтесь поиском!

25

Re: QtDruino - библиотека для работы с Arduino через последовательный порт

этого более чем достаточно!!)) KiRiK спасибо Вам! По истине добрый админ))

Поделиться

26

Re: QtDruino - библиотека для работы с Arduino через последовательный порт

Код без ошибок))) Заработало с 1ого раза! Опять бессонные ночи.... Пайка....)))

Поделиться

27

Re: QtDruino - библиотека для работы с Arduino через последовательный порт

backgroundColor: arduino.digitalPinValue <= 0 ? #FF0000 : #00FFFF

Поделиться

28

Re: QtDruino - библиотека для работы с Arduino через последовательный порт

sixaxis, ?

На то, о чем можно спросить на форуме, не отвечаю через личные сообщения, аську, почту и т.п. для общения есть jabber-конференция: maemo@conference.jabber.org.
QKit - инструментарий для быстрого кроссплатформенного создания приложений на QML.
FAQ по Nokia N9 - читаем, пополняем.
Прежде, чем задать вопрос, воспользуйтесь поиском!

Сайт KiRiK

Поделиться

29

Re: QtDruino - библиотека для работы с Arduino через последовательный порт

- вы написали так:

backgroundColor: (arduino.digitalPinValue ? #FF0000 : #00FFFF);

а у меня заработало так:

backgroundColor: arduino.digitalPinValue <= 0 ? #FF0000 : #00FFFF

это первый форум в котором я что то написал))) Извините если что не так))
создал уже пару кнопочек, скоро выложу свой проект!!!

Поделиться

30

Re: QtDruino - библиотека для работы с Arduino через последовательный порт

Так оно, конечно, тоже раблтать будет. Но с противоположным поведением smile

На то, о чем можно спросить на форуме, не отвечаю через личные сообщения, аську, почту и т.п. для общения есть jabber-конференция: maemo@conference.jabber.org.
QKit - инструментарий для быстрого кроссплатформенного создания приложений на QML.
FAQ по Nokia N9 - читаем, пополняем.
Прежде, чем задать вопрос, воспользуйтесь поиском!

Сайт KiRiK

Поделиться

31

Re: QtDruino - библиотека для работы с Arduino через последовательный порт

усек))) а вот вопросик... купил я сегодня N810 (ну слабость у меня к трубкам nokia) за копейки, рабочий, хороший))) возможно ли на него прогу simplecontrol запилить? host вроде есть, гдето даже нарыл инфу что некий чел подключал, но там все на забугорном... 
p.s. Проект движется, сейчас за место датчика освещения прикрутил дальномер SHARP, так как в программировании не особо, попросил знакомого написать класс обработки сигнала с него, вот жду пока все вопросы утресуться ))) и еще вопрос фото того, что есть сюда прям можно выкинуть? Я в форумах полный 0 ...((

Поделиться