tutoriels:informatique:qtduino
Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédenteProchaine révisionLes deux révisions suivantes | ||
qtduino:accueil [2013/03/30 15:30] – créée vlamoine | qtduino:accueil [2013/04/04 09:32] – modif projet Qt Creator vlamoine | ||
---|---|---|---|
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 ! | ||
- | |||
- | L' | ||
- | Le PC est sous Ubuntu 12.04.2 desktop (64 bits) | ||
==== 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 | ||
+ | |||
+ | << | ||
==== Matériel ==== | ==== Matériel ==== | ||
- | * Un Arduino | + | * Un Arduino |
- | * Un PC (si le PC n'est pas sous Linux, il faudra adapter le code Qt) | + | * Un PC, s' |
* Un servomoteur | * Un servomoteur | ||
Ligne 26: | Ligne 24: | ||
=== Arduino === | === Arduino === | ||
- | On branche l' | + | On branche l' |
- | Rouge : 5V | + | Rouge : 5V\\ |
- | Marron : GND | + | Marron : GND\\ |
- | Jaune : D9 | + | Jaune : D9\\ |
- | Démarer | + | Démarrer |
< | < | ||
Ligne 55: | Ligne 53: | ||
=== Projet Qt Creator === | === Projet Qt Creator === | ||
- | Ouvrir le projet Qt Creator : double clic sur le .PRO | + | 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.txt · Dernière modification : 2024/04/26 14:48 de 127.0.0.1