コントローラーのプログラム

Dependencies:   mbed

/media/uploads/Raccoon/controller.jpg

Committer:
Raccoon
Date:
Thu Dec 21 13:03:34 2017 +0000
Revision:
0:a17db953c0b2
Child:
1:a213bf47cc4d
test;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Raccoon 0:a17db953c0b2 1 #include "mbed.h"
Raccoon 0:a17db953c0b2 2 #define MAX 4
Raccoon 0:a17db953c0b2 3
Raccoon 0:a17db953c0b2 4 Serial xbee(PA_9, PA_10); // tx, rx
Raccoon 0:a17db953c0b2 5 AnalogIn ain_0(PA_5);
Raccoon 0:a17db953c0b2 6 AnalogIn ain_1(PA_6);
Raccoon 0:a17db953c0b2 7 AnalogIn ain_2(PA_4);
Raccoon 0:a17db953c0b2 8 AnalogIn ain_3(PA_7);
Raccoon 0:a17db953c0b2 9
Raccoon 0:a17db953c0b2 10 DigitalIn sw_0(PB_3);
Raccoon 0:a17db953c0b2 11 DigitalIn sw_1(PB_5);
Raccoon 0:a17db953c0b2 12 DigitalIn sw_2(PB_4);
Raccoon 0:a17db953c0b2 13
Raccoon 0:a17db953c0b2 14 DigitalOut myled(PA_8);
Raccoon 0:a17db953c0b2 15
Raccoon 0:a17db953c0b2 16 Ticker adc_timer;
Raccoon 0:a17db953c0b2 17 Ticker Tr_timer;
Raccoon 0:a17db953c0b2 18 Ticker led_timer;
Raccoon 0:a17db953c0b2 19 char data[MAX] = {0};
Raccoon 0:a17db953c0b2 20 unsigned int sw = 0;
Raccoon 0:a17db953c0b2 21 volatile int RECEVED = 0;
Raccoon 0:a17db953c0b2 22
Raccoon 0:a17db953c0b2 23 void transmit(void)
Raccoon 0:a17db953c0b2 24 {
Raccoon 0:a17db953c0b2 25 if(sw == 0)
Raccoon 0:a17db953c0b2 26 {
Raccoon 0:a17db953c0b2 27 xbee.putc('R');
Raccoon 0:a17db953c0b2 28 }
Raccoon 0:a17db953c0b2 29 else if(1 <= sw && sw <= MAX)
Raccoon 0:a17db953c0b2 30 {
Raccoon 0:a17db953c0b2 31 xbee.putc(data[sw-1]);
Raccoon 0:a17db953c0b2 32 }
Raccoon 0:a17db953c0b2 33 }
Raccoon 0:a17db953c0b2 34
Raccoon 0:a17db953c0b2 35 void switching(void)
Raccoon 0:a17db953c0b2 36 {
Raccoon 0:a17db953c0b2 37 if(sw == 0)
Raccoon 0:a17db953c0b2 38 {
Raccoon 0:a17db953c0b2 39 sw = 1;
Raccoon 0:a17db953c0b2 40 }
Raccoon 0:a17db953c0b2 41 else if(sw > 0)
Raccoon 0:a17db953c0b2 42 {
Raccoon 0:a17db953c0b2 43 if(++sw > MAX){
Raccoon 0:a17db953c0b2 44 sw = 0;
Raccoon 0:a17db953c0b2 45 }
Raccoon 0:a17db953c0b2 46 }
Raccoon 0:a17db953c0b2 47 }
Raccoon 0:a17db953c0b2 48
Raccoon 0:a17db953c0b2 49 void receve(void)
Raccoon 0:a17db953c0b2 50 {
Raccoon 0:a17db953c0b2 51 RECEVED = 1;
Raccoon 0:a17db953c0b2 52 }
Raccoon 0:a17db953c0b2 53
Raccoon 0:a17db953c0b2 54 void adcRead(void){
Raccoon 0:a17db953c0b2 55 /*ステッピングモーター*/
Raccoon 0:a17db953c0b2 56 data[0] = ain_0 * 255;
Raccoon 0:a17db953c0b2 57
Raccoon 0:a17db953c0b2 58 /*EX球*/
Raccoon 0:a17db953c0b2 59 data[1] = ain_1 * 255;
Raccoon 0:a17db953c0b2 60
Raccoon 0:a17db953c0b2 61 /*天の川*/
Raccoon 0:a17db953c0b2 62 data[2] = ain_2 * 255;
Raccoon 0:a17db953c0b2 63
Raccoon 0:a17db953c0b2 64 data[3] = ain_3 * 255;
Raccoon 0:a17db953c0b2 65 }
Raccoon 0:a17db953c0b2 66
Raccoon 0:a17db953c0b2 67 void led_off(void)
Raccoon 0:a17db953c0b2 68 {
Raccoon 0:a17db953c0b2 69 static int cnt = 0;
Raccoon 0:a17db953c0b2 70 if(RECEVED == 1)
Raccoon 0:a17db953c0b2 71 {
Raccoon 0:a17db953c0b2 72 myled = 1;
Raccoon 0:a17db953c0b2 73 RECEVED = 0;
Raccoon 0:a17db953c0b2 74 cnt = 0;
Raccoon 0:a17db953c0b2 75 }
Raccoon 0:a17db953c0b2 76 else if(++cnt > 50)
Raccoon 0:a17db953c0b2 77 {
Raccoon 0:a17db953c0b2 78 myled = 0;
Raccoon 0:a17db953c0b2 79 RECEVED = 0;
Raccoon 0:a17db953c0b2 80 }
Raccoon 0:a17db953c0b2 81 }
Raccoon 0:a17db953c0b2 82
Raccoon 0:a17db953c0b2 83 int main() {
Raccoon 0:a17db953c0b2 84 sw_0.mode(PullUp);
Raccoon 0:a17db953c0b2 85 sw_1.mode(PullUp);
Raccoon 0:a17db953c0b2 86 sw_2.mode(PullUp);
Raccoon 0:a17db953c0b2 87 xbee.baud(9600);
Raccoon 0:a17db953c0b2 88 xbee.format(8, Serial::None, 1);
Raccoon 0:a17db953c0b2 89 xbee.attach(&switching, Serial::TxIrq);//送信完了時に割り込み
Raccoon 0:a17db953c0b2 90 xbee.attach(&receve, Serial::RxIrq);//受信割り込み
Raccoon 0:a17db953c0b2 91 Tr_timer.attach_us(&transmit, 30000);//送信
Raccoon 0:a17db953c0b2 92 adc_timer.attach_us(&adcRead, 20000);//ADC用
Raccoon 0:a17db953c0b2 93 led_timer.attach_us(&led_off, 10000);//通信確認led用
Raccoon 0:a17db953c0b2 94 while(1)__WFI();
Raccoon 0:a17db953c0b2 95 }