Link : http://cafe.naver.com/carroty.cafe


전체 구조는 위와 같습니다.

지자기 센서의 I2C 출력값을 ATmega32에서 받아서, PC로 시리얼 통식 방식으로 쏩니다.

이 값을 받아서 PC 어플리케이션이 처리합니다.

PC 어플리케이션은 C#, VB, C++ 원하시는 툴로 짜면 됩니다. 당근이는 C#으로 짰음.

아래 예제가 있음돠.

 

 

이거 예제 짤때 쪼까 고생했는데, 고생한 목록은 다음과 같습니다.

1. 시계 모양으로 땡구라미를 그리는게 좀 힘들었습니다. 위의 조그만 동그라미들은 이미지가 아니라 좌표 계산하여 그린겁니다.

  고로, 프레임을 확대 축소해도 깨지지 않아요. 동구라미 좌표 그릴때 등방성 좌표계를 이용한다는데.. 거 뭔말인지..

2. 트랙바로 움직이게 했는데, 트랙바보다는 vertical Slider가 더 이쁜거 같더군요. (뭐야 이건 어려운게 아니잖아!)

3. 설명드리기가 곤란한데, 가장 복잡했던점이..

  당근이가 만든 Compass 클래스에서 OnPaint 메소드를 호출했더니, 자꾸 에러가 나더군요.

  UsrControl을 상속받아야 했구요.

  처음에는 패널의 Graphics 객체를 Compass에서 받아와서 처리했는데, 보통 그렇게 하지 않더군요.

  걍 Compass의 Graphics에서 createGraphics를 한 이후에 Compass를 생성할때 Graphics를 넘겨주는 방식..

  조금 버벅 댔음

4. 더블 버퍼링.. 그래도 조금 어려울줄 알았는데, 한줄이면 되더군요. ㅜㅠ

 

아래는 소스 짜는 중 이것 저것 캡쳐해본검돠.

초기 버젼 : 아직 시리얼을 못 붙였음

 

개선중 : 패널 제거작업 (크하하.. 패널 뒤에 있어서 안그려지는 알고 거의 30분 삽질 ㅜㅠ)

 

최종 버젼

 

예제 소스 설명

1. 초기 프로토 타입 : 클래스 설계 개판

2. 어쨌든 움직이게 했다.

3. 더블 버퍼링

4. 시리얼 입력 받음 : 옆의 슬라이더와 동시에 받음

 

현재 작업 내역

컴 마스터로 당근보드의 스위치를 누르면 이 값이 PC의 C# 프로그램으로 갑니다.

그라무네, 나침반이 90, 180, 270, 360도 이렇게 움직입니다. 버튼이 뭐 4개밖에 없어서 걍 편하게 짰음

서서히 정회전 역회전 할수도 있지만, 나중에 하기로 하고 오늘은 여기까지 !



Posted by eoseontaek