[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: the Elisp robot [photo]
From: |
Emanuel Berg |
Subject: |
Re: the Elisp robot [photo] |
Date: |
Wed, 21 Oct 2020 16:24:24 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) |
Jean Louis wrote:
> And how does the internal OS communicates with
> robot commands? Are those shell commands or how?
It comes with files that represent different parts of
the robot.
The Elisp reads and writes to these files.
Here is one file that is a good example:
;;; -*- lexical-binding: t -*-
;;;
;;; this file:
;;; http://user.it.uu.se/~embe8573/terror-3/ev3-motor.el
;;; https://dataswamp.org/~incal/terror-3/ev3-motor.el
(require 'cl-lib)
(require 'ev3-motor-init)
(require 'file-write-to)
;; speed files / getters / setters
;; NB: digit in a/the speed file, not measured/actual droid speed
(defun get-motor-speed-file (motor)
(cl-case motor
('left left-motor-speed-file)
('right right-motor-speed-file)
('medium medium-motor-speed-file) ))
(defun get-motor-speed (motor)
(file-to-integer (get-motor-speed-file motor) ))
(defun set-motor-speed (motor speed)
(write-to-file-integer (get-motor-speed-file motor) speed) )
;; commands
(defun get-motor-cmd-file (motor)
(cl-case motor
('left left-motor-cmd-file)
('right right-motor-cmd-file)
('medium medium-motor-cmd-file) ))
(defun motor-cmd (motor cmd)
(write-to-file (get-motor-cmd-file motor) cmd) )
(defun run-forever (motor)
(motor-cmd motor "run-forever") )
(defun stop (motor)
(motor-cmd motor "stop") )
;; individual motor control
;;
;; NB 1: most often, these are not used directly, instead use
;; the interactive functions in ev3-motor-rotate.el,
;; ev3-motor-straight.el, etc
;;
;; NB 2: always set motor speed thru `set-motor'
;; in order to set both speed AND issue robot command
;; as well as to check that speed doesn't exceed the max speed
(defvar *max-speed* nil)
(defun set-motor (motor speed)
(let*((max-speed (or *max-speed* (setq *max-speed* 1050))) ;; TODO: get from
file here
(min-speed (- max-speed) ))
(when (and (<= min-speed speed)
(<= speed max-speed) )
(set-motor-speed motor speed)
(if (zerop speed) (stop motor)
(run-forever motor) ))))
(defun set-motor-left (speed)
(set-motor 'left speed) )
(defun set-motor-right (speed)
(set-motor 'right speed) )
(defun set-motor-both (speed &optional right)
(set-motor 'left speed)
(set-motor 'right (or right speed)) )
(defun stop-motor-left ()
(set-motor 'left 0) )
(defun stop-motor-right ()
(set-motor 'right 0) )
(defun stop-motor-both ()
(stop-motor-left)
(stop-motor-right) )
(provide 'ev3-motor)
--
underground experts united
http://user.it.uu.se/~embe8573
https://dataswamp.org/~incal
- Re: Prompt issue with tramp shell, (continued)
- Re: Prompt issue with tramp shell, Colin Baxter, 2020/10/18
- Re: Prompt issue with tramp shell, Ergus, 2020/10/20
- Re: Prompt issue with tramp shell, Emanuel Berg, 2020/10/20
- the Elisp robot [photo] (was: Re: Prompt issue with tramp shell), Emanuel Berg, 2020/10/20
- Re: the Elisp robot [photo] (was: Re: Prompt issue with tramp shell), Emanuel Berg, 2020/10/20
- Re: the Elisp robot [photo], Jean Louis, 2020/10/21
- Re: the Elisp robot [photo], Emanuel Berg, 2020/10/21
- Re: the Elisp robot [photo], Jean Louis, 2020/10/21
- Re: the Elisp robot [photo], Emanuel Berg, 2020/10/21
- Re: the Elisp robot [photo], Jean Louis, 2020/10/21
- Re: the Elisp robot [photo],
Emanuel Berg <=
- Re: the Elisp robot [photo], Jean Louis, 2020/10/21
- Re: the Elisp robot [photo], Emanuel Berg, 2020/10/21
- Re: the Elisp robot [photo], Jean Louis, 2020/10/21
- Re: the Elisp robot [photo], Emanuel Berg, 2020/10/21
- Re: the Elisp robot [photo], Jean Louis, 2020/10/22
- Re: the Elisp robot [photo], Emanuel Berg, 2020/10/22
- Re: the Elisp robot [photo], Jean Louis, 2020/10/22
- Re: the Elisp robot [photo], Emanuel Berg, 2020/10/22