Raspberry Pi Pico 확장 테스트 보드를 이용하면 20핀 표준 핀맵에서 TFT LCD보드 제어를 할 수 있다.
확장보드의 표준 핀맵은 아래와 같이 구성 하였다.
소스코드는 https://github.com/adafruit/TFTLCD-Library 를 참고 수정해서 사용 했다. 초기화 부분과 데이터 출력 부분은 아래와 같이 수정 했다.
#define PORTA (sio_hw->gpio_out)
#define GPIO0 0
#define GPIO1 1
#define LCD_XLINE_SIZE 240
#define LCD_YLINE_SIZE 400
#define LCD_LAT_BIT 26
#define LCD_LAT_PORT
#define LCD_LAT_ON() sbi(LCD_LAT_PORT, LCD_LAT_BIT)
#define LCD_LAT_OFF() cbi(LCD_LAT_PORT, LCD_LAT_BIT)
#define LCD_DATA_LATCH() LCD_LAT_ON();LCD_LAT_OFF();
#define LCD_EN_BIT 20
#define LCD_EN_PORT
#define LCD_ENABLE() cbi(LCD_EN_PORT, LCD_EN_BIT);
#define LCD_DISABLE() sbi(LCD_EN_PORT, LCD_EN_BIT)
#define LCD_RST_BIT //BIT8
#define LCD_RST_PORT //PORTB
#define LCD_RST_ON() //Sbi(LCD_RST_PORT, LCD_RST_BIT)
#define LCD_RST_OFF() //Cbi(LCD_RST_PORT, LCD_RST_BIT)
#define LCD_RS_BIT 6
#define LCD_RS_PORT
#define LCD_RS_OFF() cbi(LCD_RS_PORT, LCD_RS_BIT)
#define LCD_RS_ON() sbi(LCD_RS_PORT, LCD_RS_BIT)
#define LCD_WR_BIT 7
#define LCD_WR_PORT
#define LCD_WR_OFF() cbi(LCD_WR_PORT, LCD_WR_BIT);lcd_delay()
#define LCD_WR_ON() sbi(LCD_WR_PORT, LCD_WR_BIT);lcd_delay()
#define _LCD_DAT_OUT(Data) PORTA = (PORTA&0xFFFF00FF) | (Data);\
LCD_DATA_LATCH();\
PORTA = (PORTA&0xFFFF00FF) | ((Data&0xFF)<<8);
A1(IO27) 포트의 ADC값을 TFT LCD의 그래프로 값을 출력 하는 예제
int status = 0;
unsigned int gGraphData[2] = {0,GRAPH_RGN_Y/2};
unsigned int gGraphX = 0;
void setup(void) {
init_lcd();
uint16_t identifier = tft.readID();
tft.begin(identifier);
DisplayGraphWindow();
Serial.begin(115200);
delay(1000);
}
void loop() {
int val = analogRead(A1);
gGraphData[0] = map(val, 0, 1023, 0, GRAPH_RGN_Y);
Serial.print(val);
Serial.print(", ");
Serial.print(gGraphData[0]);
Serial.println();
if(gGraphX>GRAPH_RGN_X)
{
gGraphX=0;
DisplayGraphWindow();
}
SetGraph1(gGraphX++, gGraphData[0], gGraphData[1]);
SetFndValue1(val);
delay(10);
}
반응형