Controller Class for Mbed.

Committer:
kikuchi8810
Date:
Fri Dec 17 10:04:13 2021 +0000
Revision:
1:ab1c94d6f4fb
Parent:
0:4f5b9889cbc4
update

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kikuchi8810 0:4f5b9889cbc4 1 #include "mbed.h"
kikuchi8810 0:4f5b9889cbc4 2 #include "platform/mbed_thread.h"
kikuchi8810 0:4f5b9889cbc4 3 #include "Controller.h"
kikuchi8810 0:4f5b9889cbc4 4
kikuchi8810 0:4f5b9889cbc4 5 #define INT_TIME 0.001
kikuchi8810 0:4f5b9889cbc4 6 #define INT_TIME_MS INT_TIME*1000
kikuchi8810 0:4f5b9889cbc4 7
kikuchi8810 0:4f5b9889cbc4 8 Serial pc(USBTX, USBRX);
kikuchi8810 1:ab1c94d6f4fb 9 Controller con(P7_4,P7_5, 115200); //TXpin, RXpin, baudrateを設定
kikuchi8810 0:4f5b9889cbc4 10
kikuchi8810 0:4f5b9889cbc4 11 DigitalOut led_user(LED_USER);
kikuchi8810 0:4f5b9889cbc4 12 DigitalOut led_red(LED_RED);
kikuchi8810 0:4f5b9889cbc4 13 DigitalOut pin_emergency(D0); //非常停止信号
kikuchi8810 0:4f5b9889cbc4 14
kikuchi8810 0:4f5b9889cbc4 15 Ticker interrupt;
kikuchi8810 0:4f5b9889cbc4 16 bool flag_10ms = false;
kikuchi8810 0:4f5b9889cbc4 17 bool flag_1s = false;
kikuchi8810 0:4f5b9889cbc4 18
kikuchi8810 0:4f5b9889cbc4 19 void interrupt_func()
kikuchi8810 0:4f5b9889cbc4 20 {
kikuchi8810 0:4f5b9889cbc4 21 static int count_10ms = 0;
kikuchi8810 0:4f5b9889cbc4 22 if(count_10ms++ > (INT_TIME_MS*10 - 1))
kikuchi8810 0:4f5b9889cbc4 23 {
kikuchi8810 0:4f5b9889cbc4 24 flag_10ms = true;
kikuchi8810 0:4f5b9889cbc4 25 count_10ms = 0;
kikuchi8810 0:4f5b9889cbc4 26
kikuchi8810 0:4f5b9889cbc4 27 static int count_1s = 0;
kikuchi8810 0:4f5b9889cbc4 28 if(count_1s++ > (INT_TIME_MS*100 -1))
kikuchi8810 0:4f5b9889cbc4 29 {
kikuchi8810 0:4f5b9889cbc4 30 flag_1s = true;
kikuchi8810 0:4f5b9889cbc4 31 count_1s = 0;
kikuchi8810 0:4f5b9889cbc4 32 }
kikuchi8810 0:4f5b9889cbc4 33 }
kikuchi8810 0:4f5b9889cbc4 34 }
kikuchi8810 0:4f5b9889cbc4 35
kikuchi8810 0:4f5b9889cbc4 36 int main()
kikuchi8810 0:4f5b9889cbc4 37 {
kikuchi8810 0:4f5b9889cbc4 38 pc.baud(115200);
kikuchi8810 0:4f5b9889cbc4 39
kikuchi8810 0:4f5b9889cbc4 40 /* 第一引数はタイムアウト時間[ms],第二引数はupdate関数の呼び出し周期[ms] */
kikuchi8810 0:4f5b9889cbc4 41 con.init(1000, INT_TIME_MS*10); //init関数を呼び出さなければタイムアウトの処理は行われない(available関数は常にtrueを返す)
kikuchi8810 0:4f5b9889cbc4 42
kikuchi8810 0:4f5b9889cbc4 43 interrupt.attach(&interrupt_func, INT_TIME);
kikuchi8810 0:4f5b9889cbc4 44
kikuchi8810 0:4f5b9889cbc4 45 while(1)
kikuchi8810 0:4f5b9889cbc4 46 {
kikuchi8810 0:4f5b9889cbc4 47 if(flag_10ms)
kikuchi8810 0:4f5b9889cbc4 48 {
kikuchi8810 1:ab1c94d6f4fb 49 con.update(); //main関数のflag内で呼び出す.
kikuchi8810 0:4f5b9889cbc4 50 if(con.available())
kikuchi8810 0:4f5b9889cbc4 51 {
kikuchi8810 0:4f5b9889cbc4 52 int buttonState = con.getButtonState();
kikuchi8810 0:4f5b9889cbc4 53 uint8_t joyRx = con.readJoyRXbyte();
kikuchi8810 0:4f5b9889cbc4 54 uint8_t joyRy = con.readJoyRYbyte();
kikuchi8810 0:4f5b9889cbc4 55 uint8_t joyLx = con.readJoyLXbyte();
kikuchi8810 0:4f5b9889cbc4 56 uint8_t joyLy = con.readJoyLYbyte();
kikuchi8810 0:4f5b9889cbc4 57
kikuchi8810 0:4f5b9889cbc4 58 pc.printf("%d\t", buttonState);
kikuchi8810 0:4f5b9889cbc4 59 pc.printf("%d\t", joyRx);
kikuchi8810 0:4f5b9889cbc4 60 pc.printf("%d\t", joyRy);
kikuchi8810 0:4f5b9889cbc4 61 pc.printf("%d\t", joyLx);
kikuchi8810 0:4f5b9889cbc4 62 pc.printf("%d\r\n", joyLy);
kikuchi8810 0:4f5b9889cbc4 63
kikuchi8810 0:4f5b9889cbc4 64 led_red.write(1);
kikuchi8810 0:4f5b9889cbc4 65 pin_emergency.write(1); //非常停止を解除する
kikuchi8810 0:4f5b9889cbc4 66 }
kikuchi8810 0:4f5b9889cbc4 67 else
kikuchi8810 0:4f5b9889cbc4 68 {
kikuchi8810 0:4f5b9889cbc4 69 pc.printf("disconnected\r\n");
kikuchi8810 0:4f5b9889cbc4 70 led_red.write(0);
kikuchi8810 0:4f5b9889cbc4 71 pin_emergency.write(0); //非常停止を作動させる
kikuchi8810 0:4f5b9889cbc4 72 }
kikuchi8810 0:4f5b9889cbc4 73
kikuchi8810 0:4f5b9889cbc4 74 flag_10ms = false;
kikuchi8810 0:4f5b9889cbc4 75 }
kikuchi8810 0:4f5b9889cbc4 76
kikuchi8810 0:4f5b9889cbc4 77 if(flag_1s)
kikuchi8810 0:4f5b9889cbc4 78 {
kikuchi8810 0:4f5b9889cbc4 79 led_user.write(!led_user.read());
kikuchi8810 0:4f5b9889cbc4 80 flag_1s = false;
kikuchi8810 0:4f5b9889cbc4 81 }
kikuchi8810 0:4f5b9889cbc4 82
kikuchi8810 0:4f5b9889cbc4 83 thread_sleep_for(1);
kikuchi8810 0:4f5b9889cbc4 84 }
kikuchi8810 0:4f5b9889cbc4 85 }