아두이노/유선통신6 아두이노 2대를 이용한 정수와 실수 전송-#7(최종) 사실 지금까지 할 것은 다 했다. 오늘 소스코드는 생각보다 아주 간단하게 변경되었다. 지금까지 교육을 목적으로 길게 표현했지만, 결국 한 문장으로 압축된다. 보내는 것도 한문자 받는 것도 한 문장이다. 결국 데이터를 주고받고는 한문 장로 끝나는 것이다. 이것이 시리얼통신이던 블루투스이던 와이파이던 다른 무선 통인이던 모두 동일하다. 결국 한 문장으로 데이터를 주고받는다. 사실 소프트웨어 하는 사람은 주고받고는 관심 없다. 단지 주기만 주면 되고 받기만 받으면 된다. 실제 주고받는 것은 하드웨어 블루투스, 와이파이, 로라 등등 다른 하드웨어가 하는 일이지, 코딩 소프트웨어가 하는 일은 아니다. 단지 주의할 것은 정수가 아두이노에서는 2바이트인데, 윈도에서는 4바이트다. 사실 본인은 귀찮아서 정수도 실수에 .. 2020. 8. 7. 아두이노 2대를 이용한 정수와 실수 전송-#6 마지막으로 응용이다. 전체 코드를 구현해서 잘 작동하는지 확인이다. 사실 안될 것이 없는 코드라서 잘된다. 그리고 변수를 추가하거나 빼더라도 전체 코드의 수정은 없다. 단지 구조체만 변경될 뿐이다. 보내는쪽 #include typedef struct _Info { int heartrate; int servo_degree; double temp1; double temp2; char str[25]; _Info() { } }Info; SoftwareSerial sSerial= SoftwareSerial(2, 3); //HardwareSerial& sSerial = Serial2; Info a; volatile unsigned long previousMillis; void setup() { Serial.begi.. 2020. 8. 5. 아두이노 2대를 이용한 정수와 실수 전송-#5 오늘은 우리가 전송하고자 하는 구조체를 만들어 볼 것이다. 그냥 임의로 아무것이나 넣자. 대충 정수형 심박수 한 개 200 정도 넣자. 한 개만 넣으면 뭐 하니 서보모터도 제어해보자 정수형 각도 80 정도 넣자. 온도도 대충 25도 하나 30도 하나 두 개 넣자. 그리고 문장도 하나 넣자 대충 25자 정도면 대충 다 될 듯하다. 특별히 어려울 것은 없다. 그냥 만들면 된다 차례 데로 변수만 선언하면 된다. typedef struct _Info { int heartrate; int servo_degree; double temp1; double temp2; char str[25]; _Info() { } }Info; 2020. 8. 5. 아두이노 2대를 이용한 정수와 실수 전송-#3 자 그러면 이제 제데로 받기 위해서 코딩을 약간 수정해 보자. 보내는쪽은 두고 받는쪽만 수정하면 된다. 2바이트로 합치면 된다. 그렇게 어렵지 않기 떄문에 소스코드만 봐도 이해가 갈듯 한다. 그냥 1바이트씩 2바이트 모으면 끝이다. 보내는쪽 #include SoftwareSerial sSerial= SoftwareSerial(2, 3); //HardwareSerial& sSerial = Serial2; volatile unsigned long previousMillis; void setup() { Serial.begin(9600); sSerial.begin(9600); previousMillis = millis(); Serial.println(sizeof(int)); Serial.println(sizeo.. 2020. 8. 4. 아두이노 2대를 이용한 정수와 실수 전송-#2 자 이제 그러면 정수를 전송해 보자. 먼저 아래 코드를 보는게 좋을것이다. 정수나 실수나 모든것의 전송은 동일하다. 받는쪽에서만 잘 받으면 된다. 보내는쪽과 받는쪽에서 받는쪽이 중요하다. 그런데 실제로 테스트해보면 약간의 문제점이 있다. 사실 전송이 되지 않는것이 아니다. 받는것이 잘못 받고 있기 떄문이다. Serial.Read()의 리턴 타입은 정수가 아니다. char다 사실 이부분도 약간은 애매하다. char라고 하기에는 정확한 표현은 아니다. 1바이트라는것이 정확한 표현이다. 그리면 아두이노 공식 홈페이지를 살펴 보자. https://www.arduino.cc/reference/en/language/functions/communication/serial/read/ Returns The first b.. 2020. 8. 4. 아두이노 2대를 이용한 정수와 실수 전송-#1 사실 본인도 좀 애매하다고 생각하고는 있었지만, 실제로 해보지는 않아서 약간 의심만 하고 있는 부분이다. 그래서 실습을 했다. 본인이 생각하는것이 맞는기 했지만, 이번 기회에 확인하는 기회를 가지는게 좋을것 같다. 일단 아두이노 우노 두개를 소프트웨어 시리얼로 연결했다. 당연하게 지만 블루투스, 하드웨어 시리얼도 소스차원에서는 모두 동일 하기 때문에 다른것도 똑같이 하면 될것 같다. 일단 먼저 연결과 정수, 실수의 크기 부터 알아 보자. 일반적으로 원도우에서 정수는 4바이트 이지만 아두이노에서 2바이트다. 아두이노가 2바이트, 원도우가 4바이트라고 고정해서 이야기 하면 안된다. 이것은 컴파일러, OS, CPU에 의해서 결정되기 때문에 꼭 확인해 봐야 한다. 무조건이라는것은 없다. 아두이노 우노2대를 시리.. 2020. 8. 4. 이전 1 다음