IR control car "spinner" 赤外線コントロールラジコン"spinner"の本体&プロポ統合版プログラムです

Dependencies:   Motor Propo_RemotoIR mbed

Committer:
suupen
Date:
Wed Oct 16 02:45:27 2013 +0000
Revision:
0:6825e25b7428
IR control car "spinner"

Who changed what in which revision?

UserRevisionLine numberNew contents of line
suupen 0:6825e25b7428 1 /* ir propo
suupen 0:6825e25b7428 2 * microcomputer
suupen 0:6825e25b7428 3 * LPC1114FN28
suupen 0:6825e25b7428 4 * used pin
suupen 0:6825e25b7428 5 * dp1 : irLED output
suupen 0:6825e25b7428 6 * dp9 : analog joystic x axis input
suupen 0:6825e25b7428 7 * dp10: analog joystic y axis input
suupen 0:6825e25b7428 8 * joystic
suupen 0:6825e25b7428 9 * akizuki(http://akizukidenshi.com/catalog/g/gP-04048/)
suupen 0:6825e25b7428 10 * analog joystic
suupen 0:6825e25b7428 11 * <schematic>
suupen 0:6825e25b7428 12 * Vcc(3.3[V]) : joystic pin1'(X axis) pin3(Y axis)
suupen 0:6825e25b7428 13 * GND(0[V]) : joystic pin3'(X axis) pin1(Y axis)
suupen 0:6825e25b7428 14 * LPC1114FN28 dp9 : joystic pin2'(X axis)
suupen 0:6825e25b7428 15 * LPC1114FN28 dp10: joystic pin2 (Y axis)
suupen 0:6825e25b7428 16 * <joystic fixed data>
suupen 0:6825e25b7428 17 * X axis -8 to 7 :int8_t
suupen 0:6825e25b7428 18 * Y axis -8 to 7 :int8_t
suupen 0:6825e25b7428 19 *
suupen 0:6825e25b7428 20 * ir send
suupen 0:6825e25b7428 21 * akizuki (http://akizukidenshi.com/catalog/g/gP-04048/)
suupen 0:6825e25b7428 22 * OSI5FU3A11C
suupen 0:6825e25b7428 23 * <schematic>
suupen 0:6825e25b7428 24 * setting If=50[mA]
suupen 0:6825e25b7428 25 * LPC1114FN28 dp1 : irLED(anode)
suupen 0:6825e25b7428 26 * GND(0[V]) : - 40[ohm] - irLED(cathod)
suupen 0:6825e25b7428 27 * <send format>
suupen 0:6825e25b7428 28 * SONY format
suupen 0:6825e25b7428 29 * send cycle : 100[ms]
suupen 0:6825e25b7428 30 * buf[0] :x axis
suupen 0:6825e25b7428 31 * buf[1] :y axis
suupen 0:6825e25b7428 32 */
suupen 0:6825e25b7428 33 #include "mbed.h"
suupen 0:6825e25b7428 34 #include "propo.h"
suupen 0:6825e25b7428 35 #include "TransmitterIR.h"
suupen 0:6825e25b7428 36
suupen 0:6825e25b7428 37
suupen 0:6825e25b7428 38 void interruptPropo(void);
suupen 0:6825e25b7428 39
suupen 0:6825e25b7428 40 //#define DBG_PROPO
suupen 0:6825e25b7428 41
suupen 0:6825e25b7428 42 #ifdef DBG_PROPO
suupen 0:6825e25b7428 43 DigitalOut myled(LED2);
suupen 0:6825e25b7428 44 Serial pc(dp16, dp15);
suupen 0:6825e25b7428 45 #endif // DBG_PROPO
suupen 0:6825e25b7428 46 //------------------------
suupen 0:6825e25b7428 47 // joystic
suupen 0:6825e25b7428 48 AnalogIn Xin(dp9);
suupen 0:6825e25b7428 49 AnalogIn Yin(dp10);
suupen 0:6825e25b7428 50
suupen 0:6825e25b7428 51 int8_t XinData;
suupen 0:6825e25b7428 52 int8_t YinData;
suupen 0:6825e25b7428 53 //-------------------------
suupen 0:6825e25b7428 54 // ir control
suupen 0:6825e25b7428 55 TransmitterIR ir_tx(dp1);
suupen 0:6825e25b7428 56 RemoteIR::Format format = RemoteIR::SONY;
suupen 0:6825e25b7428 57 uint8_t buf[2] = {0x00, 0x00};
suupen 0:6825e25b7428 58 int bitcount = 16;
suupen 0:6825e25b7428 59
suupen 0:6825e25b7428 60 Ticker timer;
suupen 0:6825e25b7428 61
suupen 0:6825e25b7428 62 void initialPropo(void)
suupen 0:6825e25b7428 63 {
suupen 0:6825e25b7428 64 timer.attach(&interruptPropo, 0.1);
suupen 0:6825e25b7428 65 }
suupen 0:6825e25b7428 66
suupen 0:6825e25b7428 67 void interruptPropo()
suupen 0:6825e25b7428 68 {
suupen 0:6825e25b7428 69 // analog 16bit unsigned data(uint16_t) to 4bit signed data(int8_t)
suupen 0:6825e25b7428 70 XinData = (int8_t)((int16_t)(Xin.read_u16() >> 12) - 0x8);
suupen 0:6825e25b7428 71 YinData = (int8_t)((int16_t)(Yin.read_u16() >> 12) - 0x8);
suupen 0:6825e25b7428 72
suupen 0:6825e25b7428 73 buf[0] = XinData;
suupen 0:6825e25b7428 74 buf[1] = YinData;
suupen 0:6825e25b7428 75
suupen 0:6825e25b7428 76 // send data
suupen 0:6825e25b7428 77 if(ir_tx.getState() == TransmitterIR::Idle) {
suupen 0:6825e25b7428 78 bitcount = ir_tx.setData(format, buf, bitcount);
suupen 0:6825e25b7428 79 }
suupen 0:6825e25b7428 80
suupen 0:6825e25b7428 81 #ifdef DBG_PROPO
suupen 0:6825e25b7428 82 pc.printf("X = %02d, Y = %02d \r\n",XinData,YinData);
suupen 0:6825e25b7428 83 myled = !myled;
suupen 0:6825e25b7428 84 #endif // DBG_PROPO
suupen 0:6825e25b7428 85 }
suupen 0:6825e25b7428 86
suupen 0:6825e25b7428 87