summaryrefslogtreecommitdiff
path: root/2003
diff options
context:
space:
mode:
authorschodet2003-05-22 20:52:10 +0000
committerschodet2003-05-22 20:52:10 +0000
commit9e9ac23d846063f7b3b533444b213e6ffb931dd9 (patch)
treec1b444b27580fe9183311765515d209bab442817 /2003
parent028befd70da61c3468149a1f1afa3d9eaf4369c7 (diff)
Ajout des Actionneurs
Diffstat (limited to '2003')
-rw-r--r--2003/i/buzz/src/busp/busp_actionneurs.cc39
-rw-r--r--2003/i/buzz/src/busp/busp_actionneurs.h23
-rw-r--r--2003/i/buzz/src/busp/test_busp.cc23
3 files changed, 84 insertions, 1 deletions
diff --git a/2003/i/buzz/src/busp/busp_actionneurs.cc b/2003/i/buzz/src/busp/busp_actionneurs.cc
new file mode 100644
index 0000000..063da02
--- /dev/null
+++ b/2003/i/buzz/src/busp/busp_actionneurs.cc
@@ -0,0 +1,39 @@
+// busp_actionneurs.cc
+// buzz - Programme du robot Efrei Robotique I1-I2 2003
+// Copyright (C) 2003 Nicolas Schodet
+//
+#include "busp_actionneurs.h"
+#include "busp.h"
+
+#include <iostream>
+
+// Constructeur.
+BuspActionneurs::BuspActionneurs ()
+{
+ m_actionneurs = 0;
+}
+
+// Destructeur.
+BuspActionneurs::~BuspActionneurs ()
+{
+}
+
+// Change un actionneur.
+void
+BuspActionneurs::set (int n, int val)
+{
+ m_actionneurs = m_actionneurs & ~(1 << n) | (val << n);
+ Busp::getInstance ().cli ();
+ Busp::getInstance ().write (m_address, m_actionneurs);
+ Busp::getInstance ().sti ();
+}
+
+// Change tous les actionneurs.
+void
+BuspActionneurs::setAll (int set, int reset)
+{
+ m_actionneurs = (m_actionneurs & ~reset) | set;
+ Busp::getInstance ().cli ();
+ Busp::getInstance ().write (m_address, m_actionneurs);
+ Busp::getInstance ().sti ();
+}
diff --git a/2003/i/buzz/src/busp/busp_actionneurs.h b/2003/i/buzz/src/busp/busp_actionneurs.h
new file mode 100644
index 0000000..fa311c6
--- /dev/null
+++ b/2003/i/buzz/src/busp/busp_actionneurs.h
@@ -0,0 +1,23 @@
+#ifndef busp_actionneurs_h
+#define busp_actionneurs_h
+// busp_actionneurs.h
+// buzz - Programme du robot Efrei Robotique I1-I2 2003
+// Copyright (C) 2003 Nicolas Schodet
+
+class BuspActionneurs
+{
+ private:
+ static const int m_address = 4;
+ unsigned char m_actionneurs;
+ public:
+ // Constructeur.
+ BuspActionneurs ();
+ // Destructeur.
+ ~BuspActionneurs ();
+ // Change un actionneur.
+ void set (int n, int val);
+ // Change tous les actionneurs.
+ void setAll (int set, int reset);
+};
+
+#endif // busp_actionneurs_h
diff --git a/2003/i/buzz/src/busp/test_busp.cc b/2003/i/buzz/src/busp/test_busp.cc
index 9feaeaa..a3b7c9e 100644
--- a/2003/i/buzz/src/busp/test_busp.cc
+++ b/2003/i/buzz/src/busp/test_busp.cc
@@ -75,13 +75,34 @@ main (int argc, char **argv)
atoi (argv[i + 1]));
}
}
+ if (argc >= 4 && strcmp (argv[1], "actionneurs") == 0 && argc % 2
+ == 0)
+ {
+ if (strcmp (argv[2], "all") == 0)
+ {
+ busp.getActionneurs ().setAll (atoi (argv[3]),
+ atoi (argv[4]))
+ }
+ else
+ {
+ for (int i = 2; i < argc; i += 2)
+ {
+ busp.getActionneurs ().set (atoi (argv[i]),
+ atoi (argv[i + 1]));
+ }
+ }
+ }
else
{
cerr << argv[0] << ": teste le bus parallèle." << endl
<< "\t" << argv[0] << " <adresse> [<donnée>]" << endl
<< "\t" << argv[0] << " reset" << endl
<< "\t" << argv[0] << " irq" << endl
- << "\t" << argv[0] << " servo [servo pos...]" << endl;
+ << "\t" << argv[0] << " capteurs" << endl
+ << "\t" << argv[0] << " actionneurs [<n> <val>...]" << endl
+ << "\t" << argv[0] << " actionneurs all <set> <reset>" <<
+ endl
+ << "\t" << argv[0] << " servo [<servo> <pos>...]" << endl;
}
return 1;
}