Arduino에서 측정 한 온도와 습도를 표시해야하는 C++ Builder로 응용 프로그램을 작성하려고합니다. Arduino와 내 응용 프로그램은 TComPort를 통해 연결됩니다. 나는 115200시리얼 통신 Arduino C++ Builder
VCL 코드의 전송 속도를 사용하고 있습니다 :
AnsiString temp, hum;
ComPort1->ReadStr(temp, 5);
RichEdit1->Text = temp;
ComPort1->ReadStr(hum, 5);
RichEdit3->Text = hum;
아두 이노 코드 :
DHT dht(10, DHT11);
void setup(void)
{
dht.begin();
Serial.begin(115200);
}
void loop(void)
{
// Measure the humidity & temperature
float h = dht.readHumidity();
float t = dht.readTemperature();
// Transform to String
String temp = String(t);
String hum = String(h);
delay(10);
Serial.print(temp);
Serial.print(hum);
delay(5000);
}
내 응용 프로그램 (C++ 빌더와 VCL)을 시작하고 아두 이노 매 5에 연결
초, 값은 새 값으로 새로 고쳐 져야합니다. 대부분의 경우 2 개의 값이 정확하고 예를 들어 표시되어야하는 것처럼 표시됩니다. 온도 : 24:00 습도 : 55.00 그러나 어떤 이유로 든 때때로 다음과 같이 표시됩니다. 온도 : .0051 Humditiy : .00또는 다른 이상한 값입니다. 5 초 후 값이 다시 정확합니다. 이것은 20-30 초마다 1 번 발생하고 이것이 왜 계속 일어나는 지 알지 못합니다.
보인다. 이상한 것을 보았을 때, 그것들 바로 앞이나 뒤의 것들입니까? 또는 엉망인 것들이 짝을 이루는 것처럼 보입니까? –
그리고 왜 인쇄하기 전에 온도와 습도 값을 String으로 변환합니까? Print 클래스는 모두 플로트를 처리 할 수 있다는 것을 알고 있습니다. String 클래스는 심각한 마이크로 컨트롤러 프로젝트에서 사용되어서는 안되는 메모리 조각 모음 및 메모리 조각 모음입니다. –
안녕하십니까, 고마워요. 고마워요. 고마워요. 고마워................... 문자열 클래스와 함께 알았어. :) 나는 그 둘을 바꿀 것입니다. 일반적으로 첫 번째 것은 올바른 값이고, 쌍의 값은 너무 이상해져서, 다음은 좋아질 것입니다. 그 사이에 그들은 이상합니다. 거의 2 개의 이상한 것이 연속적으로 있었다. – kevin