tutoriels:informatique:qtduino
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
qtduino:accueil [2013/03/30 14:46] – vlamoine | tutoriels:informatique:qtduino [2022/09/04 21:50] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Contrôler un Arduino grâce à Qt Creator ====== | ====== Contrôler un Arduino grâce à Qt Creator ====== | ||
- | |||
**Tout ces documents sont sous licence CC BY-NC-SA :** | **Tout ces documents sont sous licence CC BY-NC-SA :** | ||
Cette licence permet aux autres de remixer, arranger, et adapter votre œuvre à des fins non commerciales tant qu'on vous crédite en citant votre nom et que les nouvelles œuvres sont diffusées selon les mêmes conditions. | Cette licence permet aux autres de remixer, arranger, et adapter votre œuvre à des fins non commerciales tant qu'on vous crédite en citant votre nom et que les nouvelles œuvres sont diffusées selon les mêmes conditions. | ||
+ | |||
+ | Ce projet a été initié par Victor Lamoine | ||
==== Introduction ==== | ==== Introduction ==== | ||
- | |||
Pré-requis : Aucun ! Tout est expliqué et détaillé, aucune connaissance particulière n'est nécessaire. C'est réalisable par tout le monde ! | Pré-requis : Aucun ! Tout est expliqué et détaillé, aucune connaissance particulière n'est nécessaire. C'est réalisable par tout le monde ! | ||
==== Objectif ==== | ==== Objectif ==== | ||
- | |||
On va contrôler un servomoteur grâce a une application Qt. La communication se fait par le câble USB | On va contrôler un servomoteur grâce a une application Qt. La communication se fait par le câble USB | ||
[[http:// | [[http:// | ||
- | |||
==== Matériel ==== | ==== Matériel ==== | ||
- | * Un Arduino (j'utilisz est un Arduino Nano 3.0) | + | * Un Arduino (j'utilise |
- | * Un PC, s'il n'est pas sous Linux, il faudra adapter le code Qt (mon est sous Ubuntu 12.04.2 desktop (64 bits)) | + | * Un PC, s'il n'est pas sous Linux il faudra adapter le code Qt (le mien est sous Ubuntu 12.04.2 desktop (64 bits)) |
* Un servomoteur | * Un servomoteur | ||
Ligne 54: | Ligne 52: | ||
=== Projet Qt Creator === | === Projet Qt Creator === | ||
- | Ouvrir le [[http:// | + | Créez un projet Qt Creator: |
+ | Nommer le projet " | ||
- | Branchez l' | + | Aller dans formulaires, |
- | < | + | |
- | Le résultat devrait être ttyUSB0 par exemple. Modifier ligne 21 de usb_servo.cpp pour que le périphérique corresponde. | + | |
- | Pour exécuter le programme : Ctrl + R ou clic sur la flèche | + | **Widget - Nom**\\ |
+ | Qdial - "dial"\\ | ||
+ | Qslider - " | ||
+ | Qlcdnumber - " | ||
+ | Une fois les éléments crées appuyer sur F4 pour éditer les signaux/ | ||
+ | Créer les signaux suivants : | ||
+ | |||
+ | **Emetteur - Signal - Receveur - Slot**\\ | ||
+ | dial - sliderMoved(int) - lcd - display(int)\\ | ||
+ | dial - sliderMoved(int) - slider - setValue(int)\\ | ||
+ | slider - sliderMoved(int) - dial - setValue(int)\\ | ||
+ | slider - sliderMoved(int) - lcd - display(int)\\ | ||
+ | |||
+ | Modifier le contenu des fichiers suivants comme suit : | ||
+ | |||
+ | USB_servo.pro | ||
+ | < | ||
+ | |||
+ | TARGET = USB_servo | ||
+ | TEMPLATE = app | ||
+ | |||
+ | #add qExtSerialPort libs | ||
+ | CONFIG += extserialport | ||
+ | |||
+ | SOURCES += main.cpp\ | ||
+ | usb_servo.cpp | ||
+ | |||
+ | HEADERS | ||
+ | |||
+ | FORMS += usb_servo.ui | ||
+ | </ | ||
+ | |||
+ | usb_servo.h | ||
+ | < | ||
+ | #define USB_SERVO_H | ||
+ | |||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | |||
+ | namespace Ui { | ||
+ | class USB_servo; | ||
+ | } | ||
+ | |||
+ | class USB_servo : public QMainWindow | ||
+ | { | ||
+ | Q_OBJECT | ||
+ | | ||
+ | public: | ||
+ | explicit USB_servo(QWidget *parent = 0); | ||
+ | void init_port(); | ||
+ | ~USB_servo(); | ||
+ | |||
+ | public slots: | ||
+ | void transmitCmd(int value); // fonction d' | ||
+ | | ||
+ | private: | ||
+ | Ui:: | ||
+ | QextSerialPort *port; | ||
+ | }; | ||
+ | |||
+ | #endif // USB_SERVO_H | ||
+ | </ | ||
+ | |||
+ | usb_servo.cpp | ||
+ | < | ||
+ | #include " | ||
+ | |||
+ | USB_servo:: | ||
+ | QMainWindow(parent), | ||
+ | ui(new Ui:: | ||
+ | // Création de l' | ||
+ | { | ||
+ | init_port(); | ||
+ | ui-> | ||
+ | connect(ui-> | ||
+ | // On connecte le mouvement du bouton a l' | ||
+ | connect(ui-> | ||
+ | // On connecte le mouvement du slider a l' | ||
+ | transmitCmd(90); | ||
+ | // On initialise le servo à 90° | ||
+ | } | ||
+ | |||
+ | USB_servo:: | ||
+ | { | ||
+ | delete ui; | ||
+ | } | ||
+ | |||
+ | void USB_servo:: | ||
+ | { | ||
+ | QString dev_port = "/ | ||
+ | port = new QextSerialPort(dev_port); | ||
+ | // ls /dev/ | grep USB << | ||
+ | |||
+ | | ||
+ | if(!port-> | ||
+ | { | ||
+ | QMessageBox:: | ||
+ | } | ||
+ | |||
+ | // On parametre la liaison : | ||
+ | port-> | ||
+ | port-> | ||
+ | port-> | ||
+ | port-> | ||
+ | port-> | ||
+ | } | ||
+ | |||
+ | void USB_servo:: | ||
+ | { | ||
+ | QByteArray byte; //byte a envoyer | ||
+ | qint64 bw = 0; //bytes really writen | ||
+ | |||
+ | byte.clear(); | ||
+ | byte.append(value); | ||
+ | |||
+ | if(port != NULL){ // on vérifie que le port existe toujours | ||
+ | bw = port-> | ||
+ | //(bw récupere le nombre de byte écris) | ||
+ | qDebug() << bw << " | ||
+ | port-> | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | Branchez l' | ||
+ | < | ||
+ | |||
+ | Le résultat devrait être ttyUSB0 par exemple. Modifier ligne 21 de usb_servo.cpp pour que le périphérique corresponde. | ||
+ | Pour exécuter le programme : Ctrl + R ou clic sur la flèche “lecture” verte en bas à gauche. | ||
==== Problèmes ==== | ==== Problèmes ==== | ||
Chez moi le programme Qt a parfois du mal a ouvrir le port, débrancher et rebrancher l' | Chez moi le programme Qt a parfois du mal a ouvrir le port, débrancher et rebrancher l' |
tutoriels/informatique/qtduino.1364654764.txt.gz · Dernière modification : 2022/09/04 21:49 (modification externe)