This program is for an autonomous robot for the competition at the Hochschule Luzern. http://cruisingcrepe.wordpress.com/ We are one of the 32 teams. http://cruisingcrepe.wordpress.com/ The postition control is based on this Documentation: Control of Wheeled Mobile Robots: An Experimental Overview from Alessandro De Luca, Giuseppe Oriolo, Marilena Vendittelli. For more information see here: http://www.dis.uniroma1.it/~labrob/pub/papers/Ramsete01.pdf

Dependencies:   mbed

Fork of autonomous Robot Android by Christian Burri

Revision:
12:235e318a414f
Parent:
11:775ebb69d5e1
Child:
15:cb1337567ad4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ActuatorsSensor/Hallsensor.h	Sun Apr 07 08:31:51 2013 +0000
@@ -0,0 +1,74 @@
+#ifndef HALLSENSOR_H
+#define HALLSENSOR_H
+
+#include "mbed.h"
+
+/**
+ * @author Christian Burri
+ *
+ * @copyright Copyright © 2013 HSLU Pren Team #1 Cruising Crêpe
+ * All rights reserved.
+ *
+ * @brief
+ *
+ * Interface to count the Hallsensor input from a EC-Motor.
+ *
+ */
+class Hallsensor
+{
+
+private:
+
+    /**
+     * @brief Update the pulse count.
+     * Called on every rising/falling edge of Hall 1-3.
+     * Reads the state of the channels and determines whether a pulse forward
+     * or backward has occured, updating the count appropriately.
+     */
+    void encode(void);
+
+    InterruptIn hall1_;
+    InterruptIn hall2_;
+    InterruptIn hall3_;
+
+    int          prevState_;
+    int          currState_;
+
+    volatile int pulses_;
+
+public:
+
+    /**
+     * @brief Constructor of the class <code>Hallsensor</code>.
+     *
+     * Reads the current values on Hall1 , Hall2 and Hall3 to determine the
+     * initial state.
+     * Attaches the encode function to the rise/fall interrupt edges of
+     * Hall1, Hall2 and Hall3.
+     * @param hall1    mbed pin for Hall1 input.
+     * @param hall2    mbed pin for Hall2 input.
+     * @param hall3    mbed pin for Hall3 input.
+     */
+    Hallsensor(PinName hall1, PinName hall2, PinName hall3);
+
+    /**
+     * @brief Reset the encoder.
+     * Sets the pulses and revolutions count to zero.
+     */
+    void reset(void);
+
+    /**
+     * @brief Read the number of pulses recorded by the encoder.
+     * @return Number of pulses which have occured, given in [count]
+     */
+    int getPulses(void);
+
+    /**
+     * @brief Read the number of revolutions recorded by the encoder.
+     * @return Number of revolutions which have occured on the index channel.
+     */
+    int getRevolutions(void);
+
+};
+
+#endif