From 44dabc13b2aae37adcecfb79be8af75877075c0a Mon Sep 17 00:00:00 2001 From: haller Date: Sun, 10 Apr 2005 23:22:53 +0000 Subject: Ajout de asserv Première déclaration de asserv basé sur l'asserv de nono --- 2005/i/robert/src/asserv/Makefile.defs | 7 +++ 2005/i/robert/src/asserv/asserv.hh | 80 ++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 2005/i/robert/src/asserv/Makefile.defs create mode 100644 2005/i/robert/src/asserv/asserv.hh (limited to '2005/i/robert/src/asserv') diff --git a/2005/i/robert/src/asserv/Makefile.defs b/2005/i/robert/src/asserv/Makefile.defs new file mode 100644 index 0000000..23a9993 --- /dev/null +++ b/2005/i/robert/src/asserv/Makefile.defs @@ -0,0 +1,7 @@ +PROGRAMS += test_asserv + +asserv_OBJECTS = asserv.o + +test_asserv_OBJECTS = test_asserv.o $(asserv_OBJECTS) $(log_OBJECTS) + +test_asserv: $(test_asserv_OBJECTS) diff --git a/2005/i/robert/src/asserv/asserv.hh b/2005/i/robert/src/asserv/asserv.hh new file mode 100644 index 0000000..b2cca59 --- /dev/null +++ b/2005/i/robert/src/asserv/asserv.hh @@ -0,0 +1,80 @@ +#ifndef asserv_hh +#define asserv_hh +// asserv.hh +// robert - programme du robot 2005 {{{ +// +// Copyright (C) 2005 Nicolas Haller +// +// Robot APB Team/Efrei 2005. +// Web: http://assos.efrei.fr/robot/ +// Email: robot AT efrei DOT fr +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +// }}} + +#include "utils/non_copyable.hh" +#include "proto/proto.hh" +#include "log/log.hh" + +/// Classe de dialogue avec la carte d'asservissement. +class Asserv : public NonCopyable, public Proto::Receiver +{ + // Communication avec l'AVR + Proto proto_; + // Paramètres. + int accel_, kp_, ki_, kd_; + int statMotor_; + int counter_; + bool posAsserv_; + int gpiDelay_; + bool asserv_; + int zeroEps_; + bool noSetParam_; + // Ancienne valeur des compteur. + bool firstCounter_; + int countLeft_, countRight_; + int countLeftSum_, countRightSum_; + // Valeurs GPIO. + unsigned int gpi_; + unsigned int gpo_; + // Système de log. + Log log_; + public: + /// Constructeur. + Asserv (const Config & config); + /// Destructeur. XXX Y'a besoin du destructeur? + ~Asserv (void); + /// Reset la carte et envois les paramètres. + void reset (void); + /// Teste si l'émission est terminée. + bool ok (void); + /// Attend que toute les émissions soit terminées. + void waitOk (void); + //@{ + /// Change les paramètres de la carte. + void setAccel (int accel); + void setKp (int kp); + void setKi (int ki); + void setKd (int kd); + void setStatMotor (int delay); + void setCounter (int delay); + void setPosAsserv (bool fl = true); + void setGpiDelay (int delay); + void setAsserv (bool fl = true); + //@} +}; + +#endif // asserv_h -- cgit v1.2.3