今までのジョイスティックの入力を段階分けしていた方式から、アナログ値をできる限りそのまま使用する方式に変更しました。

Dependencies:   mbed-rtos mbed

Fork of ControlMain2017 by albatross

Revision:
15:c5ade23e5de4
Parent:
14:ffe9460922cb
Child:
16:336e8b102555
--- a/main.cpp	Sun Mar 05 15:00:50 2017 +0000
+++ b/main.cpp	Sat Mar 11 11:10:35 2017 +0000
@@ -7,13 +7,16 @@
 #define SEND_DATAS_CAN_ID 100
 #define SEND_DATAS_TIME 0.5
 #define THRESHOLD_OH_VALUE 0.14
+#define SUM_UP_NUM 25
+#define SAMPLE_INTERVAL 0.05
 
 //-----------------------------------(resetInterrupt def)
 extern "C" void mbed_reset();
 InterruptIn resetPin(p22);
 Timer resetTimeCount;
-void resetInterrupt(){
-    while(resetPin){
+void resetInterrupt()
+{
+    while(resetPin) {
         resetTimeCount.start();
         if(resetTimeCount.read()>3) mbed_reset();
     }
@@ -31,6 +34,8 @@
 DigitalIn drug_L(p19);
 DigitalOut myled1(LED1);
 DigitalOut myled2(LED2);
+DigitalOut led4(LED4);
+DigitalOut led3(LED3);
 //Ticker sendDatasTicker;
 
 char yokutanDatas_R[YOKUTAN_DATAS_NUM];
@@ -45,86 +50,103 @@
 CANMessage recmsg_R;
 CANMessage recmsg_L;
 
-float get_analogin_ave(AnalogIn pin, int n){
+float get_analogin_ave(AnalogIn pin)
+{
     float val = 0;
-    for(int i = 0; i<n; i++){
+    for(int i = 0; i<SUM_UP_NUM; i++) {
         val += pin.read();
-    }return val/n;
+    }
+    return val/SUM_UP_NUM;
 }
 
-void InputControlValues(){
-    *(float *)inputDatas_R = get_analogin_ave(pichPin,8) + get_analogin_ave(rollPin,8);
-    *(float *)inputDatas_L = get_analogin_ave(pichPin,8) - get_analogin_ave(rollPin,8);
-    pc.printf("input_R:%f   input_L:%f\n\r",*(float *)inputDatas_R,*(float *)inputDatas_L);
+void InputControlValues()
+{
+    *(float *)inputDatas_R = get_analogin_ave(pichPin) + get_analogin_ave(rollPin);
+    *(float *)inputDatas_L = get_analogin_ave(pichPin) - get_analogin_ave(rollPin);
+     pc.printf("input_R:%f   input_L:%f\n\r",*(float *)inputDatas_R,*(float *)inputDatas_L);
     inputDatas_R[4] = (char)drug_R;
+    led4 =! led4;
+    pc.printf("%c",*(char *)inputDatas_R[4]);
+    //pc.printf("%c",(char)drug_R);
     inputDatas_L[4] = (char)drug_L;
+    // pc.printf("");
 }
 
-void toString_R(){
+void toString_R()
+{
     pc.printf("R:");
-    for(int i = 0; i < INPUT_DATAS_NUM; i++){
+    for(int i = 0; i < INPUT_DATAS_NUM; i++) {
         pc.printf("%d:%i    ",i,inputDatas_R[i]);
     }
 }
 
-void toString_L(){
+void toString_L()
+{
     pc.printf("L:");
-    for(int i = 0; i < INPUT_DATAS_NUM; i++){
+    for(int i = 0; i < INPUT_DATAS_NUM; i++) {
         pc.printf("%d:%i    ",i,inputDatas_L[i]);
     }
     pc.printf("\n\r");
 }
 
-void SendDatas(){
+void SendDatas()
+{
     can_R.write(CANMessage(SEND_DATAS_CAN_ID, inputDatas_R, INPUT_DATAS_NUM));
     can_L.write(CANMessage(SEND_DATAS_CAN_ID, inputDatas_L, INPUT_DATAS_NUM));
     toKeikiSerial.putc(';');
-    for(int i = 0; i < YOKUTAN_DATAS_NUM; i++){
+    for(int i = 0; i < YOKUTAN_DATAS_NUM; i++) {
         toKeikiSerial.putc(yokutanDatas_R[i]);
         toKeikiSerial.putc(yokutanDatas_L[i]);
     }
-    for(int i = 0; i < INPUT_DATAS_NUM; i++){
+    for(int i = 0; i < INPUT_DATAS_NUM; i++) {
         toKeikiSerial.putc(inputDatas_R[i]);
         toKeikiSerial.putc(inputDatas_L[i]);
     }
 //    toKeikiSerial.putc(cadence);
-    pc.printf("test\n\r");
+// pc.printf("test\n\r");
 }
 
-void init(){
+void init()
+{
 //--------------------------------------(resetInterrupt init)
     resetPin.rise(resetInterrupt);
     resetPin.mode(PullDown);
 //-----------------------------------------------------------
 //    sendDatasTicker.attach(SendDatas,SEND_DATAS_TIME);
-    for(int i = 0; i < INPUT_DATAS_NUM; i++){
+    for(int i = 0; i < INPUT_DATAS_NUM; i++) {
         inputDatas_R[i] = 0;
         inputDatas_L[i] = 0;
     }
 }
 
-void receiveDatas(){
-    if(can_R.read(recmsg_R)){
-        for(int i = 0; i < recmsg_R.len; i++){
+void receiveDatas()
+{
+    if(can_R.read(recmsg_R)) {
+        for(int i = 0; i < recmsg_R.len; i++) {
             yokutanDatas_R[i] = recmsg_R.data[i];
+            //   pc.printf("%c",yokutanDatas_R[i]);
         }
         myled1 = !myled1;
     }
-     if(can_L.read(recmsg_L)){
-        for(int i = 0; i < recmsg_L.len; i++){
+    if(can_L.read(recmsg_L)) {
+        for(int i = 0; i < recmsg_L.len; i++) {
             yokutanDatas_L[i] = recmsg_L.data[i];
+            led3 = !led3;
+            //  pc.printf("%c",yokutanDatas_L[i]);
         }
         myled2 = !myled2;
     }
 }
 
-int main(){
+int main()
+{
     init();
-    while(1){
+    while(1) {
         InputControlValues();
         wait_us(5);
         receiveDatas();
         SendDatas();
+        //     pc.printf("%d",drug_R.read());
 //        toString_R();
 //        toString_L();
         wait(WAIT_LOOP_TIME);