Contrôler une caméra avec un Arduino et RS232 bouclier (5 / 6 étapes)

Etape 5: programmation

Beaucoup de caméras qui est exploités par RS232 signalisation utiliser les commandes hexadécimales. Ces commandes sont envoyées à la caméra comme une série d’octets hexadécimaux. Un instantané du manuel qui répertorie quelques-unes des commandes est montré ci-dessus.

Un tableau d’octets hexadécimal est créé pour chaque commande que vous souhaitez utiliser. Lorsque vous utilisez la commande, il est important de faire correspondre la vitesse de transmission de votre appareil et envoyer chaque octet dans le tableau dans l’ordre. Dans le manuel on voit que le débit en bauds est 9600 bps de sorte que c’est ce qui a été spécifié dans le code. Il est aussi important de spécifier les ports que vous utiliserez pour TX et RX. Pour cela, lorsque vous configurez un SoftwareSerial.

Cet exemple de code ci-dessous a la caméra alternant entre 2 positions prédéfinies toutes les cinq secondes.

 // Serial Communication // October 29, 2015 // Purpose: Control the camera position using RS232 communications through a DB9 connector // with an attached RS232 Shield. // Status: WORKING#include <SoftwareSerial.h>// Do not use 0 and 1 if you want to be able to upload code while shield is attached to Arduino SoftwareSerial mySerial(2, 3); //2 is TX, 3 is RX // Camera Commands // Default message 8x 01 04 3F 02 0p FF where x is camera number and p is preset number byte preset1[7] = {0x81, 0x01, 0x04, 0x3F, 0x02, 0x01, 0xFF}; // Camera 1 preset byte preset2[7] = {0x81, 0x01, 0x04, 0x3F, 0x02, 0x02, 0xFF}; // Camera 2 presetbyte address_command[4] = {0x88, 0x30, 0x01, 0xFF}; // Sets camera address (Needed for Daisy Chaining) byte if_clear[5] = {0x88, 0x01, 0x00, 0x01, 0xFF}; // Checks to see if communication line is clearint delayTime = 500; //Time between commandsvoid setup() { Serial.begin(9600); // Serial Communication w/ Computer for Debugging mySerial.begin(9600); // Serial Communication w/ Camera //Send Address command for (int i = 0; i < 4; i++) { mySerial.write(address_command[i]); Serial.println("Address Byte Sent"); } delay(delayTime); //delay to allow camera time for next command //Send IF_clear command for (int i = 0; i < 5; i++) { mySerial.write(if_clear[i]); Serial.println("If Clear Byte Sent"); } }void loop() { for (int i = 0; i < (sizeof(preset1)); i++) // sizeof returns a count of bytes, not numbers if using int, float, or long { mySerial.write(preset1[i]); // sends each byte sequentially Serial.println("Camera Position 1 Byte Sent"); } delay(5000); // Waits for 5 seconds for (int i = 0; i < (sizeof(preset2)); i++) // sizeof returns a count of bytes, not numbers if using int, float, or long { mySerial.write(preset2[i]); // sends each byte sequentially Serial.println("Set Camera Position 2 Byte Sent"); } delay(5000); } 

Le deuxième exemple de code permet de contrôler la direction dans laquelle les poêlons de l’appareil photo en lui envoyant des commandes par le biais de la fenêtre de terminal sur votre ordinateur.

 // Serial Communication // October 30, 2015 // Purpose: Control the camera position using keyboard inputs // Status: WORKING#include <SoftwareSerial.h>// Do not use 0 and 1 if you want to be able to upload code while shield is attached to Arduino SoftwareSerial mySerial(2, 3); //2 is TX, 3 is RX // Camera Commands // Default message 8x 01 04 3F 02 0p FF where x is camera number and p is preset number byte preset1[7] = {0x81, 0x01, 0x04, 0x3F, 0x02, 0x01, 0xFF}; // Camera 1 preset byte preset2[7] = {0x81, 0x01, 0x04, 0x3F, 0x02, 0x02, 0xFF}; // Camera 2 preset// Camera Controls byte panLeft[9] = {0x81, 0x01, 0x06, 0x01, 0x09, 0x09, 0x01, 0x03, 0xFF}; // Pan Camera Left byte panRight[9] = {0x81, 0x01, 0x06, 0x01, 0x09, 0x09, 0x02, 0x03, 0xFF}; // Pan Camera Right byte panUp[9] = {0x81, 0x01, 0x06, 0x01, 0x09, 0x09, 0x03, 0x01, 0xFF}; // Pan Camera Up byte panDown[9] = {0x81, 0x01, 0x06, 0x01, 0x09, 0x09, 0x03, 0x02, 0xFF}; // Camera Pan Down byte panStop[9] = {0x81, 0x01, 0x06, 0x01, 0x09, 0x09, 0x03, 0x03, 0xFF}; // Camera Pan Downbyte address_command[4] = {0x88, 0x30, 0x01, 0xFF}; // Sets camera address (Needed for Daisy Chaining) byte if_clear[5] = {0x88, 0x01, 0x00, 0x01, 0xFF}; // Checks to see if communication line is clearint delayTime = 500; //Time between commandsvoid setup() { Serial.begin(9600); // Serial Communication w/ Computer for Debugging mySerial.begin(9600); // Serial Communication w/ Camera //Send Address command for (int i = 0; i < 4; i++) { mySerial.write(address_command[i]); } delay(delayTime); //delay to allow camera time for next command //Send IF_clear command for (int i = 0; i < 5; i++) { mySerial.write(if_clear[i]); } Serial.print("Please Input Commands"); }void loop() { // Checks for serial input from terminal if (Serial.available() > 0) { char inChar = Serial.read(); // read incoming serial data: if (inChar == '1') // Camera Preset 1 { for (int i = 0; i < (sizeof(preset1)); i++) { mySerial.write(preset1[i]); // sends each byte sequentially } } else if (inChar == '2') // Camera Preset 1 { for (int i = 0; i < (sizeof(preset2)); i++) { mySerial.write(preset2[i]); } } else if (inChar == 'w') // Pan Camera Up { for (int i = 0; i < (sizeof(panUp)); i++) { mySerial.write(panUp[i]); } } else if (inChar == 'a') // Pan Camera Left { for (int i = 0; i < (sizeof(panLeft)); i++) { mySerial.write(panLeft[i]); } } else if (inChar == 's') // Pan Camera Down { for (int i = 0; i < (sizeof(panDown)); i++) { mySerial.write(panDown[i]); } } else if (inChar == 'd') // Pan Camera Right { for (int i = 0; i < (sizeof(panRight)); i++) { mySerial.write(panRight[i]); } } else if (inChar == 'q') // Stop Camera Pan { for (int i = 0; i < (sizeof(panStop)); i++) { mySerial.write(panStop[i]); } } } } 

Articles Liés

Comment contrôler une RGB LED avec un Arduino

Comment contrôler une RGB LED avec un Arduino

Dans ce Instructable, je vais vous montrer comment contrôler une LED RGB avec un Arduino.Pour terminer ce projet, vous aurez besoin :1 x Arduino (j'utilise l'Arduino Uno R3)1 LED x RGB3 x 150-220 ohm résistances4 x fils de raccordement1 x planche à p
Comment contrôler les Servo moteurs avec un Arduino

Comment contrôler les Servo moteurs avec un Arduino

Ce projet de miniatures vous montrera comment contrôler un moteur servo avec un Arduino, mais vous devez d'abord savoir ce qu'un moteur d'asservissement est en réalité !Servo-moteurs sont des types spéciaux de moteurs qui ne tournent autour en cercle
Contrôler une imprimante 3D avec les gestes de la main

Contrôler une imprimante 3D avec les gestes de la main

j'ai écrit à ce sujet avant, mais j'ai réussi un laboratoire de technologie créative au California College of the Arts. J'ai aider les élèves avec un large éventail de compétences, créer un large éventail de projets. Une des nombreuses parties de mon
Comment contrôler une imprimante 3D avec un téléphone via AstroBox bricolage

Comment contrôler une imprimante 3D avec un téléphone via AstroBox bricolage

Cet Instructable va vous montrer comment configurer un serveur d'impression basée sur Raspberry Pi, vous pouvez contrôler et surveiller votre imprimante 3D à distance (y compris de tranchage distant) d'un téléphone, tablette ou ordinateur.Impression
Comment contrôler un électro-aimant avec un Arduino

Comment contrôler un électro-aimant avec un Arduino

électro-aimants sont amusants à jouer avec, mais de faire quelque chose plus que juste ramasser les trombones, dont vous avez besoin de mieux contrôler. Il s'agit d'un simple tutoriel sur comment faire fonctionner l'un avec l'Arduino, mais la constru
Comment contrôler un Tube Nixie avec un Arduino

Comment contrôler un Tube Nixie avec un Arduino

Un Tube Nixie est un tube au néon de gazeuse, qui possède une anode wiremesh avec divers cathodes en forme de chiffres ou de symboles. Retour dans les années 1950, ils ont été utilisés dans les ordinateurs, calculatrices et matériel de laboratoire. L
Contrôler les deux LEDS avec un Arduino et bitVoicer

Contrôler les deux LEDS avec un Arduino et bitVoicer

Donc ce que je veux faire ici est de faire plusieurs choses avec deux LEDs avec reconnaissance vocaleJ'utilise bitvoicer, vous pouvez l'obtenir iciÉtape 1: Liste des piècesAlors j'ai fais cela avec comme peu de pièces que je peux, voici la liste :LED
Contrôler les lumières avec le smartwatch de galets et l’Arduino

Contrôler les lumières avec le smartwatch de galets et l’Arduino

smartwatch The Pebble est... Eh bien, smart ! Dernières mises à jour sur une application de tierce partie iOS a permis pour l'envoi de la requête HTTP, ce qui est optimal pour le contrôle de nombreux systèmes de domotique.Dans ce tutoriel, je vais mo
Comment contrôler une voiture arduino via Bluetooth (pour débutants)

Comment contrôler une voiture arduino via Bluetooth (pour débutants)

Tous que nous savons que l'Arduino est une plate-forme de prototypage excellente, principalement parce qu'il utilise un langage de programmation convivial et il y a beaucoup de composants supplémentaires incroyables qui nous offrent des expériences e
Contrôler une LED avec votre IPhone

Contrôler une LED avec votre IPhone

Dans ce Instructable, je vais vous montrer comment faire votre propre application à l'aide de Xcode sur votre ordinateur Mac, puis comment utiliser l'application pour contrôler une LED par un arduino.Étape 1: matériaux Arduino Uno ConseilArduino Ethe
Comment contrôler une ampoule de LED WiFi LYT8266 avec Billy en 5 MINUTES

Comment contrôler une ampoule de LED WiFi LYT8266 avec Billy en 5 MINUTES

Dans ce tutoriel nous allons voir comment contrôler une ampoule LYT8266 WiFi en 5 minutes à l'aide de la nouvelle plate-forme puissante de Billy.Vous aurez besoin :-A LYT8266 ampoule (http://authometion.com/shop/en/home/13-lyt8266.html)-Billy APP pou
Contrôler votre appareil android avec une télécommande wii

Contrôler votre appareil android avec une télécommande wii

Hé les gars pour mon troisième instructable je vais vous montrer comment contrôler votre appareil android avec une Wiimotevous aurez besoin est1 x: télécommande wii1 x: appareil androidÉtape 1: Téléchargement de l'app tout d'abord, vous devez aller à
5 façons de contrôler une carte 2.0 (tour de magie)

5 façons de contrôler une carte 2.0 (tour de magie)

5 excellents moyens de contrôler une carte. 
Comment contrôler le zoom d’une caméra avec RC

Comment contrôler le zoom d’une caméra avec RC

Un ami m'a demandé si je pouvais sortir avec un moyen de contrôler la fonction de zoom de la caméra à distance sans démonter l'appareil et ruiner, c'est ce que je suis venu avec. Dans mon blog , je vais bientôt publier les détails de comment je l'ai