Arduino Uno가 시리얼을 통해 Arduino Mega와 통신하려면 데이터 전송 속도를 향상시키고 싶습니다.시리얼을 통해 Arduino에서 Arduino로 의사 소통을 개선하기 위해 노력하고 있습니다.
이 Arduino Uno는 (이미 테스트 한) analogRead()
을 사용하여 브리지 회로를 통해 스트레인 게이지에서 정보를 추출하고 있습니다. 그런 다음 Serial을 통해이 정보를 Mega로 보내면 USB 케이블과 직렬 통신을 사용하여 컴퓨터로 보냅니다.
이 메가 보드는 Uno가 회전축에 놓이고 메가와의 통신이 원형 광 커플러를 통해 이루어지기 때문에 필요합니다.이 광 커플러는 테스트를 거쳤으며 작동하고 있습니다.
나는 이걸로 현재 회전하는 Uno에서 190Hz의 데이터를 읽습니다. 대부분의 문제는 코드에 delay(5);
이 있기 때문에 발생하지만 데이터를 누락 된 문자가 도착하기까지 3ms로 낮추는 것으로 충분합니다.
우노 코드 :
void setup() {
Serial.begin(19200);
}
void loop() {
Serial.println(analogRead(A0));
delay(5);
}
메가 코드 : 그것은 analogRead()
에서 유래 이후
char t;
void setup() {
Serial.begin(9600);
Serial1.begin(19200);
}
void loop() {
if (Serial1.available()>0)
{
t = Serial1.read();
Serial.print(t);
}
}
데이터가 전송되는 그래서 어쩌면 내가 인코딩 할 수있는, 항상 0에서 1023까지의 정수 더 낫지 만, 어떻게해야하는지, 아니면 더 큰 문제를 해결할 지 모르겠다. delay(5);
고맙습니다.
정확히 무엇이 문제입니까? 먼저 데이터 전송 속도를 향상 시키겠다는 말을 시작하지만 나중에 데이터를 삭제하는 것으로 언급합니다. 또한 190Hz는 어디로 들어 옵니까? 코드의 유일한 전송 속도는 9600 및 19200입니다. –
그래서 문제는 다음과 같습니다.이 시스템에서 데이터 수집 속도를 향상시켜야합니다. 나는 현재 190Hz의 속도로 센서로부터 정보를 얻고있다. 데이터는 보통 4 문자의 문자열로 보내집니다 : 실제 숫자는 3이고 println();은 \ n이고이 데이터는 초 190 회 얻습니다. 제가 언급 한 데이터를 떨어 뜨리는 것은 지연을 5ms로 유지하면 발생하지 않지만, 이해할 수있는 한, 지연으로 인해 초당 200 개 이상의 데이터 샘플을 얻을 수는 없습니다. –