위에 보이는 그림은 ATMEL에서 만든 ATAVRSBIN1이라는 센서 모듈이다. 그림에 표시되어 있는것처럼 AK8975라는 Compass와 BMA150이라는 Accelerometer와 ITG3200이라는 Gyroscope를 포함하는 세개의 센서가 실장되어 있다. 각각의 센서들은 모두 동일한 TWI버스에 연결되어 있기 때문에 MCU는 하나의 TWI를 이용하여 각각의 센서들과 통신할 수 있다. 일반적으로 임베디드 시스템은 다른 시스템과 연동없이 자체적으로 동작되는 경우도 있지만, 컴퓨터를 비롯해서 다른 임베디드 시스템과 연동하여 동작되는 경우도 많다. 특히, 최근들어 IoT라는 개념으로 인하여 다른 시스템과의 상호 연동되는 경우가 점점 더 기본 기능처럼 되어 가고 있는 추세다. 다른 시스템과 데이터를 주고 ..
이번글에서는 두점을 잇는 선을 그리는 방법을 구현해 보도록 하겠다.인터넷에 찾아보면 다양한 선 그리는 알고리듬을 찾아 볼 수 있는데, 비교적 널리 알려진 Bresenham의 알고리듬을 적용하여 선을 그려보도록 하겠다. void lcd_draw_line(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t color) { int dx = abs(x1-x0), sx = x0 -dx) { err -= dy; x0 += sx; } if (e2 < dy) { err += dx; y0 += sy; } } } 위의 코드에 대해서는 인터넷에 잘 설명되어 있으므로 굳이 여기에서는 따로 설명하지는 않겠다. 단지, 이 코드를 이용하여 간단한 예제 프로그램을 만들어서 제대로 선이..
이번에는 LCD12864의 특정 위치에 하나의 점을 표시하는 방법에 대해서 알아보겠다. 바로 앞에서 설명한 LCD12864 드라이버 코드 - Graphic mode을 읽어 보면 그래픽 모드일때 원래는 32 X 256 개의 픽셀이 있지만 세로 방향으로 한 가운데를 잘라, 오른쪽 반을 왼쪽 반의 아래부분에 이어 붙인것이라고 보면 된다고 했다. 결국 64 X 128개의 픽셀이 있는것처럼 보이는 것이다.이 중에서 특정 위치의 픽셀에 점을 찍어 보는 방법을 알아보도록 하겠다. void lcd_draw_dot(uint8_t x, uint8_t y) { uint16_t data; send_cmd(GDRAM_ADDR | (y & 0x1F)); send_cmd(GDRAM_ADDR | (y & 0x20 ? 8 : 0) |..