;;; -*- lexical-binding: t -*- ;; ;; this file: ;; https://dataswamp.org/~incal/terror-3/ev3-motor-turn.el (require 'ev3-motor) (defun get-turn-speed (way) (let*((step 100) (motor (if (eq way 'left) 'right 'left) ) (speed (abs (get-motor-speed motor))) ) (if (< speed step) step (+ speed step) ))) (defun ev3-turn (dir way &optional reduce) (or reduce (setq reduce 2)) (let*((major-speed (get-turn-speed way)) (minor-speed (/ major-speed reduce)) (speeds (if (eq way 'left) `(,minor-speed ,major-speed) `(,major-speed ,minor-speed) )) (speeds-dir (if (eq dir 'reverse) (cl-map 'list (lambda (e) (- e)) speeds) speeds) )) (set-motor-left (car speeds-dir)) (set-motor-right (cadr speeds-dir)) )) (defun ev3-turn-forward-left () (interactive) (ev3-turn 'forward 'left) ) (defun ev3-turn-forward-right () (interactive) (ev3-turn 'forward 'right) ) (let ((minor-frac 3)) (defun ev3-turn-forward-sharp-left () (interactive) (ev3-turn 'forward 'left minor-frac) ) (declare-function ev3-turn-forward-sharp-left nil) (defun ev3-turn-forward-sharp-right () (interactive) (ev3-turn 'forward 'right minor-frac) ) (declare-function ev3-turn-forward-sharp-right nil) ) (defun ev3-turn-reverse-left () (interactive) (ev3-turn 'reverse 'left) ) (defun ev3-turn-reverse-right () (interactive) (ev3-turn 'reverse 'right) ) (provide 'ev3-motor-turn)