Folked from spyglass77-san sample
Fork of F303K8_IR_Rimocon_copy2 by
main.cpp@0:286ca1a250e4, 2016-09-10 (annotated)
- Committer:
- spyglass77
- Date:
- Sat Sep 10 20:48:54 2016 +0000
- Revision:
- 0:286ca1a250e4
servo_iRemocon
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
spyglass77 | 0:286ca1a250e4 | 1 | // |
spyglass77 | 0:286ca1a250e4 | 2 | // NUCLEO-32 |
spyglass77 | 0:286ca1a250e4 | 3 | // STM32F303K8 |
spyglass77 | 0:286ca1a250e4 | 4 | // 1から3ボタンにてLED点灯、サーボ回転 |
spyglass77 | 0:286ca1a250e4 | 5 | // 16/09/10 Ver2 |
spyglass77 | 0:286ca1a250e4 | 6 | // |
spyglass77 | 0:286ca1a250e4 | 7 | |
spyglass77 | 0:286ca1a250e4 | 8 | #include "mbed.h" |
spyglass77 | 0:286ca1a250e4 | 9 | #include "ReceiverIR.h" |
spyglass77 | 0:286ca1a250e4 | 10 | #include <stdint.h> |
spyglass77 | 0:286ca1a250e4 | 11 | |
spyglass77 | 0:286ca1a250e4 | 12 | DigitalOut REDled(D11); |
spyglass77 | 0:286ca1a250e4 | 13 | DigitalOut YELled(D10); |
spyglass77 | 0:286ca1a250e4 | 14 | DigitalOut GREled(D9); |
spyglass77 | 0:286ca1a250e4 | 15 | PwmOut servo(D7); |
spyglass77 | 0:286ca1a250e4 | 16 | |
spyglass77 | 0:286ca1a250e4 | 17 | Serial pc(USBTX, USBRX); |
spyglass77 | 0:286ca1a250e4 | 18 | |
spyglass77 | 0:286ca1a250e4 | 19 | int main() { |
spyglass77 | 0:286ca1a250e4 | 20 | //パルス出力周期(20ms) |
spyglass77 | 0:286ca1a250e4 | 21 | servo.period(0.020); |
spyglass77 | 0:286ca1a250e4 | 22 | // PortD12を赤外線受信入力に |
spyglass77 | 0:286ca1a250e4 | 23 | ReceiverIR ir_rx(D12); |
spyglass77 | 0:286ca1a250e4 | 24 | RemoteIR::Format format; |
spyglass77 | 0:286ca1a250e4 | 25 | uint8_t buf[32]; |
spyglass77 | 0:286ca1a250e4 | 26 | uint32_t bitcount; |
spyglass77 | 0:286ca1a250e4 | 27 | |
spyglass77 | 0:286ca1a250e4 | 28 | // シリアル出力のボーレートを115200bpsに設定 |
spyglass77 | 0:286ca1a250e4 | 29 | pc.baud(115200); |
spyglass77 | 0:286ca1a250e4 | 30 | pc.printf("start\n"); |
spyglass77 | 0:286ca1a250e4 | 31 | |
spyglass77 | 0:286ca1a250e4 | 32 | while(1){ |
spyglass77 | 0:286ca1a250e4 | 33 | // 受信待ち |
spyglass77 | 0:286ca1a250e4 | 34 | if (ir_rx.getState() == ReceiverIR::Received) { |
spyglass77 | 0:286ca1a250e4 | 35 | pc.printf("get ir data\n"); |
spyglass77 | 0:286ca1a250e4 | 36 | // コード受信 |
spyglass77 | 0:286ca1a250e4 | 37 | bitcount = ir_rx.getData(&format, buf, sizeof(buf) * 8); |
spyglass77 | 0:286ca1a250e4 | 38 | if(bitcount < 1){ |
spyglass77 | 0:286ca1a250e4 | 39 | // ビット数0のものは無視 |
spyglass77 | 0:286ca1a250e4 | 40 | continue; |
spyglass77 | 0:286ca1a250e4 | 41 | } |
spyglass77 | 0:286ca1a250e4 | 42 | // 受信コード出力 |
spyglass77 | 0:286ca1a250e4 | 43 | pc.printf("code: "); |
spyglass77 | 0:286ca1a250e4 | 44 | for(int i=0;i<(bitcount>>3);i++){ |
spyglass77 | 0:286ca1a250e4 | 45 | pc.printf("%02x",buf[i]); |
spyglass77 | 0:286ca1a250e4 | 46 | } |
spyglass77 | 0:286ca1a250e4 | 47 | pc.printf("\n"); |
spyglass77 | 0:286ca1a250e4 | 48 | |
spyglass77 | 0:286ca1a250e4 | 49 | //3byte目でボタン判断 |
spyglass77 | 0:286ca1a250e4 | 50 | if (buf[2] == 0x16) { //1 |
spyglass77 | 0:286ca1a250e4 | 51 | servo.pulsewidth(0.0027);//左 |
spyglass77 | 0:286ca1a250e4 | 52 | REDled =!REDled; |
spyglass77 | 0:286ca1a250e4 | 53 | } |
spyglass77 | 0:286ca1a250e4 | 54 | if (buf[2] == 0x19) { //2 |
spyglass77 | 0:286ca1a250e4 | 55 | servo.pulsewidth(0.0015);//センター |
spyglass77 | 0:286ca1a250e4 | 56 | YELled =!YELled; |
spyglass77 | 0:286ca1a250e4 | 57 | } |
spyglass77 | 0:286ca1a250e4 | 58 | if (buf[2] == 0x0D) { //3 |
spyglass77 | 0:286ca1a250e4 | 59 | servo.pulsewidth(0.0006);//右 |
spyglass77 | 0:286ca1a250e4 | 60 | GREled =!GREled; |
spyglass77 | 0:286ca1a250e4 | 61 | } |
spyglass77 | 0:286ca1a250e4 | 62 | } |
spyglass77 | 0:286ca1a250e4 | 63 | } |
spyglass77 | 0:286ca1a250e4 | 64 | } |