PR

Arduino UNO R4 で基本のLチカ。ついでにいろいろな記述方法を試す

記事内に広告が含まれています。

 Arduino UNO R4を入手したので基本のLチカ(LED点滅)をいくつかの記述方法で試してみました。

 UNO R4 入手後、まずはLチカで簡単な稼働確認と思って PC とUSB接続して、サンプルスケッチを書き込みました。

arduino UNO R4 LED点滅

 なんの問題も無くLED点滅。これだけではつまらないので、delayを使用したいろいろな記述方法でLチカを試してみました。R3でも同様の内容を行ってますがR4でも同じことを行ってみます。最後はレジスタ制御でのピン操作も試してみました。

スポンサーリンク

delayを使った基本のLチカ

void loop() {
  digitalWrite(13, HIGH);
  delay(100);
  digitalWrite(13, LOW);
  delay(100);
}

 良く見かけるソースかと思います。単純にdelayを使ってLEDのOn/Offを繰り返しいるソース。サンプルスケッチを微妙に変えてます。R4でもオンボードLEDは13pinに割り当てされているよう。

IFを使った記述①

void loop() {
  if (digitalRead(13) == 0) digitalWrite(13, HIGH);
  else digitalWrite(13, LOW);
  delay(100);
}

 digitalReadでピン状態を確認して、13ピンの出力を反転してます。記述が一行減りました。

IFを使った記述②

void loop() {
  digitalWrite(13, digitalRead(13) == LOW ? 1 : 0);
  delay(500);
}

 条件演算子を使用した記述です。内容はIF分と同じ。13ピンの状態を確認して、出力を反転してます。さらに1行減って、2行でLチカできます。

変数使用①

bool LED;

void loop() {
  LED = 1 - LED;
  digitalWrite(13, LED);
  delay(150);
}

 変数「LED」を使用して13pinの出力を反転させてます。

変数使用②

bool LED;

void loop() {
  LED = !LED;
  digitalWrite(13, LED);
  delay(2000);
}

 論理否定で反転する記述方法。

void loop() {
  digitalWrite(13, !digitalRead(13));
  delay(500);
}

 論理否定を使えばもう少し簡素に記述できます。

 ここまでは R3 でもR4でも同様の記述で動作します。

UNO R4のレジスタ制御

void loop() {
  R_PORT1->PODR ^= 0x800;
  delay(50);
}

 R4のみの記述方法。オンボードLEDのLチカです。R3ではこの記述は使えません。RA4M1のレジスタを直接制御している記述。ここまでくると Arduino 使う意味があまりなくなりそう。また別途記事にしますがR3同様に処理時間はやはり高速になりました。

 R4のテスト稼働をするついでにいくつかのLチカを記述を試してみました。またR3との速度比較とかしてみたいですね。

 今回、R4を使うついでにIDEのバージョンを 1.8.13 ⇒ 2.2.1 にしたのですが、ソースを「HTML形式でコピー」する機能が無くなってました。重宝していたので残念です。

▼delayを使用しないLチカはこちら▼

▼参考サイト▼

一風変わったLチカをArduino UNO R4 WiFiで・・・あれ?

コメント

タイトルとURLをコピーしました