import time, math, serial #uporabljene funkcije pomlad=0.275 #poenostavljeno pomladisce za Julijanski koledar (del kroga) elmin=10.0 #minimalna varna elevacija vrtiljaka maxracun=9999 #max stevilo racunov stracun=0 #stevec racunov casracun=25 #interval racunanja (sekunde) sirina=45.948 #zemljepisna sirina opazovalca v stopinjah (+sever) dolzina=13.634 #zemljepisna dolzina opazovalca v stopinjah (+vzhod) cs=math.cos(math.radians(sirina)) #smerni vektorji opazovalca vzhod, sever in gor ss=math.sin(math.radians(sirina)) cd=math.cos(math.radians(dolzina)) sd=math.sin(math.radians(dolzina)) ovzhod=[-sd,cd,0] osever=[-ss*cd,-ss*sd,cs] ogor=[cs*cd,cs*sd,ss] def skalar(a,b): #skalarni produkt dveh vektorjev return (a[0]*b[0])+(a[1]*b[1])+(a[2]*b[2]) def popravek(e): #popravek elevacije vrtiljaka p=[0.0,1.4,5.7,10.3,14.7,19.2,23.5,27.9,32.5,37.0,40.6,45.5,49.9,54.4,59.4,63.9,69.3,74.2,80.0,81.0] korak=5.0 #korak tabele n=int(e/korak) return p[n]+((p[n+1]-p[n])*(e/korak-n)) #odpri comport COM1, 9600bps, 8bit, brez paritete comport=serial.Serial('COM1',9600,timeout=0.1) def vrtiljak(): #izpisi azimut in elevacijo vrtiljaka s=comport.read(99) #izprazni vmesnik comporta print 'Vrtiljak', comport.write('&*AZ=?\r') #vprasaj za azimut vrtiljaka sa=comport.read(99) comport.write('&*EL=?\r') #vprasaj za elevacijo vrtiljaka se=comport.read(99) print sa[0:9], se[0:9] #izpisi azimut in elevacijo vrtiljak() #izpisi azimut in elevacijo vrtiljaka #seznam imen, rektascenzij (stopinje) in deklinacij (stopinje) opazovanih zvezd zvezda=['Zvezda',0.0,0.0] sirius=['Sirius',101.284,-16.743] rigel=['Rigel',78.835,-8.186] betelgeuse=['Betelgeuse',89.019,7.406] aldebaran=['Aldebaran',69.221,16.539] capella=['Capella',79.482,46.011] altair=['Altair',297.900,8.916] deneb=['Deneb',310.502,45.343] sadr=['Sadr',305.708,40.313] scutum=['Scutum',279.029,-8.231] polaris=['Polaris',43.272,89.333] arcturus=['Arcturus',214.104,19.096] spica=['Spica',201.517,-11.248] vega=['Vega',279.375,38.800] altair=['Altair',297.900,8.913] regulus=['Regulus',152.313,11.886] mizar=['Mizar',201.105,54.839] procyon=['Procyon',115.042,5.181] sagittariusa=['Sagittarius A',265.538,-28.833] cygnusa=['Cygnus A',299.867,40.734] cassiopeiaa=['Cassiopeia A',350.850,58.815] crabnebula=['Crab Nebula',290.925,22.014] tricstiristo=['3C400',290.925,14.509] oriona=['Nebula Orion A',83.821,-5.391] seznam=[zvezda,sirius,rigel,betelgeuse,aldebaran,capella,altair,deneb,sadr,scutum,polaris, arcturus,spica,vega,altair,regulus,mizar,procyon,sagittariusa,cygnusa,cassiopeiaa,crabnebula,tricstiristo,oriona] print 'Seznam zvezd za izbiro (0 vstavi rektascenzijo in deklinacijo)' izbira=1 #izpisi seznam zvezd in izberi eno zvezdo while izbira<24: zvezda=seznam[izbira] print izbira,zvezda[0] izbira=izbira+1 izbira=input('Izberi zvezdo: ') zvezda=seznam[izbira] if izbira==0: zvezda[1]=input('Rektascenzija: ') zvezda[2]=input('Deklinacija: ') while stracunelmin: #postavi vrtiljak na azimut/elevacijo if stracun%2==0: s='&*AZ='+str('%06.2f'%(azimut))+'\r' else: el=popravek(elevacija) s='&*EL='+str('%06.2f'%(el))+'\r' comport.write(s) print 'Ukaz vrtiljaku:',s stracun=stracun+1 #zakljucek zanke racunanja time.sleep(casracun)