David's dead reckoning code for the LVBots competition on March 6th. Uses the mbed LPC1768, DRV8835, QTR-3RC, and two DC motors with encoders.

Dependencies:   PololuEncoder Pacer mbed GeneralDebouncer

main.cpp

Committer:
DavidEGrayson
Date:
2014-02-24
Revision:
16:8eaa5bc2bdb1
Parent:
12:835a4d24ae3b
Child:
17:2df9861f53ee

File content as of revision 16:8eaa5bc2bdb1:

#include <mbed.h>
#include <Pacer.h>

#include "motors.h"
#include "encoders.h"
#include "leds.h"
#include "pc_serial.h"
#include "test.h"
#include "reckoner.h"
#include "buttons.h"

int __attribute__((noreturn)) main()
{
    pc.baud(115200);
    
    // Enable pull-ups on encoder pins and give them a chance to settle.
    encodersInit();
    motorsInit();
    buttonsInit();

    // Test routines
    //testMotors();
    //testEncoders();
    //testLineSensors();
    //testReckoner();
    testButtons();

    while(1)
    {

    }
}

void updateReckonerFromEncoders()
{
    while(encoderBuffer.hasEvents())
    {
        PololuEncoderEvent event = encoderBuffer.readEvent();
        switch(event)
        {
            case ENCODER_LEFT | POLOLU_ENCODER_EVENT_INC:
                reckoner.handleTickLeftForward();
                break;
            case ENCODER_LEFT | POLOLU_ENCODER_EVENT_DEC:
                reckoner.handleTickLeftBackward();
                break;
            case ENCODER_RIGHT | POLOLU_ENCODER_EVENT_INC:
                reckoner.handleTickRightForward();
                break;
            case ENCODER_RIGHT | POLOLU_ENCODER_EVENT_DEC:
                reckoner.handleTickRightBackward();
                break;
                   
        }
    }
}