SMART CLEO Uart PIR

Committer:
SMART_CLEO
Date:
Thu Sep 28 03:37:24 2017 +0000
Revision:
0:49114a9f05a6
Child:
1:611e7e2a13df
SMART_CLEO

Who changed what in which revision?

UserRevisionLine numberNew contents of line
SMART_CLEO 0:49114a9f05a6 1 #include "mbed.h"
SMART_CLEO 0:49114a9f05a6 2
SMART_CLEO 0:49114a9f05a6 3 struct UART_buf
SMART_CLEO 0:49114a9f05a6 4 {
SMART_CLEO 0:49114a9f05a6 5 uint8_t STA;
SMART_CLEO 0:49114a9f05a6 6 uint8_t MODE;
SMART_CLEO 0:49114a9f05a6 7 uint8_t CMD;
SMART_CLEO 0:49114a9f05a6 8 uint8_t LEN;
SMART_CLEO 0:49114a9f05a6 9 uint8_t DATA[32];
SMART_CLEO 0:49114a9f05a6 10 uint8_t END;
SMART_CLEO 0:49114a9f05a6 11
SMART_CLEO 0:49114a9f05a6 12 };
SMART_CLEO 0:49114a9f05a6 13
SMART_CLEO 0:49114a9f05a6 14 PinName pin_SOUND = PC_3;
SMART_CLEO 0:49114a9f05a6 15
SMART_CLEO 0:49114a9f05a6 16 AnalogIn adc_SOUND(pin_SOUND);
SMART_CLEO 0:49114a9f05a6 17
SMART_CLEO 0:49114a9f05a6 18 Serial SerialUART(PA_2, PA_3);
SMART_CLEO 0:49114a9f05a6 19
SMART_CLEO 0:49114a9f05a6 20 uint8_t Buffer[37];
SMART_CLEO 0:49114a9f05a6 21
SMART_CLEO 0:49114a9f05a6 22 //UART_buf RX_BUF;
SMART_CLEO 0:49114a9f05a6 23
SMART_CLEO 0:49114a9f05a6 24 //Ticker Sensor_Timer;
SMART_CLEO 0:49114a9f05a6 25
SMART_CLEO 0:49114a9f05a6 26 //void SerialUARTRX_ISR(void);
SMART_CLEO 0:49114a9f05a6 27 //void Timer_setting(uint8_t cmd, uint8_t value);
SMART_CLEO 0:49114a9f05a6 28 //void Sensor_Read(void);
SMART_CLEO 0:49114a9f05a6 29 void Sensor_Read_Data(uint8_t data);
SMART_CLEO 0:49114a9f05a6 30
SMART_CLEO 0:49114a9f05a6 31 int main() {
SMART_CLEO 0:49114a9f05a6 32
SMART_CLEO 0:49114a9f05a6 33 uint8_t Sound_flag = 0;
SMART_CLEO 0:49114a9f05a6 34 int volt;
SMART_CLEO 0:49114a9f05a6 35
SMART_CLEO 0:49114a9f05a6 36 SerialUART.baud(115200);
SMART_CLEO 0:49114a9f05a6 37
SMART_CLEO 0:49114a9f05a6 38 //SerialUART.attach(&SerialUARTRX_ISR);
SMART_CLEO 0:49114a9f05a6 39
SMART_CLEO 0:49114a9f05a6 40 //Timer_setting(0x06, 2);
SMART_CLEO 0:49114a9f05a6 41
SMART_CLEO 0:49114a9f05a6 42 while(1)
SMART_CLEO 0:49114a9f05a6 43 {
SMART_CLEO 0:49114a9f05a6 44 volt = adc_SOUND.read()*3300;
SMART_CLEO 0:49114a9f05a6 45 if(Sound_flag && (volt <= 1000))
SMART_CLEO 0:49114a9f05a6 46 {
SMART_CLEO 0:49114a9f05a6 47 Sensor_Read_Data(0);
SMART_CLEO 0:49114a9f05a6 48 Sound_flag = 0;
SMART_CLEO 0:49114a9f05a6 49 wait(1);
SMART_CLEO 0:49114a9f05a6 50 }
SMART_CLEO 0:49114a9f05a6 51 else if((Sound_flag == 0) && (volt > 1000))
SMART_CLEO 0:49114a9f05a6 52 {
SMART_CLEO 0:49114a9f05a6 53 Sensor_Read_Data(1);
SMART_CLEO 0:49114a9f05a6 54 Sound_flag = 1;
SMART_CLEO 0:49114a9f05a6 55 wait(1);
SMART_CLEO 0:49114a9f05a6 56 }
SMART_CLEO 0:49114a9f05a6 57 }
SMART_CLEO 0:49114a9f05a6 58 }
SMART_CLEO 0:49114a9f05a6 59
SMART_CLEO 0:49114a9f05a6 60 /*void SerialUARTRX_ISR(void)
SMART_CLEO 0:49114a9f05a6 61 {
SMART_CLEO 0:49114a9f05a6 62 static uint8_t RX_count = 0, RX_Len = 32, RX_Status = 0;
SMART_CLEO 0:49114a9f05a6 63 uint8_t rx_da = SerialUART.getc();
SMART_CLEO 0:49114a9f05a6 64 switch(RX_Status)
SMART_CLEO 0:49114a9f05a6 65 {
SMART_CLEO 0:49114a9f05a6 66 case 0:
SMART_CLEO 0:49114a9f05a6 67 if(rx_da == 0x76)
SMART_CLEO 0:49114a9f05a6 68 {
SMART_CLEO 0:49114a9f05a6 69 RX_BUF.STA = rx_da;
SMART_CLEO 0:49114a9f05a6 70 RX_Status++;
SMART_CLEO 0:49114a9f05a6 71 }
SMART_CLEO 0:49114a9f05a6 72 break;
SMART_CLEO 0:49114a9f05a6 73 case 1:
SMART_CLEO 0:49114a9f05a6 74 RX_BUF.MODE = rx_da;
SMART_CLEO 0:49114a9f05a6 75 RX_Status++;
SMART_CLEO 0:49114a9f05a6 76 break;
SMART_CLEO 0:49114a9f05a6 77 case 2:
SMART_CLEO 0:49114a9f05a6 78 RX_BUF.CMD = rx_da;
SMART_CLEO 0:49114a9f05a6 79 RX_Status++;
SMART_CLEO 0:49114a9f05a6 80 break;
SMART_CLEO 0:49114a9f05a6 81 case 3:
SMART_CLEO 0:49114a9f05a6 82 RX_BUF.LEN = rx_da;
SMART_CLEO 0:49114a9f05a6 83 RX_Len = RX_BUF.LEN;
SMART_CLEO 0:49114a9f05a6 84 RX_Status++;
SMART_CLEO 0:49114a9f05a6 85 if(RX_Len == 0)
SMART_CLEO 0:49114a9f05a6 86 RX_Status++;
SMART_CLEO 0:49114a9f05a6 87 break;
SMART_CLEO 0:49114a9f05a6 88 case 4:
SMART_CLEO 0:49114a9f05a6 89 RX_BUF.DATA[RX_count] = rx_da;
SMART_CLEO 0:49114a9f05a6 90 RX_count++;
SMART_CLEO 0:49114a9f05a6 91 if(RX_count == RX_Len)
SMART_CLEO 0:49114a9f05a6 92 {
SMART_CLEO 0:49114a9f05a6 93 RX_Status++;
SMART_CLEO 0:49114a9f05a6 94 RX_count = 0;
SMART_CLEO 0:49114a9f05a6 95 RX_Len = 32;
SMART_CLEO 0:49114a9f05a6 96 }
SMART_CLEO 0:49114a9f05a6 97 break;
SMART_CLEO 0:49114a9f05a6 98 case 5:
SMART_CLEO 0:49114a9f05a6 99 if(rx_da == 0x3E)
SMART_CLEO 0:49114a9f05a6 100 {
SMART_CLEO 0:49114a9f05a6 101 RX_BUF.END = rx_da;
SMART_CLEO 0:49114a9f05a6 102 RX_Status = 0;
SMART_CLEO 0:49114a9f05a6 103 switch(RX_BUF.MODE)
SMART_CLEO 0:49114a9f05a6 104 {
SMART_CLEO 0:49114a9f05a6 105 case 0x04:
SMART_CLEO 0:49114a9f05a6 106 Timer_setting(RX_BUF.CMD, RX_BUF.DATA[0]);
SMART_CLEO 0:49114a9f05a6 107 break;
SMART_CLEO 0:49114a9f05a6 108 }
SMART_CLEO 0:49114a9f05a6 109 }
SMART_CLEO 0:49114a9f05a6 110 break;
SMART_CLEO 0:49114a9f05a6 111 }
SMART_CLEO 0:49114a9f05a6 112 }*/
SMART_CLEO 0:49114a9f05a6 113
SMART_CLEO 0:49114a9f05a6 114 /*void Timer_setting(uint8_t cmd, uint8_t value)
SMART_CLEO 0:49114a9f05a6 115 {
SMART_CLEO 0:49114a9f05a6 116 double Time_value = 0;
SMART_CLEO 0:49114a9f05a6 117 switch(cmd)
SMART_CLEO 0:49114a9f05a6 118 {
SMART_CLEO 0:49114a9f05a6 119 case 0x01:
SMART_CLEO 0:49114a9f05a6 120 Time_value = 30;
SMART_CLEO 0:49114a9f05a6 121 break;
SMART_CLEO 0:49114a9f05a6 122 case 0x02:
SMART_CLEO 0:49114a9f05a6 123 Time_value = 60;
SMART_CLEO 0:49114a9f05a6 124 break;
SMART_CLEO 0:49114a9f05a6 125 case 0x03:
SMART_CLEO 0:49114a9f05a6 126 Time_value = 120;
SMART_CLEO 0:49114a9f05a6 127 break;
SMART_CLEO 0:49114a9f05a6 128 case 0x04:
SMART_CLEO 0:49114a9f05a6 129 Time_value = 300;
SMART_CLEO 0:49114a9f05a6 130 break;
SMART_CLEO 0:49114a9f05a6 131 case 0x05:
SMART_CLEO 0:49114a9f05a6 132 Time_value = 600;
SMART_CLEO 0:49114a9f05a6 133 break;
SMART_CLEO 0:49114a9f05a6 134 case 0x06:
SMART_CLEO 0:49114a9f05a6 135 Time_value = value;
SMART_CLEO 0:49114a9f05a6 136 Time_value = 1.0/Time_value;
SMART_CLEO 0:49114a9f05a6 137 break;
SMART_CLEO 0:49114a9f05a6 138 }
SMART_CLEO 0:49114a9f05a6 139 Sensor_Timer.attach(&Sensor_Read, Time_value);
SMART_CLEO 0:49114a9f05a6 140 }*/
SMART_CLEO 0:49114a9f05a6 141
SMART_CLEO 0:49114a9f05a6 142 void Sensor_Read_Data(uint8_t data)
SMART_CLEO 0:49114a9f05a6 143 {
SMART_CLEO 0:49114a9f05a6 144 Buffer[0] = 0x76;
SMART_CLEO 0:49114a9f05a6 145 Buffer[1] = 0x01;
SMART_CLEO 0:49114a9f05a6 146 Buffer[2] = 0x06;
SMART_CLEO 0:49114a9f05a6 147 Buffer[3] = 0x01;
SMART_CLEO 0:49114a9f05a6 148 Buffer[4] = data;
SMART_CLEO 0:49114a9f05a6 149 Buffer[5] = 0x3E;
SMART_CLEO 0:49114a9f05a6 150 for(int i=0; i<6; i++)
SMART_CLEO 0:49114a9f05a6 151 SerialUART.putc(Buffer[i]);
SMART_CLEO 0:49114a9f05a6 152 }
SMART_CLEO 0:49114a9f05a6 153 /*
SMART_CLEO 0:49114a9f05a6 154 void Sensor_Read(void)
SMART_CLEO 0:49114a9f05a6 155 {
SMART_CLEO 0:49114a9f05a6 156 Buffer[0] = 0x76;
SMART_CLEO 0:49114a9f05a6 157 Buffer[1] = 0x01;
SMART_CLEO 0:49114a9f05a6 158 Buffer[2] = 0x05;
SMART_CLEO 0:49114a9f05a6 159 Buffer[3] = 0x01;
SMART_CLEO 0:49114a9f05a6 160 Buffer[4] = IR_Detect;
SMART_CLEO 0:49114a9f05a6 161 Buffer[5] = 0x3E;
SMART_CLEO 0:49114a9f05a6 162 for(int i=0; i<6; i++)
SMART_CLEO 0:49114a9f05a6 163 SerialUART.putc(Buffer[i]);
SMART_CLEO 0:49114a9f05a6 164 }
SMART_CLEO 0:49114a9f05a6 165 */