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

Dependencies:   IRM2121_2 Ping mbed HMC6352 Watchdog

Fork of CatPot_SensorRight by CatPot 2015-2016

Committer:
lilac0112_1
Date:
Fri Feb 27 04:43:53 2015 +0000
Revision:
8:52f8023cdb8f
Parent:
6:f64989ad4746
Child:
9:c992dfaa77ce
ddddd

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ryuna 0:182437c14483 1 /*
ryuna 1:8e9ee100d854 2 *メインと通信するLPC1114のプログラム()
ryuna 1:8e9ee100d854 3 *
ryuna 1:8e9ee100d854 4 *現在は両方がmainと通信します.
ryuna 1:8e9ee100d854 5 *
ryuna 1:8e9ee100d854 6 */
ryuna 0:182437c14483 7
ryuna 0:182437c14483 8 #include "mbed.h"
ryuna 2:099a6c81a02e 9
ryuna 5:a41471351ae3 10
ryuna 0:182437c14483 11 #define SYSAHBCLKDIV_Val 0x00000001 // Reset: 0x001
ryuna 0:182437c14483 12 #define CLOCK_SETUP 1 // デフォルト=1
ryuna 0:182437c14483 13 #define SYSPLLCTRL_Val 0x00000023 // デフォルト=23 Reset: 0x000
ryuna 0:182437c14483 14 #define SYSPLLCLKSEL_Val 0x00000001 // デフォルト=0 Reset: 0x000
ryuna 0:182437c14483 15 #define MAINCLKSEL_Val 0x00000003 // デフォルト=3 Reset: 0x000
ryuna 2:099a6c81a02e 16
ryuna 0:182437c14483 17 #include "IRM2121.h"
ryuna 0:182437c14483 18 #include "Ping.h"
ryuna 5:a41471351ae3 19 #include "WatchDogTimer.h"
ryuna 0:182437c14483 20
ryuna 0:182437c14483 21 #define PING_COUNT 5 //5回に1回にPing処理
ryuna 1:8e9ee100d854 22 #define IR_LEVEL 400 //irのしきい値
lilac0112_1 8:52f8023cdb8f 23 #define I2C_ADDRESS 0xAA+2 //
ryuna 1:8e9ee100d854 24
ryuna 1:8e9ee100d854 25
ryuna 1:8e9ee100d854 26
ryuna 2:099a6c81a02e 27 IRM2121 Ir[6] = {dp17,dp18,dp24,dp25,dp26,dp28};
ryuna 6:f64989ad4746 28
ryuna 0:182437c14483 29 Ping Ping1(dp1,dp2);
ryuna 2:099a6c81a02e 30 Ping Ping2(dp4,dp6);
ryuna 0:182437c14483 31 DigitalOut Led(LED1);
ryuna 0:182437c14483 32
ryuna 0:182437c14483 33 I2CSlave Mbed(dp5,dp27);//sda,scl
ryuna 0:182437c14483 34 Serial pc(USBTX,USBRX);
ryuna 5:a41471351ae3 35
ryuna 0:182437c14483 36
ryuna 0:182437c14483 37
ryuna 0:182437c14483 38
ryuna 0:182437c14483 39
ryuna 0:182437c14483 40 int main() {
ryuna 0:182437c14483 41
ryuna 2:099a6c81a02e 42 /*begin SetUp*/
ryuna 0:182437c14483 43 //default Mbed.frequency();
ryuna 1:8e9ee100d854 44 Mbed.address(I2C_ADDRESS);
ryuna 5:a41471351ae3 45 Watchdog g;
ryuna 5:a41471351ae3 46 g.kick(1.0f);//1秒でWDT発生
ryuna 2:099a6c81a02e 47 /*end Setup*/
ryuna 2:099a6c81a02e 48
ryuna 2:099a6c81a02e 49 /*Count*/
ryuna 2:099a6c81a02e 50 uint8_t PingCk = 0;
lilac0112_1 8:52f8023cdb8f 51 int i;
ryuna 2:099a6c81a02e 52
ryuna 0:182437c14483 53 /*Data*/
ryuna 2:099a6c81a02e 54 uint8_t PingData[2] = {0};
ryuna 6:f64989ad4746 55 unsigned int ir__data[6] = {0};
lilac0112_1 8:52f8023cdb8f 56
ryuna 1:8e9ee100d854 57 /*State(operate_value etc...)*/
ryuna 1:8e9ee100d854 58 int I2CState;
ryuna 1:8e9ee100d854 59
ryuna 0:182437c14483 60 /* I2Cdata*/
lilac0112_1 8:52f8023cdb8f 61 char SendData[6]={0};
ryuna 5:a41471351ae3 62 char AddressData[1] = {0};
ryuna 1:8e9ee100d854 63
ryuna 0:182437c14483 64
ryuna 0:182437c14483 65 while(1) {
ryuna 0:182437c14483 66
lilac0112_1 8:52f8023cdb8f 67 /*Ping(圧縮1/1)*/
lilac0112_1 8:52f8023cdb8f 68 /*if(PingCk >= PING_COUNT){
lilac0112_1 8:52f8023cdb8f 69
ryuna 0:182437c14483 70 Ping1.Send();
ryuna 0:182437c14483 71 wait_ms(30);
ryuna 2:099a6c81a02e 72 PingData[0] = Ping1.Read_cm();
lilac0112_1 8:52f8023cdb8f 73
lilac0112_1 8:52f8023cdb8f 74 if(I2C_ADDRESS==0xAA){
lilac0112_1 8:52f8023cdb8f 75 Ping2.Send();
lilac0112_1 8:52f8023cdb8f 76 wait_ms(30);
lilac0112_1 8:52f8023cdb8f 77 PingData[1] = Ping2.Read_cm();
lilac0112_1 8:52f8023cdb8f 78 }
lilac0112_1 8:52f8023cdb8f 79
lilac0112_1 8:52f8023cdb8f 80 for(i=0; i < 2; i++){
lilac0112_1 8:52f8023cdb8f 81
lilac0112_1 8:52f8023cdb8f 82 if(PingData[i] > 125) PingData[i] = 125;
lilac0112_1 8:52f8023cdb8f 83
lilac0112_1 8:52f8023cdb8f 84 }
lilac0112_1 8:52f8023cdb8f 85
ryuna 0:182437c14483 86 PingCk = 0;
lilac0112_1 8:52f8023cdb8f 87 }*/
lilac0112_1 8:52f8023cdb8f 88
lilac0112_1 8:52f8023cdb8f 89 /*Ir(圧縮1/10)*/
lilac0112_1 8:52f8023cdb8f 90 for(i=0; i < 6; i++){
lilac0112_1 8:52f8023cdb8f 91
lilac0112_1 8:52f8023cdb8f 92 ir__data[i] = Ir[i].Read();
lilac0112_1 8:52f8023cdb8f 93
lilac0112_1 8:52f8023cdb8f 94 if(ir__data[i] > 1000) ir__data[i] = 1000;
lilac0112_1 8:52f8023cdb8f 95 ir__data[i] = ir__data[i] / 10;
ryuna 0:182437c14483 96 }
lilac0112_1 8:52f8023cdb8f 97
ryuna 1:8e9ee100d854 98 I2CState = Mbed.receive();
ryuna 5:a41471351ae3 99
lilac0112_1 8:52f8023cdb8f 100 switch(I2CState){
lilac0112_1 8:52f8023cdb8f 101
ryuna 0:182437c14483 102 case I2CSlave::ReadAddressed:
ryuna 5:a41471351ae3 103
lilac0112_1 8:52f8023cdb8f 104 if(AddressData[0]){
lilac0112_1 8:52f8023cdb8f 105 switch(AddressData[0]){
lilac0112_1 8:52f8023cdb8f 106 case 0x01://ping
lilac0112_1 8:52f8023cdb8f 107 SendData[0] = (char)PingData[0];
lilac0112_1 8:52f8023cdb8f 108 SendData[1] = (char)PingData[1];
lilac0112_1 8:52f8023cdb8f 109 Mbed.write(SendData, 2);
lilac0112_1 8:52f8023cdb8f 110 break;
lilac0112_1 8:52f8023cdb8f 111 case 0x00:
lilac0112_1 8:52f8023cdb8f 112 case 0x02://IR
lilac0112_1 8:52f8023cdb8f 113 for(i=0; i < 6; i++) SendData[i] = (char)ir__data[i];
lilac0112_1 8:52f8023cdb8f 114
lilac0112_1 8:52f8023cdb8f 115 /*for(i=0; i<6; i++){
lilac0112_1 8:52f8023cdb8f 116 pc.printf("%d ", (char)SendData[i]);
lilac0112_1 8:52f8023cdb8f 117 }
lilac0112_1 8:52f8023cdb8f 118 pc.printf("\n");*/
lilac0112_1 8:52f8023cdb8f 119
lilac0112_1 8:52f8023cdb8f 120 Mbed.write(SendData, 6);
lilac0112_1 8:52f8023cdb8f 121
lilac0112_1 8:52f8023cdb8f 122 break;
lilac0112_1 8:52f8023cdb8f 123 default:
lilac0112_1 8:52f8023cdb8f 124 break;
lilac0112_1 8:52f8023cdb8f 125 }
lilac0112_1 8:52f8023cdb8f 126 }
ryuna 2:099a6c81a02e 127
lilac0112_1 8:52f8023cdb8f 128 AddressData[0] = 0x00;
ryuna 0:182437c14483 129 break;
ryuna 1:8e9ee100d854 130 case I2CSlave::WriteGeneral:
ryuna 5:a41471351ae3 131 Mbed.read(AddressData,1);
ryuna 0:182437c14483 132 break;
ryuna 1:8e9ee100d854 133 case I2CSlave::WriteAddressed:
lilac0112_1 8:52f8023cdb8f 134 Mbed.read(AddressData,1);
ryuna 0:182437c14483 135 break;
ryuna 0:182437c14483 136
ryuna 0:182437c14483 137 }
ryuna 0:182437c14483 138 Led = 0;
lilac0112_1 8:52f8023cdb8f 139
lilac0112_1 8:52f8023cdb8f 140 PingCk ++;
ryuna 6:f64989ad4746 141
ryuna 0:182437c14483 142 }
lilac0112_1 8:52f8023cdb8f 143 }