본문 바로가기

RaspberryPi/RaspberryPi PicoW

Raspberry Pi PicoW - TFT LCD 출력 테스트(그래프 출력)

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);
}

 

반응형