데이터가 문자열 형태로 전송되므로, STM32에서 문자열 처리를 추가해야 합니다.
char buffer[16]; // 데이터를 저장할 버퍼 int index = 0; void USART_Receive_String() { while (1) { unsigned char received = getch(); // 1바이트 수신 if (received == '\n') { // 줄바꿈 문자가 오면 종료 buffer[index] = '\0'; // 문자열 종료 break; } buffer[index++] = received; // 버퍼에 데이터 저장 } } void process_received_data() { USART_Receive_String(); // Arduino에서 전송한 데이터 수신 float ugm3 = atof(buffer); // 문자열을 float로 변환 // 수신한 데이터를 처리 (예: LCD에 표시) lcdGotoXY(0, 0); lcdPrint("PM2.5: "); print_data("", (u16)(ugm3 * 10)); // float 값을 정수로 변환하여 표시 }
위 process_received_data()를 메인 루프에서 호출합니다.
while (1) { process_received_data(); delay_ms(1000); // 1초 대기 }
데이터가 문자열 형태로 전송되므로, STM32에서 문자열 처리를 추가해야 합니다.
char buffer[16]; // 데이터를 저장할 버퍼 int index = 0; void USART_Receive_String() { while (1) { unsigned char received = getch(); // 1바이트 수신 if (received == '\n') { // 줄바꿈 문자가 오면 종료 buffer[index] = '\0'; // 문자열 종료 break; } buffer[index++] = received; // 버퍼에 데이터 저장 } } void process_received_data() { USART_Receive_String(); // Arduino에서 전송한 데이터 수신 float ugm3 = atof(buffer); // 문자열을 float로 변환 // 수신한 데이터를 처리 (예: LCD에 표시) lcdGotoXY(0, 0); lcdPrint("PM2.5: "); print_data("", (u16)(ugm3 * 10)); // float 값을 정수로 변환하여 표시 }
위 process_received_data()를 메인 루프에서 호출합니다.
while (1) { process_received_data(); delay_ms(1000); // 1초 대기 }