M5 : 비트로 샘플 프로그램 이동
M5:Bit converter Board for Micro:bit
M5:Bit를 입수했지만 샘플 프로그램의 움직이는 방법이 알기 어려웠기 때문에, 기재합니다.
원래 이것은 무언가라고 말하면, Micro:bit를 M5Stack로부터 제어하기 위한 것입니다.
이 M5:Bit를 Micro:bit에 장착하는 것으로 Grove 접속의 Micro:bit 모듈에 할 수 있는 이미지입니다. 다만 Micro:bit측에도 그것용의 프로그램이 필요하게 됩니다.
각각의 프로그램은 공식의 아래 링크에 기재된 대로입니다만 여러가지 작동하지 않았던 점이 있었습니다.
M5Stack측 프로그램
공개된 샘플 프로그램인 M5BIT.ino에서는
#include <M5StackUpdater.h>
에서 우선 컴파일 오류가 되었습니다.
검색해 조사해 보면, 이것은 「M5Stack-SD-Updater」라고 하는 것이 사용되고 있다고 합니다.
↓M5Stack-SD-Updater에 대해서는, 이쪽의 설명을 알기 쉬웠습니다.
htps : // 이 m/토모토 w56/이고 ms/c58f099595bc873에 4c65
과연 매우 편리한 라이브러리인 것 같습니다.
그래서이 정보에 따라 라이브러리를 설치하고 진행하려고하면 또한 새로운 종속성 오류에. 그리고 그 앞에 또 의존관계가‥로 궁극적으로 잘 모르는 에러에.
원래, M5Stack-SD-Updater는 편리할 것 같지만 이번 움직여보고 싶은 M5:Bit에는 사용하지 않아도 좋을 것 같기 때문에 M5Stack-SD-Updater를 사용하지 않게 했습니다.
특히 include 행과
if(digitalRead(BUTTON_A_PIN) == 0){
Serial.println("Will load menu binary");
updateFromFS(SD);
ESP.restart();
}
을 코멘트 아웃하는 것만으로 괜찮았습니다.
또, 이 M5:Bit는 UART 통신이므로, GROVE 포트는 M5Stack Fire등의 PortC(청색)에 연결합니다.
(처음 M5Stack Basic의 I2C의 GROVE 포트에 연결되어 버려 "움직이지 않는다"라고 꺾어 버렸습니다.)
m5bit.ino/*
Description: Use UART communication to control the LED matrix on microbit.
*/
#include <M5Stack.h>
#define WIDTH 320
#define HEIGHT 240
#define BLOCK_SIZE 40
#define UNIT_WIDTH 5
#define UNIT_HEIGHT 5
#define UNIT_SIZE 25
#define GETX(i) ((i) % (5))
#define GETY(i) ((i) / (5))
int world[UNIT_SIZE];
int i;
void setup() {
M5.begin();
M5.Power.begin();
Wire.begin();
// if(digitalRead(BUTTON_A_PIN) == 0){
// Serial.println("Will load menu binary");
// updateFromFS(SD);
// ESP.restart();
// }
Serial2.begin(115200, SERIAL_8N1, 16, 17);
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setTextSize(2);
M5.Lcd.setCursor(35, 220);
M5.Lcd.println(" < * >");
for (i = 0; i < UNIT_SIZE; i++) {
world[i] = 0;
}
i = UNIT_SIZE / 2;
}
void loop() {
M5.update();
int x = GETX(i) + 1;
int y = GETY(i);
if (world[i] > 0) M5.Lcd.fillRect(x * BLOCK_SIZE + 1, y * BLOCK_SIZE + 1, BLOCK_SIZE - 2, BLOCK_SIZE - 2, LIGHTGREY);
else M5.Lcd.fillRect(x * BLOCK_SIZE + 1, y * BLOCK_SIZE + 1, BLOCK_SIZE - 2, BLOCK_SIZE - 2, BLUE);
if (M5.BtnC.wasPressed()) {
if (world[i] > 0) M5.Lcd.fillRect(x * BLOCK_SIZE + 1, y * BLOCK_SIZE + 1, BLOCK_SIZE - 2, BLOCK_SIZE - 2, WHITE);
else M5.Lcd.fillRect(x * BLOCK_SIZE, y * BLOCK_SIZE, BLOCK_SIZE, BLOCK_SIZE, BLACK);
++i;
if (i >= UNIT_SIZE) i=0;
}
if (M5.BtnA.wasPressed()) {
if (world[i] > 0) M5.Lcd.fillRect(x * BLOCK_SIZE + 1, y * BLOCK_SIZE + 1, BLOCK_SIZE - 2, BLOCK_SIZE - 2, WHITE);
else M5.Lcd.fillRect(x * BLOCK_SIZE, y * BLOCK_SIZE, BLOCK_SIZE, BLOCK_SIZE, BLACK);
--i;
if (i < 0 ) i=UNIT_SIZE -1;
}
if (M5.BtnB.wasPressed()) {
if (world[i] > 0) world[i]=0;
else world[i]=1;
Serial2.print(world[i]);
Serial2.print(GETX(i));
Serial2.println(GETY(i));
}
}
Micro:bit측 프로그램
여기는 MakeCode입니다.
샘플은 영어 표기의 이미지였기 때문에 일본어로 하면 이렇게 됩니다.
실행
M5Stack측 프로그램과 Micro:bit측 프로그램을 기입하면, 접속해 실행할 수 있습니다.
Reference
이 문제에 관하여(M5 : 비트로 샘플 프로그램 이동), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/siroitori0413/items/7a5b8b0105b50b74d1db
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
공개된 샘플 프로그램인 M5BIT.ino에서는
#include <M5StackUpdater.h>
에서 우선 컴파일 오류가 되었습니다.
검색해 조사해 보면, 이것은 「M5Stack-SD-Updater」라고 하는 것이 사용되고 있다고 합니다.
↓M5Stack-SD-Updater에 대해서는, 이쪽의 설명을 알기 쉬웠습니다.
htps : // 이 m/토모토 w56/이고 ms/c58f099595bc873에 4c65
과연 매우 편리한 라이브러리인 것 같습니다.
그래서이 정보에 따라 라이브러리를 설치하고 진행하려고하면 또한 새로운 종속성 오류에. 그리고 그 앞에 또 의존관계가‥로 궁극적으로 잘 모르는 에러에.
원래, M5Stack-SD-Updater는 편리할 것 같지만 이번 움직여보고 싶은 M5:Bit에는 사용하지 않아도 좋을 것 같기 때문에 M5Stack-SD-Updater를 사용하지 않게 했습니다.
특히 include 행과
if(digitalRead(BUTTON_A_PIN) == 0){
Serial.println("Will load menu binary");
updateFromFS(SD);
ESP.restart();
}
을 코멘트 아웃하는 것만으로 괜찮았습니다.
또, 이 M5:Bit는 UART 통신이므로, GROVE 포트는 M5Stack Fire등의 PortC(청색)에 연결합니다.
(처음 M5Stack Basic의 I2C의 GROVE 포트에 연결되어 버려 "움직이지 않는다"라고 꺾어 버렸습니다.)
m5bit.ino
/*
Description: Use UART communication to control the LED matrix on microbit.
*/
#include <M5Stack.h>
#define WIDTH 320
#define HEIGHT 240
#define BLOCK_SIZE 40
#define UNIT_WIDTH 5
#define UNIT_HEIGHT 5
#define UNIT_SIZE 25
#define GETX(i) ((i) % (5))
#define GETY(i) ((i) / (5))
int world[UNIT_SIZE];
int i;
void setup() {
M5.begin();
M5.Power.begin();
Wire.begin();
// if(digitalRead(BUTTON_A_PIN) == 0){
// Serial.println("Will load menu binary");
// updateFromFS(SD);
// ESP.restart();
// }
Serial2.begin(115200, SERIAL_8N1, 16, 17);
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setTextSize(2);
M5.Lcd.setCursor(35, 220);
M5.Lcd.println(" < * >");
for (i = 0; i < UNIT_SIZE; i++) {
world[i] = 0;
}
i = UNIT_SIZE / 2;
}
void loop() {
M5.update();
int x = GETX(i) + 1;
int y = GETY(i);
if (world[i] > 0) M5.Lcd.fillRect(x * BLOCK_SIZE + 1, y * BLOCK_SIZE + 1, BLOCK_SIZE - 2, BLOCK_SIZE - 2, LIGHTGREY);
else M5.Lcd.fillRect(x * BLOCK_SIZE + 1, y * BLOCK_SIZE + 1, BLOCK_SIZE - 2, BLOCK_SIZE - 2, BLUE);
if (M5.BtnC.wasPressed()) {
if (world[i] > 0) M5.Lcd.fillRect(x * BLOCK_SIZE + 1, y * BLOCK_SIZE + 1, BLOCK_SIZE - 2, BLOCK_SIZE - 2, WHITE);
else M5.Lcd.fillRect(x * BLOCK_SIZE, y * BLOCK_SIZE, BLOCK_SIZE, BLOCK_SIZE, BLACK);
++i;
if (i >= UNIT_SIZE) i=0;
}
if (M5.BtnA.wasPressed()) {
if (world[i] > 0) M5.Lcd.fillRect(x * BLOCK_SIZE + 1, y * BLOCK_SIZE + 1, BLOCK_SIZE - 2, BLOCK_SIZE - 2, WHITE);
else M5.Lcd.fillRect(x * BLOCK_SIZE, y * BLOCK_SIZE, BLOCK_SIZE, BLOCK_SIZE, BLACK);
--i;
if (i < 0 ) i=UNIT_SIZE -1;
}
if (M5.BtnB.wasPressed()) {
if (world[i] > 0) world[i]=0;
else world[i]=1;
Serial2.print(world[i]);
Serial2.print(GETX(i));
Serial2.println(GETY(i));
}
}
Micro:bit측 프로그램
여기는 MakeCode입니다.
샘플은 영어 표기의 이미지였기 때문에 일본어로 하면 이렇게 됩니다.
실행
M5Stack측 프로그램과 Micro:bit측 프로그램을 기입하면, 접속해 실행할 수 있습니다.
Reference
이 문제에 관하여(M5 : 비트로 샘플 프로그램 이동), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/siroitori0413/items/7a5b8b0105b50b74d1db
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
M5Stack측 프로그램과 Micro:bit측 프로그램을 기입하면, 접속해 실행할 수 있습니다.
Reference
이 문제에 관하여(M5 : 비트로 샘플 프로그램 이동), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/siroitori0413/items/7a5b8b0105b50b74d1db텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)