2026年2月9日月曜日

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

 ボタン動作

 今回はmicro:bitの2個のスイッチを動作させるようにします。ボタンAはポート5、ボタンBはポート11に割り当てられています。
 ボタンを押したときに、LEDを表示させるようにするプログラムは、次のようになります。
#define BTN_A   5
#define BTN_B  11
#define COL1    4
#define COL5   10
#define ROW1   21

void setup() {
  pinMode(BTN_A,INPUT);
  pinMode(BTN_B,INPUT);
  pinMode(COL1, OUTPUT);
  pinMode(COL5, OUTPUT);
  pinMode(ROW1, OUTPUT);
  digitalWrite(COL1, 1);
  digitalWrite(COL5, 1);
  digitalWrite(ROW1, 1);
}

void loop() {
  if(!digitalRead(BTN_A)){
    digitalWrite(COL1, 0);
  }else{
    digitalWrite(COL1, 1);
  }
  if(!digitalRead(BTN_B)){
    digitalWrite(COL5, 0);
  }else{
    digitalWrite(COL5, 1);
  }
}
 ボタンAを押すと左上のLEDが点灯、ボタンBを押すと右上のLEDが点灯します。
 

 タッチセンサ動作

 micro:bitには、タッチセンサとして働く機能があります。micro:bit端子の「0」、「1」、「2」と表示されている端子と、LEDの上にある「ロゴ」が、タッチセンサとして働きます。
 この中の「ロゴ」は、Arduinoのポート設定を見ると、26番に割り当てられていますが、動作しませんでした。
 Arduinoのポート設定は、[hardware\nRF5\0.8.0\variants\BBCmicrobitV2]フォルダにあります。
 [variant.h]のファイルにArduinoで利用できる定義名が書かれています。
 [variant.cpp]ファイルにCPUの端子とArduinoのポート番号を関連付けているファイルです。

 端子「0」、「1」、「2」はそれぞれ、Arduinoのポート「0」、「1」、「2」に割り当てられています。読み取るときに、アナログ入力「analogRead」で処理します。


#define TOUCH0   0

void setup() {
  Serial.begin(9600);
  pinMode(TOUCH0,INPUT);
}

void loop() {
  Serial.println(analogRead(TOUCH0),DEC);
}
 実行させ、「シリアルプロッタ」で表示すると、グラフにしてくれます。
 タッチしていないと約1000の値で、タッチすると小さく変化します。

 3つのポートとも同じ動作をします。


0 件のコメント:

コメントを投稿

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

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