mirror of
https://gitlab.com/eql/lqml.git
synced 2025-12-06 02:30:38 -08:00
20 lines
648 B
Common Lisp
20 lines
648 B
Common Lisp
(in-package :gps)
|
|
|
|
(let ((speed 0.0)
|
|
samples)
|
|
(defun update-speed ()
|
|
"After 10 distance samples, calculate average speed and update on every new
|
|
distance sample."
|
|
(push (cons (distance)
|
|
(get-internal-real-time))
|
|
samples)
|
|
(when (> (length samples) 10)
|
|
(setf samples (butlast samples))
|
|
(let ((b (first samples))
|
|
(a (first (last samples))))
|
|
(setf speed (* 3.6 ; km/h
|
|
(/ (- (car b) (car a)) ; m
|
|
(/ (- (cdr b) (cdr a)) ; s
|
|
1000.0)))))))
|
|
(defun speed* ()
|
|
speed))
|