Basé sur le uBasic de Adam Dunkel, SDM utilise certaines commandes de scripts de CHDK et en introduit quelques unes à lui.
La plupart des utilisateurs emploieront des scripts disponibles au publique ou, s'ils en écrivent, emploieront relativement peu de commandes disponibles.
Pour référence, les commandes supportées par SDM sont listées ci-dessous.
Dave Mitchell a écrit un programme de mise au point (debugger) pour les scripts uBasic de SDM, vous pouvez le télécharger ici.
Si vous écrivez vos propres scripts, utilisez un simple éditeur de textes (tels que le Bloc-Note ou Wordpad) et sauvez-le en plein format ANSI (pas unicode).
Assurez-vous que la première ligne de votre script n'est pas vide mais qu'il ya un ligne vide à la fin du script.
Chaque ligne sous '@title' doit commencer par 'rem'.
Si le script est nommé Startup.bas et que "autostart" est activé dans le menu Script, votre script normal par défaut sera toujours prêt à être utilisé.
Pour créer unréglage de paramètre pour un script particuleir, copier-et-coller le script @param et @default fields dans un fichier texte.
Le fichier texte devra avoir le même nom que le script mais avec un suffix numérique (0 à 9) pour indiquer le numéro du réglage du paratmètre.
L'extension devra être .TXT et le nom du fichier ne devra pas dépasser huit caractères, inclu le suffix.
Sauver le fichier dans le dossier PARAMS.
Le script des réglages des paramètres peut inclure quatre champs @desc ("description").
Ces descriptions s'afficheront dans le menu Script lorsque vous naviguerez d'un réglage à l'autre.
Jusqu'à dix réglages peuvent être associés à n'importe quel script.
Exemple:
@desc Use to calibrate clickPAN-SDM
@desc Connect S0 to 0V for calib mode
@desc Note servo position S1
@desc UP/DN to same position on S2
@param p pulse width
@default p 22
@param i
@default i 1
SDM ne requiert pas la commande uBasic "print" lors de l'affichage des textes sans les paramètres suivants.
.
Regardez simplement le texte entre les guillemets.
S'il est précédé par un espace, le fond sera bleu.
S'il est précédé par le symbole #, le fond sera vers.
S'il est précédé par un point d'exclamation !, le fond sera rouge.
Les symboles de formatage-couleurs ne sont pas affichés.
Exemple 1:
" This is text"
"# Press shutter"
"! to exit"
while 1
do
wend
La LED auto-focus est lumineuse et visible depuis une certaine distance.
Ceci la rend très utile lors de scripts pour la photo aérienne par cerf-volant (KAP) pour indiquer l'accomplissement des operations.
Une manière simple d'entrer les valeurs de dépassement d'ouverture sur les appareils qui ont une ouverture physique:-
aperture 3.5
@title Aperture
@param a numerator
@default a 2
@param b denominator
@default b 8
aperture a . b
shoot
end
Utilisé avant la commande "intervale de temps" ("time_lapse") pour forcer la mise au point automatique à chaque prise de vue.
Il ne peut pas être utilisé si l'appareil est réglé sur mise au point manuelle.
auto_focus_first
Utilisé avant la commande "intervale de temps" ("time_lapse") pour faire la mise au point automatique sur la première prise de vue.
Quand la commande "intervale de temps" ("time_lapse") est exécutée, le blocage de la mise au point automatique (AFL) est appliqué et "AFL" s'affiche en haut à gauche de l'écran.
Il ne peut pas être utilisé si l'appareil est réglé sur mise au point manuelle.
blink_af_led_for
Ceci fait clignoter la LED de l'auto-focus pendant le temps réglé.auto_focus_bracketing
Utilisé en mode de prise de vue en continu pour capturer les images depuis la distance de mise au point jusqu'à l'infini.
L'appareil doit être dans un mode qui permet le dépassement de mise au point ou en mode de prise de vue en continu.
(si vous utilisez le mode de délai personnalisé, la séquence finira après le nombre d'expositions règlé. La mise au point aura ou n'aura pas atteint l'infini).
Pour l'exemple ci-dessous, réglé l'appareil en mode de prise de vue en continu.
En réglage grand-angle, l'infini sera atteint en seulement deux ou trois étapes de 1000mm.
L'exemple zoome l'objectif pour obtenir plus d'étapes (sur les appareils qui ne sont pas de la série "S").
La distance de mise au point est affichée en haut de l'écran pour chaque étape.
"DBA" est affiché pour indiquer "encadrement Distance Automatique" et "CONT" pour le mode de prise de vue en continu.
Appuyez sur votre interrupteur USB pour démarrer, l'appareil fera un bip quand la mise au point à l'infini sera atteint.
Exemple 2:
set_zoom_to_step 7
set_focus_to 1000
auto_focus_bracketing
" Autofocus bracketing"
" Press switch"
wait_for_switch_press
start_continuous_sequence
wait_until_done
end_continuous_sequence
beep
Fait un bref son "beep".
Exemple 3:
sleep_for 1000
beep
sleep_for 1000
beep
end
blue_led_off/blue_led_on
Tourne la LED bleue arrêt/marche.
Exemple 4:
sleep_for 1000
beep
blue_led_on
sleep_for 2000
beep
blue_led_off
end
bracketing_done
Renvoi "1" quand toutes les prises de vues encadrement ont été prises.
Le suivant est équivalent à la commande "wait_until_done" :
set_focus_start 500
do
until is_key "remote"
shoot
do
until bracketing_done = 1
break_usb_connection
Désactive le chargement USB et retourne en mode enregistrement.
Ceci fonctionne seulement avec des programmes sur PC qui commandent de ressortir.
Exemple:
make_usb_connection
sleep_for_seconds 35
break_usb_connection
digiscope_bracketing
Utilisé pour capturer un nombre d'images mises au point de chaque côté de l'image virtuelle du téléscope.
L'appareil doit être en mode de dépassement de mise au point et prise de vue en continu ou avec un délai personnalisé.
Pour l'exemple ci-dessous, réglez l'appareil en mode de prise de vue en continu.
(Pour voir l'effet des changements de mise au point avec cet exemple vous devez vraiment avoir un réglage digiscopie).
Les valeurs de mise au point sont affichées en haut de l'écran et à la fin l'appareil refait la mise au point à la distance de départ (mise au point de référence).
Le progiciel Canon peut ne pas faire la mise au point à une distance numérique précise, mais au plus proche qu'il peut.
Exemple 5:
set_zoom_to_step 3
set_focus_to 600
digiscope_bracketing
number_of_images_to_capture_is 5
" Digiscope bracketing"
" Press switch"
wait_for_switch_press
start_continuous_sequence
wait_until_done
end_continuous_sequence
enable_usb_download/disable_usb_download
Quand le téléchargement USB est désactivé, l'appareil n'essayera pas de se connecter au PC quand une tension est présente sur la patte V+ du connecteur USB.
C'est le mode usuel lors de l'utilisation d'un interrupteur de commande.
En activant le téléchargement USB et en se mettant en mode Lecture, un programme sélectionné sur le PC pourra démarrer lors de l'insertion du connecteur USB.
each_photo_alternating/each_photo_darker/each_photo_lighter
Utilisé avant le démarrage d'une séquence d'encadrement Tv (vitesse d'obturation) avec un mode de prise de vue avec délai personnalisé.
(encadrement en mode de prise de vue en continu est seulement alterné).
Pour l'exemple ci-dessous, régler le nombre d'expositions dans le délai personnalisé "Shots" et délai à zéro.
Exemple 6:
hdr_bracket_1/3_ev_steps 2
each_photo_lighter
" Press switch"
wait_for_switch_press
" Each image lighter"
start_custom_timer_sequence
wait_until_done
equal_step_focus_bracketing
Utilisé pour capturer un nombre d'images utilisant une étape de mise au point fixe depuis un point de départ de mise au point.
L'appareil doit être dans un mode qui permet le dépassement de mise au point et prise de vue en continu ou avec délai personnalisé.
Util pour les plans rapprochés extrêmes où la profondeur de champ augmente très lentement avec la distance de mise au point.
Pour l'exemple ci-dessous, régler l'appareil en prise de vue en continu.
Exemple 7:
set_focus_to 500
equal_step_focus_bracketing
number_of_images_to_capture_is 3
" Equal-step bracketing"
" Press switch"
wait_for_switch_press
start_continuous_sequence
wait_until_done
end_continuous_sequence
finish_time
Equivalent à "end_time", vous pouvez employer l'un ou l'autre.
get_focused_distance
Equivalent à "get_focus", vous pouvez employer l'un ou l'autre.
get_focus_ref
Retourne la position de mise au point (sur l'image virtuelle) utilisé par la fonction de digiscopie.
Renvoie le champ de vue horizontal (en degrés) dans le paramètre fourni.get_script_speed
Retourne la vitesse actuelle (1 à 5) sur le script.get_shooting_mode
Synonyme pour CHDK 'get_shooting'.
get_sync
Retourne le status de synchro et les valeurs de délai. Voir "set_synch" ci-dessous.
hdr_bracket_1/3_ev_steps
Utilisé en encadrement Tv pour spécifié l'étape d'exposition en unité de 1/3EV.
3 EV est équivalent à un stop.
lcd_on_off
Permet l'état arrêt/marche du LCD en "appuyant" le bouton DISPLAY.
N'est pas supporté par tous les appareils.
(voir aussi
'turn_backlight_off/turn_backlight_on' ci-dessous)
Exemple 8:
" Press switch"
" LCD will blank"
" for 5 seconds."
wait_for_switch_press
lcd_on_off
sleep_for 5000
lcd_on_off
end
lock_autofocus/unlock_autofocus
Après demi-appui sur le déclencheur et avoir laissé assez de temps à l'appareil pour la mise au point, la mise au point automatique se bloque.
'AFL' s'affichera sur l'écran.
Vous pouvez débloquer la mise au point automatique en utilisant le script de commande ou avec demi-appui sur le déclencheur et appui sur le bouton droit jusqu'à ce que l'affichage
'AFL'disparaisse.
Exemple 9:
sleep_for 1000
press "shoot_half"
sleep_for 1000
lock_autofocus
"! locked"
"! 'AFL' top left"
make_usb_connection
Commute en mode lecture et active le déchargement USB.movie_mode
L'appareil commute en mode vidéo.
Cliquer "shoot_full" démarrera et arrêtera l'enregistrement vidéo.
Pour les appareils avec un bouton "vidéo" (movie), 'movie_mode' ne fera rien.
Normalement, il est simple d'utiliser la commande 'shoot_movie_for' décrite ci-dessous.
nd_filter_off/nd_filter_in/nd_filter_out
Ceci a les mêmes fonctions que "set_nd_filter" mais est plus facile à retenir et fait votre script plus lisible.
number_of_images_to_capture_is
Utilisé pour spécifier le nombre d'images en mode encadrement.
Pour l'encadrement Tv et l'encadrement digiscopie c'est habituellement un nombre impair.
Exemple:
number_of_images_to_capture_is 5
start_continuous_sequence
playback_mode
L'appareil commute en mode lecture.
Utiliser 'record_mode' pour retourner.
Lit les valeurs de luminance et de chroma UV d'une aire de 24 x 16 pixel au centre de l'écran.
Aucun paramètre n'est requis, les valeurs sont retournéesthe values dans "a", "b" et "c" (donc faites bien attention comment vous les utilisez dans le reste de votre script).
Pour utiliser comme un spotmètre, zoomez en réglage téléphot.
Les valeurs sont lues depuis le buffer image-directe et la corrélation avec les valeurs de la scène réelle ne sont pas connues.
Le script suivant affiche les YUV et calcule les valeurs RGB en format non-déroulant dans la console:-
@title Spot meter
:test_md_loop
readYUV
r = (a*4096 + c*5743 + 2048)/4096
if r < 0 then r = 0
if r > 255 then r = 255
g = (a*4096 - b*1411 - c*2925 + 2048)/4096
if g < 0 then g = 0
if g > 255 then g = 255
u = (a*4096 + b*7258 + 2048)/4096
if u < 0 then u = 0
if u > 255 then u = 255
line_1 "# YUV ", a," ",b," ", c
line_2 "! RGB ", r," ",g," ", u
goto "test_md_loop"

record_mode
Retourne en mode enregistrement depuis le mode lecture.
Réstaure la mise au point de l'appareil à la valeur sauvée précédemment avec "save_focus".
Un paramètre optionnel contiendra la valeur de réglage de la mise au point.
Utilisé pour des longues séquences d'intervales de temps (spécialement avec des cartes Eye-fi) qui utilise des méthodes hardware ou software pour remettre à zéro l'appareil aux intervales.
Restaure la position du zoom à la valeur sauvée précédemment avec "save_focus".
Utilisé pour des longues séquences d'intervales de temps (spécialement avec des cartes Eye-fi) qui utilise des méthodes hardware ou software pour remettre à zéro l'appareil aux intervales.
save_focus
save_stack
En mode encadrement, cette commande active le sauvetage des fichiers log avec les valeurs enregistrées de mise au point ou Tv.
La commande devrait venir avant n'importe quelle commande qui démarre les séquences d'encadrement.
Essayez de l'ajouter en haut de l'Exemple 2.
Les fichiers log sont dans le dossier 'A/CHDK/STACKS'.
set_digi_focus_ref_to
Règle la position de référence de mise au point (sur l'image virtuelle) utilisé par la fonction digiscopie.
set_focus_step_to
Règle la dimension de l'étape de mise au point pour être utilisé dans l'étape égale d'encadrement.
set_focus_to
Synonyme pour CHDK 'set_focus'.
La commande'set_focus' peut avoir optionnellement un deuxième paramètre qui retourne la distance suivante de la mise au point dans le paquet mise au point quand.
Quand l'infini est atteint, -1 est retourné.
Ceci résulte automatiquement dans l'incrémetation de larges étapes de mise au point.
Cet exemple capture des images de l'infini à la mise au point courante :-
rem grab focus stack
do
rem change exposure
change_ev_by d
set_focus_to f, e
f=e
shoot
until e = -1
set_script_speed
Au lieu d'exécuter un rapport uBasic chaque "tic" (1/100 sec), vous pouvez régler la vitesse de script jusqu'à cinq rapport par tic.set_sync a b c d
'a' = 'Enable Synch' (1 = activé, 0 = désactivé) b = 'Enable Synch delay' (1 = activé, 0 = désactivé) c (délai en unité de 0.1 msec) d (délai en unité de 0.1 sec)
set_zoom_to_step/set_zoom_to
Synonyme pour CHDK 'set_zoom'.
Règle le zoom à une position définie, commençant à l'étape "0".
shoot_movie_for
Commute en mode vidéo, enregistre une vidéo pour un temps défini et ensuite retourne en mode enregistrement.
shoot_when_camera_steady
C'est une aide pour détecter les tremblements d'appareils lors de prises de vues en conditions faible-lumière ou en réglage téléphoto.
La photo est prise seulement lorsqu'il y a un tremblement plus faible que celui défini par l'utilisateur.
L'endroit des points surveillés est montré avec des petits rectangles et ceux-ci aident à choisir un objet de référence pour le laisser stable.
shoot_when_camera_steady a, b
"a" est la sensibilité (1 à 255) et "b" est la valeur retournée.
Plus la valeur "a" est petite, plus la détection de mouvement est sensible.
La commande s'arrête après dix secondes si l'appareil n'a pas eu de mouvement.
Une valeur retournée de "1" indique le succès, pas de mouvement détecté.
@title Camera shake
@param a sensitivity
@default a 128
sync_off
:md_loop
b=0
print "About to shoot"
shoot_when_camera_steady a, b
print N," ", b
N = N + 1
sleep_for_seconds 5
goto "md_loop"
end
shoot_when_no_movement_for
Ceci est prévu pour de plus longs temps que la commande "shoot_when_camera_steady" précédente et prend la photo quand il n'y a pas de mouvement du sujet pendant un temps défini.
Ces possibilités d'applications incluent la photographie aérienne par cerf-volant et la microscopie.
shoot_when_no_movement_for a, b, c, d
a = durée requise sans mouvement en secondes, minimum de "1".
b = valeur retournée, "1" signifie pas de mouvement détecté.
c = sensibilité de mouvement (optionel), valeur 1 à 255. Réglé à 128 si non spécifié.
d = fin du temps (optionel) en secondes, réglé à 10 si non spécifié.
@title No-motion
@param a time still
@default a 5
@param c sensitivity
@default c 128
@param d timeout
@default d 10
sync_off
:md_loop
b=0
print "About to shoot"
shoot_when_no_movement_for a, b, c, d
print N," ", b
N = N + 1
sleep_for_seconds 5
goto "md_loop"
end
sleep_for
Synonyme pour CHDK 'sleep'
Pause des scripts pour un temps défini en nombre de millisecondes.
Exemple:
sleep_for 1000
sleep_for_minutes
Pause des scripts pour un temps défini de minutes.sleep_for_msecs
Pseudonyme pour rapport 'sleep'.sleep_for_seconds
Pause des scripts pour un temps défini de secondes.
L'appareil éteint l'écran et attend jusqu'au réglage heures et minutes avant de continuer.start_continuous_sequence/end_continuous_sequence
Cette commande est utilisée pour démarrer un encadrement Tv ou mise au point quand l'appareil est en mode de prise de vue en continu.
A la différence des séquences avec délai personnalisé, vous devez terminer la séquence.
En effet, vous devez tenir votre doigt sur le bouton.
Exemple :
start_continuous_sequence
wait_until_done
end_continuous_sequence
start_custom_timer_sequence
Cette commande est utilisée pour démarrer une séquence d'encadrement Tv ou mise au point quand l'appareil est en mode de prise de vue avec délai personnalisé.
Il n'y a aucun besoin de terminer explicitement la séquence bien que vous deviez utiliser 'wait_until_done' avant d'exécuter la prochaine commande.
Régler
le nombre d'expositions dans le délai personnalisé 'Shots' et régler le délai à zéro.
'TvB' s'affichera pour indiquer l'encadrement Tv et 'TIME' pour le mode délai personnalisé.
Exemple 10:
hdr_bracket_1/3_ev_steps 3
each_photo_darker
" Press switch"
wait_for_switch_press
" Each image darker"
start_custom_timer_sequence
wait_until_done
start_time
Equivalent à "sleep_until", vous pouvez utiliser l'un ou l'autre.sync_on/sync_off ou synch_on/synch_off
Ceci a les mêmes fonctions que "set_snc" mais est plus facile à retenir et fait votre script plus lisible.
take_photo_now
Synonyme pour CHDK 'shoot'.
time_lapse
Une commande très souple pour le time-lapse avec encadrement, bloquage de mise au point, masquage d'écran, extinction automatique de l'appareil et arrêt/marche USB.
C'est le script par défaut fourni avec le téléchargement.
Voir la section séparée pour tous les détails.
tune_unit_pulse
Cette commande vous permet de "tordre" la valeur des impulsiosn utilisées par la commande 'send_data'.turn_backlight_off/turn_backlight_on
Cette commande fonctionne sur tous les appareils pour mettre arrêt/marche le rétro-éclairage.
Apès la cpture d'images, le rétro-éclairage se rallumera brièvement.
Pour l'exemple ci-dessous, appuyer sur le déclencheur pour démarrer le script.
Exemple 11:
" LCD will blank"
" for 5 seconds"
sleep_for 2000
turn_backlight_off
sleep_for 1000
shoot
sleep_for 3000
shoot
sleep_for 2000
turn_backlight_on
end
upload_images_for
Commute en mode lecture,active le déchargement USB pour un temps défini et ensuite retourne en mode enregistrement.
Cette commande peut être utilisée avec WIA-Loader pour charger les images à intervales réguliers.
wait_for_switch_press
Pause du script jusqu'à la présence d'un signal sur la patte V+ de l'USB.
Voir les divers exemples plus haut.
Le signal peut venir d'un interrupteur, d'un récepteur IR ou sans fil, d'un microcontrôleur, etc.
wait_until_done
Indique le nombre d'images requises en délai personnalisé ou en mode séquence de prises de vues en continu qui int été prises.
Voir les divers exemples plus haut.