Recent Changes - Search:

Menu

editer le Menu

SuiviDeLaLune

Notes quant au programme d'acquisition de la déclinaison et de l'ascension droite de la lune:


1. Accédez à la page de PyEphem soit http://rhodesmill.org/pyephem/

2. Sous la section Installation, cliquer sur le lien PyEphem Entry pour avoir accès au code source “raw” et télécharger PyEphem 3.7.5.1 en appuyant sur le bouton download à droite.

3. Télécharger sur Drankconf les programmes ainsi que les bibliothèques Python (L'utilité des programmes installés est mitigé. En d'autres mots, mieux vaut plus de programmes que moins):

a.libPython2.6-devel;

b.Python;

c.libpyton2.6;

d.python-distutils-extra.

4. Dans Konsole, accéder PyEphem et le décompresser en tant que Sand:

$ cd Downloads/

$ ls

$ gzip -d pyephem-3.7.5.1.tar.gz

$ ls

$ tar -xvf pyephem-3.7.5.1.tar

Ensuite, en tant que root, faire

$ python setup.py install


Petit cours de syntaxe de base Python

À la base, il existe trois variables de bases de type Data en python les integers, les floats et les booleans. Faire attention, Python est un langage sensible aux lettre majuscules et minuscules.

Integers: Variable nombres entier négatif ou positif (0, ± 1, ± 2, etc). Identifié comme int.

Floats: Variable nombres décimaux

Booleans: Variable True or False (ne pas utiliser de chevrons ni de guillements en python et mettre en majuscule la première lettre)

Un exemple de chaque variable serait:

    my_int=10

    my_float=1.345

    my_bool=True

Cependant, la variable ne doit pas nécessairement avoir le nom de son type pour qu'elle fonctionne. Par exemple:

    steak=10

    blé_d\'inde=1.345

    patate=True

Python est un langage qui suit l'ordre de présentation des variables. Par exemple, si le programme serait le suivant (# est un commentaire. Ne pas mettre de parenthèses, elles sont présentes pour une question de formattage avec cette page):

    my_int=7

    (#) changer my_int pour la valeur 3

    my_int=3

    (#) Faire afficher le résultat

    print my_int

Le programme devrait donc écrire le chiffre 3 puisque la variable a été réécrite lors du programme.

Python est un langage interprété par la console. Étant donné qu'il est lu ligne par ligne, il est donc important de bien faire l'identation ainsi que les espaces de ces textes. En effet, puisque les espaces sont la fin d'un énoncé, eux et une identation erronée peuvent transformer la lecture de l'interpréteur. Par exemple:

Le paysan a dit, " La sorcière m'a transformé en crapaud". Versus: "Le paysan", a dit la sorcière, "m'a transformé en crapaud".

Malgré la forme satyrique de la chose, il faut comprendre qu'on ne doit pas mettre des espaces n'importe où, ainsi que toujours indenté de 4 espaces nos énoncés. Soit:

    Def backflip():

        trampoline=12

        return=trampoline

    print backflip()

Le programme devrait imprimé 12.

Pour revenir rapidement au (#) il est fortement conseillé de les utiliser souvent pour faciliter la compréhension du logiciel. En effet, puisque les commentaires ne sont pas lu par l'interprétateur, ils n'affectent aucunement le programme. Si un long commentaire doit être utilisé, au lieu de faire un hashtag au début de chaque lignes, on peut utiliser le triple guillemets. Soit:

""" Voilà! In view, a humble vaudevillian veteran, cast vicariously as both victim and villian by the vicissitudes of Fate. This visage, no mere veneer of vanity, is a vestige of the vox populi, now vacant, vanished. However, this valorous visitation of a by-gone vexation, stands vivified and has vowed to vanquish these venal and virulent vermin vanguarding vice and vouchsafing the violently vicious and voracious violation of volition. The only verdict is vengence; a vendetta, held as a votive, not in vain, for the value and veracity of such shall one day vindicate the vigilant and the virtuous. Verily, this vichyssoise of verbiage veers most verbose, so let me simply add that it is my very good honor to meet you and you may call me V. """

Tout ce qui ce situe dans ce paragraphe (tiré de V for Vendetta), ne serait donc pas lu par l'interprétateur.

Maintenant, que nous avons vu certains concepts de syntaxes de base, revenons aux variables. En effet, les variables ne sont pas seulement limitées aux expressions du style Charles=beau (hehehe), mais peut aussi exécuter des opérations mathématiques. Par exemple:

    compter_a=1+2

    print compter_a

Le print devrait donner 3.

Voici les opérations de bases sur python:

    Addition (+)

    Subtraction (-)

    Multiplication (*)

    Division (/)

    Exponentiation (**)

    Modulo (%)

Donc, 10**2 serait égal à 100, etc. Modulo est un peu plus compliqué, il fait en sorte de donner le nombre restant d'unité après une division. Par exemple, 5 % 2 = 1. En effet, 2 rentre 2 fois dans 5 avec un restant d'unité 1. Donc, 113 % 100= 13

Avec cela vous devriez vous débrouiller un peu!

Pour de plus amples connaissances, aller se pratiquer sur http://www.codecademy.com/

Programme de suivi de la lune

Tout d'abords. il faut ajouter dans localconfig, le paramètre elev_sealevel sour la donnée de latitude et ajouter l'élévation au-dessus du niveau de la mer de l'endroit que nous souhaitons évaluer.

Ensuite, le code est le suivant;

 #!/usr/bin/env python
import ephem
from time import gmtime, strftime
import re

#pour la longitude

for line in open("/home/sand/localconfig"):
 if "Longitude"in line:
   wordlist = re.sub("[^\w]", " ",  line).split()
   i = 0
   for word in wordlist:
     i = i + 1
     if i == 3:
       deg = float(word)
     if i == 4:
       minute = float(word)
     if i == 5:
       sec = float(word)


# la definition de localconfig est positive vers l'ouest alors que pyephem est positif vers l'est
# c'est pourquoi tout est en negatif

Lon =  -deg - minute / 60 - sec / 3600


# pour la latitude

for line in open("/home/sand/localconfig"):
 if "Latitude"in line:
   wordlist = re.sub("[^\w]", " ",  line).split()
   i = 0
   for word in wordlist:
     i = i + 1
     if i == 3:
       deg = float(word)
     if i == 4:
       minute = float(word)  
     if i == 5:
       sec = float(word)


Lat = deg + minute / 60 + sec / 3600

# pour l'elevation

for line in open("/home/sand/localconfig"):
 if "elev_sealevel"in line:
   wordlist = re.sub("[^\w]", " ",  line).split()
   i = 0
   for word in wordlist:
     i = i + 1
     if i == 2:
       elev = float(word)


# trouver azimuth et altitude

gatech = ephem.Observer()
gatech.lon = str(Lon)
gatech.lat = str(Lat)
gatech.elevation = elev
date = strftime("%Y/%m/%d %H:%M:%S")
gatech.date = date
m = ephem.Moon(gatech)
print m.alt, m.az

On enregistre ce fichier en tant que moon.py dans Documents

En tant que root, dans Documents, faire;

chmod -R +rwx moon.py

il est ensuite possible d'exécuter le programme dans la console en écrivant simplement

./moon.py

à Faire (Benjamin)

-ajouter le paramètre azis et eles pour avoir les secondes d'arc dans observe -faire en sorte que si nous appelons moon dans observation_list, que le mouvement se fasse à partir de moon.py et non de ce qu'observe a déjà. -créer une loop pour que la monture suive le mouvement en prenant l'image pour la durée de la prise d'image.

Modifier dans sand

Lorsque nous modifions un programme et nous voulons le partager sur le réseau,nous devons d'abord aller dans svn/trunk. Par la suite, nous devons faire dans le terminal:

svn commit -m "commentaire"

pour ajouter un programme sur le réseau, il faut faire:

svn add programme.py

modification d'observe pour ajouter le suivi de la lune

Premièrement, il faut ajouter les seconde d'arc à l'azimuth et à l'élévation comme variable dans tout le programme (donc azis et eles) pour que lorsque le programme prend les mesures d'élévation et d'azimuth, qu'il puisse aussi considérer les seconde d'arc.

Par la suite, avant que la monture soir sélectionnée, il faut que le programme sache si nous souhaitons mesurer la lune ou le ciel. Il faut donc ajouter le code suivant :

if imtyp="moon"
      then /usr/local/bin/moon.py | sed 's/:/ /g' | sed 's/\./ /g' > moon.tmp
           read mooned moonem moones bidon moonad moonam moonas bidon < moon.tmp
           let eled=$eled+$mooned ; let elem=$elem+$moonem ; let eles=$eles+$moones
           let azid=$azid+$moonad ; let azim=$azim+$moonam ; let azis=$azis+$moonas

Ainsi, les valeurs d'observation_list qui correspondent à la différence avec l'élévation et l'azimuth de la lune sont calculer dans observe et celui prend donc les vraies valeurs d'azimuth et d'élévation En root, dans /home/sand/svn/trunk Enregistrer les modifications dans observe pour les exécuter:

cp -f * /usr/local/bin

Exemple de mouvement de la monture

echo "#:Sz25*00'00#" > /dev/ttyS0

ata=""
message=$1
if [ "$1" = "GT" ]
   then message="#:GL#"
elif [ "$1" = "EL" ]
   then message="#:GA#"
elif [ "$1" = "AZ" ]
   then message="#:GZ#"
elif [ "$1" = "LO" ]
   then message="#:Gg#"
elif [ "$1" = "LA" ]
   then message="#:Gt#"
elif [ "$1" = "TR" ]
   then message="#:GT#"
fi
stty 9600 -icanon time 3 min 0 < /dev/ttyS0
while [ "$data" = "" ]
do echo $message > /dev/ttyS0
   data=`cat < /dev/ttyS0`


done

echo $data

Tracking.bash

# !/bin/bash/
# tout ce fait avec la monture
read eled elem eles azid azim azis imtyp inttime < /home/sand/public_html/cgi-bin/ligne.tmp
echo $eled $elem $eles $azid $azim $azis $imtyp $inttime
if [ $imtyp == "moon" ]
then START=`date +"%s"`
      while [ $(( $(date "+%s") - $inttime )) -lt $START ]; do
           /usr/local/bin/moon.py | sed 's/:/ /g' | sed 's/\./ /g' > moon.tmp
           read mooned moonem moones bidon moonad moonam moonas bidon < moon.tmp
           echo "Az moon" $moonad":" $moonam":" $moonas "El moon" $mooned":" $moonem":" $moones
           let altd=eled+mooned ; let altm=elem+moonem ; let alts=eles+moones
          let azd=azid+moonad ; let azm=azim+moonam ; let azs=azis+moonas
          echo "Az" $azd ":" $azm ":" $azs  "EL" $altd ":" $altm ":" $alts
echo "#:Sz$azd*$azm'$azs#" > /dev/ttyS0                                                                                   #set azimuth
echo "#:Sa$altd*$altm'$alts#" > /dev/ttyS0                                                                                # set elevation
echo "#:MA#" > /dev/ttyS0                                                                                                 #goto

sleep 5
done    

else
echo "Az" $azid ":" $azim ":" $azis  "EL" $eled ":" $elem ":" $eles
echo "#:Sz$azid*$azim'$azis#" > /dev/ttyS0
echo "#:Sz$azid*$azim'$azis#" > /dev/ttyS0
echo "#:MA#" > /dev/ttyS0
sleep $inttime
fi
Edit - History - Print - Recent Changes - Search
Page last modified on September 11, 2014, at 03:57 pm UTC