Ulu-a Lisp kodlama örnekleri

Lisp sayesinde ulu-a uçuş kontrol sistemi küçük bir bilgisayar gibi kullanılabilir. Sıradan bir arduino kartının sahip olduğu birçok özellik ve daha fazlasını bünyesinde barındırır. Aşağıdaki kodu inceleyin.


(readloop 10)

(defvar apogeealt 3000)
(defvar secalt 500)
(defvar recovery 150)

(defvar altitude (readaltitude))
(defvar velocity (readvelocity))
(defvar temp (readtemp))
(defvar accely (readyaccel))
(defvar accelx (readxaccel))
(defvar accelz (readzaccel))
(defvar latgps (readlatgps))
(defvar longps (readlongps))
(defvar magx (readmagx))
(defvar magy (readmagy))
(defvar magz (readmagz))
(defvar magdir (readmagdir))

(defun mainloop ()(loop
;sensor verilerini yenile
 (readloop 10)
;global degiskenleri yenile
 (setq altitude (readaltitude))
 (setq velocity (readvelocity))
 (setq temp (readtemp))
 (setq accely (readyaccel))
 (setq accelx (readxaccel))
 (setq accelz (readzaccel))
 (setq latgps (readlatgps))
 (setq longps (readlongps))
 (setq magx (readmagx))
 (setq magy (readmagy))
 (setq magz (readmagz))
 (setq magdir (readmagdir))

;led uyarisi olustur
 (digitalwrite 25 t)
 (delay 500)
 (digitalwrite 25 nil)
 (delay 500)
;roket yuksekligi belirtilenden fazla ve ivme -yonlu ise dyn1 i ac
 (when (and (>= altitude apogeealt) (<= readyaccel -1)) (digitalwrite 13 t))
;roket yuksekligi belirtilenden az ve 1. parasut ateslenmisse dyn2 yi ac
 (when (and (<= altitude secalt) (digitalread 13)) (digitalwrite 23 t))
;roket yuksekligi belirtilenden az ve iki roketten herhangi biri ateslenmemisse
 (when (and  (<= altitude recovery) (or (digitalread 13) (digitalread 23))) (digitalwrite 2 t))

;degerleri ekrana bas
 (print 'altitude:)(prin1 altitude)
 (print 'velocity:)(prin1 velocity)
 (print 'temperature:)(prin1 temp)
 (print 'accelx:)(prin1 accelx)
 (print 'accely:)(prin1 accely)
 (print 'accelz:)(prin1 accelz)
 (print 'magx:)(prin1 magx)
 (print 'magy:)(prin1 magy)
 (print 'magz:)(prin1 magz)(print 'magdir:)(prin1 magdir)
 (print '------)
 (print apogeealt)
 (print secalt)
 (print recovery)
 (print '------)
 (print 'longtitude:)(prin1 longps)
 (print 'latitude:)(prin1 latgps)
))
(mainloop)

Yukarıdaki kod en temel uçuş bilgisayarı sistemini bünyesinde barındırmaktadır. Birçok özelliğe bağlı torpil tetikleme özelliği görülebilir. 4 çıkış herhangi bir şekilde bilgisayar bünyesinde bulunan 3 ten fazla sensorden alınan 15 ten fazla sensorden alınan bilgiye bağlı olarak herhangi bir zamanda herhangi bir değişkene bağlı olarak tetiklenebilir.

Daha uç örnekler ve genel api için Ulisp sayfasını ziyaret edebilirsiniz.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir