右側のほうのセンサLPC1114FN28 fumiya版

Dependencies:   IRM2121_2 Ping mbed HMC6352 Watchdog

Fork of CatPot_SensorRight by CatPot 2015-2016

Revision:
16:83721dac1049
Parent:
15:3d27e435e014
--- a/main.cpp	Tue Mar 10 13:22:22 2015 +0000
+++ b/main.cpp	Wed Mar 11 01:03:39 2015 +0000
@@ -7,7 +7,6 @@
  
 #include "mbed.h"
  
-#include "MultiSerial.h"
 #include "IRM2121.h"
 #include "Ping.h"
 #include "HMC6352.h"
@@ -15,9 +14,7 @@
  
 #define PING_COUNT 5 //5回に1回にPing処理
 
-#define ADDRESS 0xAA//
-#define DATA_NUM 9
- 
+
  
 IRM2121 Ir[12] = {p5,p6,p7,p8,  p11,p12,    p15,p16,p17,p18,p19,p20};
 
@@ -29,9 +26,14 @@
 DigitalOut Led[4] = {LED1, LED2, LED3, LED4};
  
 HMC6352 hmc6352(p28,p27);
-MultiSerial Mbed(p13, p14);
+Serial Mbed(p13, p14);
 Serial pc(USBTX,USBRX);
  
+extern void micon_tx();
+uint8_t PingData[4] = {0};
+uint8_t IrData[3] = {0};
+uint8_t CompassData[2] = {0};
+    
 
 void IrSort(unsigned int input[], uint8_t output[]){
     
@@ -93,17 +95,13 @@
     uint8_t PingCk = 0;
     
     /*Data*/
-    unsigned int PingData[4] = {0};
+
     unsigned int IrBase[12] = {0};
-    uint8_t IrData[3] = {0};
-    uint8_t CompassData[2] = {0};
-    
+
     /*Serial*/
-    uint8_t tx_data[DATA_NUM]={0};
-    Mbed.write_data(tx_data, ADDRESS);
-    Mbed.start_write();
- 
     CompassDef = (hmc6352.sample() / 10);
+    Mbed.attach(&micon_tx,Serial::TxIrq);//送信空き割り込み設定
+    Mbed.putc(1);          
     while(1) {
         
         g.Service();
@@ -146,6 +144,7 @@
             CompassData[0] = Compass;
             CompassData[1] = 0;
         }
+        /*
         if(PingCk == 2){
             
             Ping1.Send();    
@@ -176,23 +175,28 @@
             
             PingCk = 0;
         }
-        
-        //ex.
-        tx_data[0] = IrData[0];
-        tx_data[1] = IrData[1];
-        tx_data[2] = IrData[2];
-        tx_data[3] = PingData[0];
-        tx_data[4] = PingData[1];
-        tx_data[5] = PingData[2];
-        tx_data[6] = PingData[3];
-        tx_data[7] = CompassData[0];
-        tx_data[8] = CompassData[1];        
-        
+        */
+        Ping1.Send();
+        Ping2.Send();
+        Ping3.Send();
+        Ping4.Send();    
+        wait_ms(30);
+        PingData[0] = Ping1.Read_cm();
+        PingData[1] = Ping2.Read_cm();
+        PingData[2] = Ping3.Read_cm();
+        PingData[3] = Ping4.Read_cm();
+        if(PingData[0]>0xFF) PingData[0]=0xFF;
+        if(PingData[1]>0xFF) PingData[1]=0xFF;
+        if(PingData[2]>0xFF) PingData[2]=0xFF;
+        if(PingData[3]>0xFF) PingData[3]=0xFF;
+            
         
         
         Led[0] = 0;//周回の終わり
         
         wait_ms(1);
+        
+    //pc.printf("%d %d %d %d \n", PingData[0],PingData[1],PingData[2],PingData[3]);
         //pc.printf("%d\t %d\t %d\t %d\t %d\t %d\t\n",tx_data[3],tx_data[4],tx_data[5],tx_data[6],tx_data[7],tx_data[8]);