From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Emanuel Berg via Users list for the GNU Emacs text editor Newsgroups: gmane.emacs.help Subject: Re: the Elisp robot [photo] Date: Wed, 21 Oct 2020 16:24:24 +0200 Message-ID: <878sbzbqsn.fsf@ebih.ebihd> References: <20201016144103.r3npeqap7uo63ney@Ergus> <87a6wjpplc.fsf@yandex.com> <20201020231253.fjgutn5uvqz3u3dz@Ergus> <871rhspjoz.fsf@ebih.ebihd> <87wnzko4pi.fsf_-_@ebih.ebihd> <87eelsm7qd.fsf@ebih.ebihd> <87tuuoaxnr.fsf@ebih.ebihd> Reply-To: Emanuel Berg Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="23468"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) To: help-gnu-emacs@gnu.org Cancel-Lock: sha1:e1aYrrLznBNjNAdRhvRGOpawmak= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Wed Oct 21 16:25:00 2020 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kVF2y-0005yw-PJ for geh-help-gnu-emacs@m.gmane-mx.org; Wed, 21 Oct 2020 16:25:00 +0200 Original-Received: from localhost ([::1]:56578 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kVF2x-0007rj-QC for geh-help-gnu-emacs@m.gmane-mx.org; Wed, 21 Oct 2020 10:24:59 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:48938) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVF2c-0007q1-6M for help-gnu-emacs@gnu.org; Wed, 21 Oct 2020 10:24:38 -0400 Original-Received: from static.214.254.202.116.clients.your-server.de ([116.202.254.214]:38732 helo=ciao.gmane.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVF2Z-0003To-AT for help-gnu-emacs@gnu.org; Wed, 21 Oct 2020 10:24:37 -0400 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1kVF2U-0005Ln-DM for help-gnu-emacs@gnu.org; Wed, 21 Oct 2020 16:24:30 +0200 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: help-gnu-emacs@gnu.org Mail-Copies-To: never Received-SPF: pass client-ip=116.202.254.214; envelope-from=geh-help-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/21 10:24:31 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -15 X-Spam_score: -1.6 X-Spam_bar: - X-Spam_report: (-1.6 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.25, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "help-gnu-emacs" Xref: news.gmane.io gmane.emacs.help:124619 Archived-At: 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