M5StickC로 문자열 스크롤 표시
9149 단어 M5StickC
개요
M5StickC의 표시 영역이 작고 괴롭기 때문에, 가로 스크롤 표시시켜 보았습니다.
Arduino IDE를 사용했습니다.
아래 그림과 같이 "Hellooo Wooorld!"라는 문자열을 오른쪽 끝에서 왼쪽 끝으로 가로 스크롤했습니다.
그림 : 스크롤의 모습
환경 구축
여기 Qiita 기사 대로 갔습니다. (간단!)
Arduino 스케치
Arduino의 스케치는 아래에 올린 "M5StickMoveText.ino"의 거리입니다.
스케치 중에서는 아래의 "그림: 스크롤 영역 지정"과 같이 스크롤하는 영역(Sprite의 영역)의 파라미터를 define 정의하고 있습니다.
그 외의 스크롤에 관한 파라미터도 define 정의하고 있으므로, 시험이 되고 싶은 분은 거기를 변경해 주실 수 있으면 좋을까 생각합니다.
그림 : 스크롤 영역 지정
M5StickMoveText.ino#include <M5StickC.h>
TFT_eSprite scrollText = TFT_eSprite(&M5.Lcd); // Sprite object
int tcount;
int dispLength;
int scrollWidth;
int startOffset;
#define M5STICK_TFT_W 160
#define M5STICK_TFT_H 80
#define TFT_BG_COLOR TFT_BLACK
#define TEXT_SPRITE_H M5STICK_TFT_H
#define TEXT_SPRITE_W M5STICK_TFT_W*4
#define TEXT_SCROLL_H M5STICK_TFT_H
#define TEXT_SCROLL_W M5STICK_TFT_W
#define TEXT_SCROLL_PIXEL 2
#define TFT_TEXT_POSI_X 30 // vertical position
#define TFT_TEXT_POSI_Y 0 // horizontal position
#define TEXT_SPRITE_POSI_X 0 // vertical position
#define TEXT_SPRITE_POSI_Y 0 // horizontal position
#define TEXT_FONT_SIZE 4
#define TEXT_SPRITE_COLOR TFT_BLACK
#define SCROLL_INTERVAL_MS 50
void setup() {
M5.begin();
M5.Lcd.setRotation(3);
M5.Lcd.fillScreen(TFT_BG_COLOR);
// Create a sprite for Hello World
scrollText.setColorDepth(8);
scrollText.createSprite(TEXT_SPRITE_W, TEXT_SPRITE_H);
scrollText.fillSprite(TEXT_SPRITE_COLOR);
scrollText.setTextColor(TFT_WHITE); // White text, no background
tcount = 0;
dispLength = 0;
scrollWidth = 0;
startOffset = 0;
}
void loop() {
// Push the sprites onto the TFT at specied coordinates
scrollText.pushSprite(TFT_TEXT_POSI_Y, TFT_TEXT_POSI_X);
if (tcount > 0) {
scrollText.scroll(-TEXT_SCROLL_PIXEL); // scroll text left
tcount--;
}
else {
startOffset = M5STICK_TFT_W; //start position is edge of tft
if (dispLength > 0) {
scrollWidth = dispLength + startOffset;
}
else {
scrollWidth = 0;
}
tcount = scrollWidth / TEXT_SCROLL_PIXEL;
String drawStr = "Hellooo Wooorld!";
dispLength = scrollText.drawString(drawStr, TEXT_SPRITE_POSI_Y + startOffset, TEXT_SPRITE_POSI_X, TEXT_FONT_SIZE);
if (TEXT_SPRITE_W <= dispLength) {
dispLength = TEXT_SPRITE_W; // disp length is too long -> TEXT_SPRITE_W
}
scrollText.setScrollRect(0, 0, dispLength + startOffset, TEXT_SCROLL_H, TEXT_SPRITE_COLOR); // Update ScrollRect
}
delay(SCROLL_INTERVAL_MS); // wait so things do not scroll too fast
}
참고 기사
여기 Qiita 기사 대로 갔습니다. (간단!)
Arduino 스케치
Arduino의 스케치는 아래에 올린 "M5StickMoveText.ino"의 거리입니다.
스케치 중에서는 아래의 "그림: 스크롤 영역 지정"과 같이 스크롤하는 영역(Sprite의 영역)의 파라미터를 define 정의하고 있습니다.
그 외의 스크롤에 관한 파라미터도 define 정의하고 있으므로, 시험이 되고 싶은 분은 거기를 변경해 주실 수 있으면 좋을까 생각합니다.
그림 : 스크롤 영역 지정
M5StickMoveText.ino#include <M5StickC.h>
TFT_eSprite scrollText = TFT_eSprite(&M5.Lcd); // Sprite object
int tcount;
int dispLength;
int scrollWidth;
int startOffset;
#define M5STICK_TFT_W 160
#define M5STICK_TFT_H 80
#define TFT_BG_COLOR TFT_BLACK
#define TEXT_SPRITE_H M5STICK_TFT_H
#define TEXT_SPRITE_W M5STICK_TFT_W*4
#define TEXT_SCROLL_H M5STICK_TFT_H
#define TEXT_SCROLL_W M5STICK_TFT_W
#define TEXT_SCROLL_PIXEL 2
#define TFT_TEXT_POSI_X 30 // vertical position
#define TFT_TEXT_POSI_Y 0 // horizontal position
#define TEXT_SPRITE_POSI_X 0 // vertical position
#define TEXT_SPRITE_POSI_Y 0 // horizontal position
#define TEXT_FONT_SIZE 4
#define TEXT_SPRITE_COLOR TFT_BLACK
#define SCROLL_INTERVAL_MS 50
void setup() {
M5.begin();
M5.Lcd.setRotation(3);
M5.Lcd.fillScreen(TFT_BG_COLOR);
// Create a sprite for Hello World
scrollText.setColorDepth(8);
scrollText.createSprite(TEXT_SPRITE_W, TEXT_SPRITE_H);
scrollText.fillSprite(TEXT_SPRITE_COLOR);
scrollText.setTextColor(TFT_WHITE); // White text, no background
tcount = 0;
dispLength = 0;
scrollWidth = 0;
startOffset = 0;
}
void loop() {
// Push the sprites onto the TFT at specied coordinates
scrollText.pushSprite(TFT_TEXT_POSI_Y, TFT_TEXT_POSI_X);
if (tcount > 0) {
scrollText.scroll(-TEXT_SCROLL_PIXEL); // scroll text left
tcount--;
}
else {
startOffset = M5STICK_TFT_W; //start position is edge of tft
if (dispLength > 0) {
scrollWidth = dispLength + startOffset;
}
else {
scrollWidth = 0;
}
tcount = scrollWidth / TEXT_SCROLL_PIXEL;
String drawStr = "Hellooo Wooorld!";
dispLength = scrollText.drawString(drawStr, TEXT_SPRITE_POSI_Y + startOffset, TEXT_SPRITE_POSI_X, TEXT_FONT_SIZE);
if (TEXT_SPRITE_W <= dispLength) {
dispLength = TEXT_SPRITE_W; // disp length is too long -> TEXT_SPRITE_W
}
scrollText.setScrollRect(0, 0, dispLength + startOffset, TEXT_SCROLL_H, TEXT_SPRITE_COLOR); // Update ScrollRect
}
delay(SCROLL_INTERVAL_MS); // wait so things do not scroll too fast
}
참고 기사
#include <M5StickC.h>
TFT_eSprite scrollText = TFT_eSprite(&M5.Lcd); // Sprite object
int tcount;
int dispLength;
int scrollWidth;
int startOffset;
#define M5STICK_TFT_W 160
#define M5STICK_TFT_H 80
#define TFT_BG_COLOR TFT_BLACK
#define TEXT_SPRITE_H M5STICK_TFT_H
#define TEXT_SPRITE_W M5STICK_TFT_W*4
#define TEXT_SCROLL_H M5STICK_TFT_H
#define TEXT_SCROLL_W M5STICK_TFT_W
#define TEXT_SCROLL_PIXEL 2
#define TFT_TEXT_POSI_X 30 // vertical position
#define TFT_TEXT_POSI_Y 0 // horizontal position
#define TEXT_SPRITE_POSI_X 0 // vertical position
#define TEXT_SPRITE_POSI_Y 0 // horizontal position
#define TEXT_FONT_SIZE 4
#define TEXT_SPRITE_COLOR TFT_BLACK
#define SCROLL_INTERVAL_MS 50
void setup() {
M5.begin();
M5.Lcd.setRotation(3);
M5.Lcd.fillScreen(TFT_BG_COLOR);
// Create a sprite for Hello World
scrollText.setColorDepth(8);
scrollText.createSprite(TEXT_SPRITE_W, TEXT_SPRITE_H);
scrollText.fillSprite(TEXT_SPRITE_COLOR);
scrollText.setTextColor(TFT_WHITE); // White text, no background
tcount = 0;
dispLength = 0;
scrollWidth = 0;
startOffset = 0;
}
void loop() {
// Push the sprites onto the TFT at specied coordinates
scrollText.pushSprite(TFT_TEXT_POSI_Y, TFT_TEXT_POSI_X);
if (tcount > 0) {
scrollText.scroll(-TEXT_SCROLL_PIXEL); // scroll text left
tcount--;
}
else {
startOffset = M5STICK_TFT_W; //start position is edge of tft
if (dispLength > 0) {
scrollWidth = dispLength + startOffset;
}
else {
scrollWidth = 0;
}
tcount = scrollWidth / TEXT_SCROLL_PIXEL;
String drawStr = "Hellooo Wooorld!";
dispLength = scrollText.drawString(drawStr, TEXT_SPRITE_POSI_Y + startOffset, TEXT_SPRITE_POSI_X, TEXT_FONT_SIZE);
if (TEXT_SPRITE_W <= dispLength) {
dispLength = TEXT_SPRITE_W; // disp length is too long -> TEXT_SPRITE_W
}
scrollText.setScrollRect(0, 0, dispLength + startOffset, TEXT_SCROLL_H, TEXT_SPRITE_COLOR); // Update ScrollRect
}
delay(SCROLL_INTERVAL_MS); // wait so things do not scroll too fast
}
M5StickC를 움직여보세요
M5Stack 샘플 스케치(문자 스크롤)
M5StickC의 작은 자료 (144Lab 그룹 개발자 블로그)
업데이트 내역
Reference
이 문제에 관하여(M5StickC로 문자열 스크롤 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/TwDaiki/items/d75eb0272907d641f2e3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)