LPC824専用プログラム

Dependencies:   Ping SDFileSystem mbed-src

Revision:
9:7f98d4415425
Parent:
8:a2eadba03040
Child:
10:641da47d4a14
diff -r a2eadba03040 -r 7f98d4415425 format.cpp
--- a/format.cpp	Sun Jan 24 09:09:49 2016 +0000
+++ b/format.cpp	Sun Jan 24 15:16:26 2016 +0000
@@ -75,104 +75,57 @@
 
 #ifdef ULTRA_SONIC
 
-//InterruptIn vol(P0_15);
-void fx(void){
-    uint8_t packet, val, order;
-    uint8_t front_dis=0, rear_dis=0;
-    front_dis = 200;
-    rear_dis = 150;
-    val = nucleo.receive();
-    if(val==1){
-        order = nucleo.read();
-        if(order == 0xAB){
-            packet = 0xAA;nucleo.reply(0xAA);
-        }
-        else{
-            packet = 0x55;nucleo.reply(0x55);
-        }
-        pc.printf("SSSSSSSSSSSSSSSSS%d\r\n", order);
-    }
-    else{
-        pc.printf("FFFF%d\r\n", 0);
-    }
-}
-void fx2(void){
-    uint16_t packet, val, order;
-    uint16_t front_dis=0, rear_dis=0;
-    front_dis = 200;
-    rear_dis = 150;
+
+uint16_t packet, val, order;
+uint16_t front_dis=0, rear_dis=0;
+
+void emergency(void){
+    led[1]=1;
+    //front_dis = 0xAA;
+    //rear_dis = 0xBB;
     val = nucleo.receive();
     if(val==1){
         order = nucleo.read();
         if(order == 0xABCD){
-            packet = 0xAAAA;nucleo.reply(0xAAAA);
+            packet = ((front_dis<<8)|(rear_dis))&0xFFFF;nucleo.reply(packet);
         }
         else{
-            packet = 0x5555;nucleo.reply(0x5555);
+            packet = 0xFFFF;nucleo.reply(packet);
         }
-        nucleo.reply(0x5555);
-        pc.printf("SSSSSSSSSSSSSSSSS%d\r\n", order);
+        //pc.printf("SSSSSSSSSSSSSSSSS%d\r\n", order);
     }
     else{
-        pc.printf("FFFF%d\r\n", 0);
+        //pc.printf("FFFF\r\n");
     }
+    led[1]=0;
 }
 void Usw_System(void){
-    int packet, val, order;
-    uint16_t front_dis=0, rear_dis=0;
     
-    nucleo.format(8, 3);
-    nucleo.frequency(1000000);
-    nucleo.reply(0x00);
-    /*
     nucleo.format(16, 3);
     nucleo.frequency(1000000);
     nucleo.reply(0x0000);
-    */
-    vol.fall(&fx);
-    //vol.fall(&fx2);
+    
+    call.fall(&emergency);
     
-    led[0]=led[1]=1;
+    //led[0]=led[1]=1;
     while(1){
-        /*
+        
+        led[0]=1;
         front.Send();
         wait_ms(30);
         front_dis = front.Read_cm();
-        if(front_dis>0xFF) front_dis=0xFF;
+        if(front_dis>0xFE) front_dis=0xFE;
+        
         
         rear.Send();
         wait_ms(30);
         rear_dis = rear.Read_cm();
-        if(rear_dis>0xFF) rear_dis=0xFF;
-        */
-        
-        
-        front_dis = 200;
-        rear_dis = 150;
+        if(rear_dis>0xFE) rear_dis=0xFE;
+        led[0]=0;
         
-        //pc.printf("%d\t%d\t\r\n", front_dis, rear_dis);
-        //pc.printf("%d\r\n", vol.read());
-        //fx();
-        //fx2();
-        while(0){
-            val = nucleo.receive();
-            if(val==1){
-                order = nucleo.read();
-                if(order == 0xAB){
-                    packet = 0xAA;nucleo.reply(packet);
-                }
-                else{
-                    packet = 0x55;nucleo.reply(packet);
-                }
-                
-                pc.printf("SSSSSSSSSSSSSSSSS%d\r\n", order);
-                break;
-            }
-            else{
-                pc.printf("FFFF%d\r\n", 0);
-                break;
-            }
-        }
+        pc.printf("%d\t%d\t\r\n", front_dis, rear_dis);
+        
+        //emergency();
     }
 }
 #endif /*ULTRA_SONIC*/
@@ -201,69 +154,53 @@
 #endif /*COLOR_SENSOR*/
 
 #ifdef IR_SENSOR
+uint8_t ir_notice=0;//4bit
+uint8_t ir_key=0;//4bit
+uint8_t ir_position[2]={0};//4bit*2
+
+uint8_t i;//ic
+uint8_t j;//ch
+uint8_t ch_num[3]={8, 8, 4};
+uint16_t ir_data[IC_NUM][IR_NUM]={0};
+uint16_t order,packet,val;
+void emergency(void){
+    //ir_key=0xA;
+    //ir_notice=0xC;
+    //ir_position[1]=0xE;
+    //ir_position[0]=0xF;
+    val = nucleo.receive();
+    if(val==1){
+        order = nucleo.read();
+        if(order == 0xABCD){
+            //key/notice/long/short
+            packet = ((ir_key<<12)|(ir_notice<<8)|(ir_position[1]<<4)|(ir_position[0]<<0))&0xFFFF;nucleo.reply(packet);
+        }
+        else{
+            packet = 0xFFFF;nucleo.reply(packet);
+        }
+        //pc.printf("SSSSSSSSSSSSSSSSS%d\r\n", order);
+    }
+    else{
+        //pc.f("FFFF\r\n");
+    }
+}
 void Ir_System(void){
-    int i;//ic
-    int j;//ch
-    uint8_t ch_num[3]={8, 8, 4};
-    uint16_t ir_data[IC_NUM][IR_NUM]={0};
-    
-    int order,packet,val;
-    //nucleo...chipselect will be defined interruptpin.
-    //nucleo...will be high clock and 16bit
-    //nucleo.format(16, 0);
-    //nucleo.frequency(5000000);
-    nucleo.format(8, 0);
+    nucleo.format(16, 3);
     nucleo.frequency(1000000);
-    nucleo.reply(0x00);
+    nucleo.reply(0x0000);
     
     ir.format(8, 3);
     ir.frequency(1000000);
-    int mod=1;
+    
+    call.fall(&emergency);
     
     for(i=0; i<IC_NUM; i++) cs[i]=1;
     while(1) {
-        /*cs[1]=1;
-        
-        mod = ir.write(mod);
-        //ir.write(0)&0xFF;
-        
-        cs[1]=0;
-        wait_us(1);
-        
-        pc.printf("%Value is ");
-        pc.printf("%d\t", mod);
-        pc.printf("\r\n");
-        */
         for(i=0; i<IC_NUM; i++){//IC
             for(j=0; j<ch_num[i]; j++){//Ch
                ir_data[i][j] = read_input(i, j);
             }
         }
-        while(0){
-            val = nucleo.receive();
-            if(val==1){
-                //order = nucleo.read();
-                order = nucleo.read();
-                //if(order != 0xAA) break;
-                //packet = ir_data[order/10][order%10] & 0x00FF;
-                //nucleo.reply(packet);
-                packet = (ir_data[1][0] & 0x0FF0)>>4;nucleo.reply(packet);
-                /*packet = (ir_data[1][1] & 0xFF00)>>8;nucleo.reply(packet);
-                packet = (ir_data[1][2] & 0xFF00)>>8;nucleo.reply(packet);
-                packet = (ir_data[1][3] & 0xFF00)>>8;nucleo.reply(packet);
-                packet = (ir_data[1][4] & 0xFF00)>>8;nucleo.reply(packet);
-                packet = (ir_data[1][5] & 0xFF00)>>8;nucleo.reply(packet);
-                packet = (ir_data[1][6] & 0xFF00)>>8;nucleo.reply(packet);
-                packet = (ir_data[1][7] & 0xFF00)>>8;nucleo.reply(packet);wait_us(1);*/
-                
-                pc.printf("SSSSSSSSSSSSSSSSS\r\n");
-                break;
-            }
-            else{
-                pc.printf("FFFFF\r\n");
-                break;
-            }
-        }
         pc.printf("%Value is ");
         pc.printf("%d\t", ir_data[1][0]);
         pc.printf("%d\t", ir_data[1][1]);
@@ -274,6 +211,7 @@
         pc.printf("%d\t", ir_data[1][6]);
         pc.printf("%d\t", ir_data[1][7]);
         pc.printf("\r\n");
+        //emergency();
     }
 }
 int read_input(int ic, int channel)
@@ -294,6 +232,25 @@
     
     return (high_byte << 8) | low_byte;//0x0000...0xFFFF
 }
+void BubbleSort(uint16_t *data, uint8_t n)
+{
+    bool flag;
+    uint8_t i;//inclement
+    uint16_t temp;//temporary
+    
+    do{
+        flag=0;
+        for (i=0; i<n-1; i++) {
+            if (data[i]>data[i+1]) {
+                /* 左右の並びがおかしければ入れ替える */
+                flag=1;
+                temp=data[i];
+                data[i]=data[i+1];
+                data[i+1]=temp;
+            }
+        }
+    } while (flag==1); /* 入れ替えがある間,繰り返す.*/
+}
 #endif /*IR_SENSOR*/