This is the project for the Old Model Robots for OU's Dr. Davis's Configurable Robots Research. This is being published so future robots can be set up easily.

Dependencies:   FatFileSystem MCP3008 Motor PinDetect QTR_8A SRF05 SSD1308_128x64_I2C mbed

Committer:
DrewSchaef
Date:
Wed Nov 01 15:57:59 2017 +0000
Revision:
0:bcad524c1856
Published the project to allow access for future work on the Configurable Robots Research Project(s).

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DrewSchaef 0:bcad524c1856 1 /**
DrewSchaef 0:bcad524c1856 2 * IR transmitter (Version 0.0.4)
DrewSchaef 0:bcad524c1856 3 *
DrewSchaef 0:bcad524c1856 4 * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
DrewSchaef 0:bcad524c1856 5 * http://shinta.main.jp/
DrewSchaef 0:bcad524c1856 6 */
DrewSchaef 0:bcad524c1856 7
DrewSchaef 0:bcad524c1856 8 #ifndef _TRANSMITTER_IR_H_
DrewSchaef 0:bcad524c1856 9 #define _TRANSMITTER_IR_H_
DrewSchaef 0:bcad524c1856 10
DrewSchaef 0:bcad524c1856 11 #include <mbed.h>
DrewSchaef 0:bcad524c1856 12
DrewSchaef 0:bcad524c1856 13 #include "RemoteIR.h"
DrewSchaef 0:bcad524c1856 14
DrewSchaef 0:bcad524c1856 15 /**
DrewSchaef 0:bcad524c1856 16 * IR transmitter class.
DrewSchaef 0:bcad524c1856 17 */
DrewSchaef 0:bcad524c1856 18 class TransmitterIR {
DrewSchaef 0:bcad524c1856 19 public:
DrewSchaef 0:bcad524c1856 20
DrewSchaef 0:bcad524c1856 21 /**
DrewSchaef 0:bcad524c1856 22 * Constructor.
DrewSchaef 0:bcad524c1856 23 *
DrewSchaef 0:bcad524c1856 24 * @param txpin Pin for transmit IR signal.
DrewSchaef 0:bcad524c1856 25 */
DrewSchaef 0:bcad524c1856 26 explicit TransmitterIR(PinName txpin);
DrewSchaef 0:bcad524c1856 27
DrewSchaef 0:bcad524c1856 28 /**
DrewSchaef 0:bcad524c1856 29 * Destructor.
DrewSchaef 0:bcad524c1856 30 */
DrewSchaef 0:bcad524c1856 31 ~TransmitterIR();
DrewSchaef 0:bcad524c1856 32
DrewSchaef 0:bcad524c1856 33 typedef enum {
DrewSchaef 0:bcad524c1856 34 Idle,
DrewSchaef 0:bcad524c1856 35 Leader,
DrewSchaef 0:bcad524c1856 36 Data,
DrewSchaef 0:bcad524c1856 37 Trailer
DrewSchaef 0:bcad524c1856 38 } State;
DrewSchaef 0:bcad524c1856 39
DrewSchaef 0:bcad524c1856 40 /**
DrewSchaef 0:bcad524c1856 41 * Get state.
DrewSchaef 0:bcad524c1856 42 *
DrewSchaef 0:bcad524c1856 43 * @return Current state.
DrewSchaef 0:bcad524c1856 44 */
DrewSchaef 0:bcad524c1856 45 State getState(void);
DrewSchaef 0:bcad524c1856 46
DrewSchaef 0:bcad524c1856 47 /**
DrewSchaef 0:bcad524c1856 48 * Set data.
DrewSchaef 0:bcad524c1856 49 *
DrewSchaef 0:bcad524c1856 50 * @param format Format.
DrewSchaef 0:bcad524c1856 51 * @param buf Buffer of a data.
DrewSchaef 0:bcad524c1856 52 * @param bitlength Bit length of the data.
DrewSchaef 0:bcad524c1856 53 *
DrewSchaef 0:bcad524c1856 54 * @return Data bit length.
DrewSchaef 0:bcad524c1856 55 */
DrewSchaef 0:bcad524c1856 56 int setData(RemoteIR::Format format, uint8_t *buf, int bitlength);
DrewSchaef 0:bcad524c1856 57
DrewSchaef 0:bcad524c1856 58 private:
DrewSchaef 0:bcad524c1856 59
DrewSchaef 0:bcad524c1856 60 typedef struct {
DrewSchaef 0:bcad524c1856 61 State state;
DrewSchaef 0:bcad524c1856 62 int bitcount;
DrewSchaef 0:bcad524c1856 63 int leader;
DrewSchaef 0:bcad524c1856 64 int data;
DrewSchaef 0:bcad524c1856 65 int trailer;
DrewSchaef 0:bcad524c1856 66 } work_t;
DrewSchaef 0:bcad524c1856 67
DrewSchaef 0:bcad524c1856 68 typedef struct {
DrewSchaef 0:bcad524c1856 69 RemoteIR::Format format;
DrewSchaef 0:bcad524c1856 70 int bitlength;
DrewSchaef 0:bcad524c1856 71 uint8_t buffer[64];
DrewSchaef 0:bcad524c1856 72 } data_t;
DrewSchaef 0:bcad524c1856 73
DrewSchaef 0:bcad524c1856 74 PwmOut tx;
DrewSchaef 0:bcad524c1856 75 Ticker ticker;
DrewSchaef 0:bcad524c1856 76 data_t data;
DrewSchaef 0:bcad524c1856 77 work_t work;
DrewSchaef 0:bcad524c1856 78
DrewSchaef 0:bcad524c1856 79 void tick();
DrewSchaef 0:bcad524c1856 80
DrewSchaef 0:bcad524c1856 81 };
DrewSchaef 0:bcad524c1856 82
DrewSchaef 0:bcad524c1856 83 #endif