![](/media/cache/profiles/51207371af261a5765e1ce9d4f56997a.jpg.50x50_q85.png)
コントローラーのプログラム
main.cpp
- Committer:
- Raccoon
- Date:
- 2017-12-21
- Revision:
- 0:a17db953c0b2
- Child:
- 1:a213bf47cc4d
File content as of revision 0:a17db953c0b2:
#include "mbed.h" #define MAX 4 Serial xbee(PA_9, PA_10); // tx, rx AnalogIn ain_0(PA_5); AnalogIn ain_1(PA_6); AnalogIn ain_2(PA_4); AnalogIn ain_3(PA_7); DigitalIn sw_0(PB_3); DigitalIn sw_1(PB_5); DigitalIn sw_2(PB_4); DigitalOut myled(PA_8); Ticker adc_timer; Ticker Tr_timer; Ticker led_timer; char data[MAX] = {0}; unsigned int sw = 0; volatile int RECEVED = 0; void transmit(void) { if(sw == 0) { xbee.putc('R'); } else if(1 <= sw && sw <= MAX) { xbee.putc(data[sw-1]); } } void switching(void) { if(sw == 0) { sw = 1; } else if(sw > 0) { if(++sw > MAX){ sw = 0; } } } void receve(void) { RECEVED = 1; } void adcRead(void){ /*ステッピングモーター*/ data[0] = ain_0 * 255; /*EX球*/ data[1] = ain_1 * 255; /*天の川*/ data[2] = ain_2 * 255; data[3] = ain_3 * 255; } void led_off(void) { static int cnt = 0; if(RECEVED == 1) { myled = 1; RECEVED = 0; cnt = 0; } else if(++cnt > 50) { myled = 0; RECEVED = 0; } } int main() { sw_0.mode(PullUp); sw_1.mode(PullUp); sw_2.mode(PullUp); xbee.baud(9600); xbee.format(8, Serial::None, 1); xbee.attach(&switching, Serial::TxIrq);//送信完了時に割り込み xbee.attach(&receve, Serial::RxIrq);//受信割り込み Tr_timer.attach_us(&transmit, 30000);//送信 adc_timer.attach_us(&adcRead, 20000);//ADC用 led_timer.attach_us(&led_off, 10000);//通信確認led用 while(1)__WFI(); }