Post

XMC1100에서 LCD 사용하기

생각보다 별로 다른것은 없었다.

아두이노 호환을 강조했던 것에 걸맞게 그냥 I2C 16x2 디스플레이가 있으면 SDA SCL 라인만 맞추어 연결하면 된다. 이번 프로젝트에서는 3개 포트를 가지고 있는 MYIoT Shield에 마그네틱, 압력 센서와 함께 사용하였기에 각 포트당 하나씩 사용할 수 있었다.

노브 구현이 목표였기에 단순히 온도/기압을 한 페이지에 쓰기는 애매해서 온도/ 기압 페이지를 나눠 첫줄엔 숫자, 둘째줄에는 그래프를 표시해서 넘길 수 있도록 구현했다.

그래프는 뭔가 라이브러리에서 지원하는 그런 무언가가 있을 것이라 생각하고 막연히 시작했는데 마땅히 없는듯 했다. 괜히 또 아두이노 전용 라이브러리 썼다가 XMC와 호환안되고 할 것 같아서 그냥 선으로 표현되는 그래프를 기대했으나 목표를 많이 낮추어 막대그래프 형태로 하도록 하고, 한칸이 5x8 픽셀이니 0 ,1, 2, … 8 총 9개 단계를 개별로 픽셀을 일일히 찍어 지정해주는 방식으로 했다. 더 효율적인게 있으면 좋겠지만 대충 해본 결과 뭔가 다 깨지는 문제가 있었다.

https://lastminuteengineers.com/arduino-1602-character-lcd-tutorial/

이 사이트에 픽셀 찍어볼 수 있는 그게 있어서 좋더라

1
2
3
4
5
6
7
8
9
10
11
byte graphChars[9][8] = {
    {0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b11111},
    {0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b11111, 0b11111},
    {0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b11111, 0b11111, 0b11111},
    {0b00000, 0b00000, 0b00000, 0b00000, 0b11111, 0b11111, 0b11111, 0b11111},
    {0b00000, 0b00000, 0b00000, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111},
    {0b00000, 0b00000, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111},
    {0b00000, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111},
    {0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111},
    {0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000} // 0,1,2,3,....8 (X) -> 1,2,3....8,0 (O)
};

그래서 나온 결과는 생각보다는 쓸만했다

하지만 그래봤자 단계가 9개 밖에 없었기에 모든 온도영역을 표시하게에는 무리가 있었고, 우선 20~30도를 지정했다. 압력은 잘 몰라서 90000, 1100000으로 지정했고.

압력은 별로 잘 모르겠고 온도는 생각보다 잘 작동했다. 분명 영상을 찍었던것 같은데…

Image Image Image

[3D 모델]https://www.printables.com/model/1139567-xmc1100-pressuretemp-monitor
[코드]https://github.com/reason-rock/Infineon_XMC_PSoC

끝.

This post is licensed under CC BY 4.0 by the author.