micro:bitを操作していく中で、なかなか馴染めないのが「ブロックプログラミング」です。キーボードで入力すれば、すぐなのにマウスで操作していかなければなりません。
これは、プログラミング初心者がよく起こすスペルミスによる「誤入力」で動作できないことがあるため、初心者向けには扱いやすいものです。
しかし、細かなことをしたりするうえでは、コードプログラミングがしたくなります。Pythonでもプログラミングができるのですが、慣れないためか、タブの段付けによる構造化プログラミングが馴染めず、うまく動作しない原因の一つと感じています。(これは環境かもしれません。タブとスペースの混在する場合は画面上は同じでも、プログラミング構造が違うなど...)
ArduinoIDEでプログラミングする
検索すると、すぐにArduinoIDEでのプログラミングができる環境構築について見つかります。そこで、サイトを参考にして導入しました。簡単にコードプログラミングができるようになりました。
ArduinoIDEでプログラミングするときに、知る必要があるのは、ポート番号です。
micro:bitには、V1.5、V2.0、V2.2といくつかのバージョンがあります。内部の回路が異なるため、ポートの割り当てが異なります。詳しく知るためには、回路図があれば解析できます。回路図はmicro:bit教育財団から取得できます。
LEDマトリックスのプログラミングする
micro:bitには、25個のLEDが付いていま
す。micro:bit V2.0のLEDは内部回路のようにLEDマトリックスとなっています。ROW側をHigh、COL側をLowにすると、LEDが点灯します。
す。micro:bit V2.0のLEDは内部回路のようにLEDマトリックスとなっています。ROW側をHigh、COL側をLowにすると、LEDが点灯します。
例えば、ポート21(ROW1)をHigh、ポート4(COL1)をLowにすると、左上のLEDが点灯します。プログラムは次のようになります。
void setup() {
pinMode(4, OUTPUT);
pinMode(21, OUTPUT);
digitalWrite(4, LOW);
digitalWrite(21, HIGH);
}
void loop() {
}
また、LEDマトリックスの動作チェック用にポート番号を配列に設定して、左上から順番に1つずつ表示させるプログラムは、次のようになります。
const uint8_t max_cols = 5;
const uint8_t max_rows = 5;
const uint8_t cols[max_cols] = { 4, 7, 3, 6, 10};
const uint8_t rows[max_rows] = {21, 22, 23, 24, 25};
void led_init() {
for (int i = 0; i < max_cols; i++) {
pinMode(cols[i], OUTPUT);
digitalWrite(cols[i], HIGH);
}
for (int i = 0; i < max_rows; i++) {
pinMode(rows[i], OUTPUT);
digitalWrite(rows[i], LOW);
}
}
void led_pset(const uint8_t x, const uint8_t y, const uint8_t mode) {
digitalWrite( cols[x], !mode );
digitalWrite( rows[y], mode );
}
void setup() {
led_init();
}
void loop() {
for (int y = 0; y < 5; y++) {
for (int x = 0; x < 5; x++) {
led_pset(x, y, HIGH);
delay(200);
led_pset(x, y, LOW);
}
}
}
1列のみ表示するのは簡単なのですが、パターンを表示させるには、ダイナミック点灯方式が必要です。ただ、Adafruit社がmicro:bit用のArduinoライブラリを提供しているので、こちらを使うと、文字列も簡単に表示できます。

0 件のコメント:
コメントを投稿