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

ActuatorsSensor/Hallsensor.h

Committer:
chrigelburri
Date:
2013-04-26
Revision:
15:cb1337567ad4
Parent:
12:235e318a414f
Child:
38:d76e488e725f

File content as of revision 15:cb1337567ad4:

#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 an 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