Folked from spyglass77-san sample

Dependencies:   RemoteIR mbed

Fork of F303K8_IR_Rimocon_copy2 by hidetoshi sakamoto

Committer:
spyglass77
Date:
Sat Sep 10 20:48:54 2016 +0000
Revision:
0:286ca1a250e4
servo_iRemocon

Who changed what in which revision?

UserRevisionLine numberNew 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 }