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 15:51] – [Matériel] vlamoine | tutoriels:informatique:qtduino [2024/04/26 14:48] (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' | * Un Arduino (j' | ||
| - | * 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.1364655076.txt.gz · Dernière modification : 2024/04/26 14:49 (modification externe)
