2026年2月9日月曜日

micro:bit 始める(2) ArduinoIDEでプログラミング1

  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が点灯します。
 例えば、ポート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 件のコメント:

コメントを投稿

LEDマトリックス表示装置の設計・製作 9(画像表示)

  LEDマトリックスに画像を表示させるには、いろいろな画像形式を知る必要があります。現在、よく使われるJPG形式やPNG形式は圧縮処理されて保存されています。これに対して、BMP形式やTIFF形式は非圧縮形式で、画像データがそのまま保存されています。このため、ファイルは大きくな...