본문 바로가기

전체 글215

아두이노 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대를 이용한 정수와 실수 전송-#4 이제 실수를 해보자. float 하나만 할것이다. double은 충분히 응용할것으로 판단된다. 이전 코딩에서 한개만 수정하면 된다. 한가지 주의 할것은 소프트웨어 시리얼이기 떄문에 보레이트를 너무 높이지 말기 바란다. .... 2020. 8. 4.
아두이노 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.
Make IT! Arduino -#06 코딩하기 이번것도 조립에 비해 코딩은 별다른 어려움은 없다. 지금까지 잘못된 초음파 센서 코딩도 정확하게 되어 있다. 그리고 5번 코딩과 거의 유사 하기 때문에 약간만 수정하면 되기 때문에 큰 어려움은 없다. 약간의 설명을 하면 전진 하다가 초음파 센서로 앞에 장애물이 발생하면 후진하고 위회전 하고 전진하는 개념이다. 코딩을 보면 쉽게 알수 있을것 같다. 이것도 코딩에 대한 오류는 발견하지 못했다. #define RMOTOR1 9 #define RMOTOR2 10 #define LMOTOR1 5 #define LMOTOR2 6 #define speed HIGH #define epin 3 //초음파 에코 #define tpin 2 //초음파 트리거 void setup() { pinMode(RMOTOR1 , OUTP.. 2020. 8. 4.
코딩 이야기 #2 사실 나는 알고리즘을 만들지 않는다. 그러고 보면 코딩도 하지 않는다. 예전에 연구원에 있을때, 수학적인 모델이나 알고리즘만 제공해 주면 나는 단지 코딩만 했다. 쉽게 말해서 내가 만든 알고리즘은 아니다. 개발자가 아무리 뛰어 나더라도 그 전공자 만큼은 아니다. 예를 들어 핵분열 모델을 코딩한다고 하자. 핵분열에 대한 물리적인 모델이나 그 이론에 대해서 공부해야 한다. MIT나 하버더, 서울대 에서 수십년 그곳에서 공부한 박사님들하고 나는 이론적인 배경 자체가 다르다. 아무리 열심히 한다고 해도 내가 그 알고리즘을 이해 조차 하기 힘들다. 다음은 코딩도 하지 않는다는 말의 이유다. 나도 20때는 열심히 코딩을 했다. 그리고 내가 만든코딩과 유명한 사람과 비교도 했다. 내가 열심히 열심히 하면 할 수록 느.. 2020. 8. 3.
Make IT! Arduino -#05 코딩하기 저번에 조이스틱에 대한 코딩을 했기 때문에 모터에 대한 코딩을 하면 된다. 조이스틱의 기을기에 대한 속도 변화가 없는 코딩이기 때문에, 모턴 쉴드, DC 모터를 다루어본 경험이 있다면 그다지 어렵지 않을것으로 보인다. 그리고 자동차의 전진,후진은 코딩에 의해 결정될수도 있고, 모터에 연결한 선의 연결방법에 의해서 결정될수도 있기 떄문에 생각을 해서 잘 연결 할 수도 있고, 다 하고 코딩으로 조절해도 될것 같다. #define RMOTOR1 9 #define RMOTOR2 10 #define LMOTOR1 5 #define LMOTOR2 6 #define speed 250 void setup() { pinMode(RMOTOR1 , OUTPUT); pinMode(RMOTOR2 , OUTPUT); pinMod.. 2020. 8. 2.
코딩 이야기 #1 코딩을 할때 무엇 부터 하시나요 ? 변수선언 ? 함수선언 ? 인클루드 ? 사람마다 다양하겠죠. 물론 다양합니다. 구글이나 IBM이나 자기 회사것이 표준이고 좋다고 우기는 상황에서, 스스로가 방법을 정의하고 본인 나름데로 원칙을 정하는게 정답일수도 있죠. 저같은 경우 가끔 코딩을 배우로 오는 사람에게 4가지만 가르칩니다. 그리고 다른것은 처다보지도 말라고 하죠. 예를 들어 swich 같은게 대표적입니다. 물론 while도 사용하지 말라고 하고요. if나 for로 충분히 대체 가능하기 때문에 처음하는 사람들이 굳이 공부 할 필요가 없다고 이야기 하죠. ... 어째던 저는 변수, 함수, 조건, 반복 이렇게 4가지만 가르칩니다. 이것만 이해해도 충분히 코딩이 가능하다고 이야기 합니다. 그 언어가 C가 되던, 파.. 2020. 7. 22.