![](/media/cache/profiles/51207371af261a5765e1ce9d4f56997a.jpg.50x50_q85.png)
コントローラーのプログラム
main.cpp@0:a17db953c0b2, 2017-12-21 (annotated)
- Committer:
- Raccoon
- Date:
- Thu Dec 21 13:03:34 2017 +0000
- Revision:
- 0:a17db953c0b2
- Child:
- 1:a213bf47cc4d
test;
Who changed what in which revision?
User | Revision | Line number | New 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 | } |