Outils pour utilisateurs

Outils du site


projets:telecommande_apn:accueil

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révisionLes deux révisions suivantes
telecommande_apn:accueil [2013/04/24 23:49] – début d'écriture... vlamoinetelecommande_apn:accueil [2013/04/28 15:03] vlamoine
Ligne 75: Ligne 75:
 {{ :telecommande_apn:tele_apn-montage_closeup.jpg?direct&300 |}} {{ :telecommande_apn:tele_apn-montage_closeup.jpg?direct&300 |}}
  
 +On utilise les pins 2 et 3 pour commander les optocoupleurs.
 +
 +
 +=== Programmation de l'Arduino ===
 +
 +Nous allons maintenant programmer l'Arduino pour qu'il reçoive des commandes par USB, nous avons deux commandes à gérer : focus et shoot. On ajoutera une autre commande en plus shooter en rafale (on choisit alors le temps de la rafale)
 +
 +
 +
 + int time=100; // 100 millisecondes
 + int incomingByte = 0;
 + const int opto_focus = 2; // Optocoupleur
 + const int opto_shoot = 3; // Optocoupleur
 +  
 + void setup() 
 + {
 +   Serial.begin(9600); // On démarre la communication (baud-rate=9600)
 +   pinMode(opto_focus, OUTPUT); // Les pins opto sont en sortie
 +   pinMode(opto_shoot, OUTPUT); // Les pins opto sont en sortie
 + }
 +  
 + void loop() 
 + {
 + if (Serial.available() > 0) // Si on reçois des données alors...
 + {
 +   incomingByte = Serial.read(); // Lecture des bytes arrivant
 +   
 +   switch (incomingByte) // Suivant ce que le message contient
 +   {
 +   case 'f': // f comme focus
 +       digitalWrite(opto_focus, HIGH); // Focus..
 +       delay(300);
 +       digitalWrite(opto_focus, LOW);
 +   break;
 +   
 +   case 's': // s comme shoot
 +       digitalWrite(opto_shoot, HIGH); // Shoot !!
 +       delay(time); // time est à 100ms par défaut, c'est comme si on appuyait sur le bouton de l'appareil 0,1 seconde
 +       digitalWrite(opto_shoot, LOW); // On relâche le bouton
 +       delay(1);
 +   break;
 +   
 +   default:                    // Si le message n'est ni 's' ni 'f' alors on considère que c'est le temps de rafale
 +     time = incomingByte*100;
 +   }
 + }
 + }
 +
 +Compiler le programme et transférez le sur l'Arduino. Allumer et brancher l'appareil photo à la télécommande.
 +
 +Envoyez le message 's' grâce au terminal Arduino, l'appareil prend une photo !
 +
 +==== Programme Qt ====
 +On va dans cette partition créer un programme Qt pour prendre faire la mise au point, prendre des photos et régler le temps de rafale.
 +
 +Installer Qt et Qt creator :
 + sudo apt-get install -y qtcreator
 +
 +Télécharger et installer QextSerialPort (lire le README c'est pas compliqué !)
 +[[http://code.google.com/p/qextserialport/]]
 +
 +Démarrer un projet Qt Creator (Application : Qt Gui Application)
 +
 +usb_fz.pro
 + QT       += core gui
 +
 + greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 +
 + TARGET = USB_fz
 + TEMPLATE = app
 +
 + CONFIG += extserialport
 +
 + SOURCES += main.cpp\
 + usb_fz.cpp
 +
 + HEADERS  += usb_fz.h
 +
 + FORMS    += usb_fz.ui
 +
 +usb_fz.h
 + #ifndef USB_fz_H
 + #define USB_fz_H
 +
 + #include <QMainWindow>
 + #include <QtGui>
 + #include <QMessageBox>
 + #include <qextserialport.h>
 +
 + namespace Ui {
 + class USB_fz;
 + }
 +
 + class USB_fz : public QMainWindow
 + {
 +     Q_OBJECT
 +
 + public:
 +     explicit USB_fz(QWidget *parent = 0);
 +     void init_port(); // initialisation du port
 +     ~USB_fz();
 +
 + public slots:
 +     void transmitFocus(void); // fonction d'envoi
 +     void transmitShoot(void);
 +     void transmitCmd(int cmd);
 +
 + private:
 +     Ui::USB_fz *ui;
 +     QextSerialPort *port;
 + };
 +
 + #endif // USB_fz_H
  
projets/telecommande_apn/accueil.txt · Dernière modification : 2024/04/26 14:48 de 127.0.0.1