han back
/
CLEO_UART_IR
SMART CLEO Uart IR
main.cpp
- Committer:
- SMART_CLEO
- Date:
- 2017-09-28
- Revision:
- 1:f8749f23bfda
- Parent:
- 0:867daeb1e2b2
File content as of revision 1:f8749f23bfda:
#include "mbed.h" struct UART_buf { uint8_t STA; uint8_t MODE; uint8_t CMD; uint8_t LEN; uint8_t DATA[32]; uint8_t END; }; PinName pin_IR_D = PC_12; Serial SerialUART(PA_2, PA_3); uint8_t Buffer[37]; uint8_t ir_flag = 1; //UART_buf RX_BUF; //InterruptIn IR_Detect(pin_IR_D); DigitalIn IR_Detect(pin_IR_D); //Ticker Sensor_Timer; //void SerialUARTRX_ISR(void); //void Timer_setting(uint8_t cmd, uint8_t value); //void Sensor_Read(void); void Sensor_Read_F(void); void Sensor_Read_R(void); int main() { SerialUART.baud(115200); //SerialUART.attach(&SerialUARTRX_ISR); //Timer_setting(0x06, 2); //IR_Detect.rise(&Sensor_Read_R); //IR_Detect.fall(&Sensor_Read_F); while(1) { if(IR_Detect && ir_flag) { ir_flag = 0; Buffer[0] = 0x76; Buffer[1] = 0x01; Buffer[2] = 0x03; Buffer[3] = 0x01; Buffer[4] = 1; Buffer[5] = 0x3E; for(int i=0; i<6; i++) SerialUART.putc(Buffer[i]); wait(1); } else if((IR_Detect == 0) && (ir_flag == 0)) { ir_flag = 1; Buffer[0] = 0x76; Buffer[1] = 0x01; Buffer[2] = 0x03; Buffer[3] = 0x01; Buffer[4] = 0; Buffer[5] = 0x3E; for(int i=0; i<6; i++) SerialUART.putc(Buffer[i]); wait(1); } } } /*void SerialUARTRX_ISR(void) { static uint8_t RX_count = 0, RX_Len = 32, RX_Status = 0; uint8_t rx_da = SerialUART.getc(); switch(RX_Status) { case 0: if(rx_da == 0x76) { RX_BUF.STA = rx_da; RX_Status++; } break; case 1: RX_BUF.MODE = rx_da; RX_Status++; break; case 2: RX_BUF.CMD = rx_da; RX_Status++; break; case 3: RX_BUF.LEN = rx_da; RX_Len = RX_BUF.LEN; RX_Status++; if(RX_Len == 0) RX_Status++; break; case 4: RX_BUF.DATA[RX_count] = rx_da; RX_count++; if(RX_count == RX_Len) { RX_Status++; RX_count = 0; RX_Len = 32; } break; case 5: if(rx_da == 0x3E) { RX_BUF.END = rx_da; RX_Status = 0; switch(RX_BUF.MODE) { case 0x04: Timer_setting(RX_BUF.CMD, RX_BUF.DATA[0]); break; } } break; } }*/ /*void Timer_setting(uint8_t cmd, uint8_t value) { double Time_value = 0; switch(cmd) { case 0x01: Time_value = 30; break; case 0x02: Time_value = 60; break; case 0x03: Time_value = 120; break; case 0x04: Time_value = 300; break; case 0x05: Time_value = 600; break; case 0x06: Time_value = value; Time_value = 1.0/Time_value; break; } Sensor_Timer.attach(&Sensor_Read, Time_value); }*/ //rise void Sensor_Read_R(void) { Buffer[0] = 0x76; Buffer[1] = 0x01; Buffer[2] = 0x03; Buffer[3] = 0x01; Buffer[4] = 1; Buffer[5] = 0x3E; for(int i=0; i<6; i++) SerialUART.putc(Buffer[i]); } //fall void Sensor_Read_F(void) { Buffer[0] = 0x76; Buffer[1] = 0x01; Buffer[2] = 0x03; Buffer[3] = 0x01; Buffer[4] = 0; Buffer[5] = 0x3E; for(int i=0; i<6; i++) SerialUART.putc(Buffer[i]); } /* void Sensor_Read(void) { Buffer[0] = 0x76; Buffer[1] = 0x01; Buffer[2] = 0x05; Buffer[3] = 0x01; Buffer[4] = IR_Detect; Buffer[5] = 0x3E; for(int i=0; i<6; i++) SerialUART.putc(Buffer[i]); } */