おもしろ工作・プログラミング動画配信中!せでぃあのYouTube

Arduinoで赤外線リモコンを使って無線制御!ビジュアルプログラミングLESSON21

Arduinoで赤外線リモコンを使って無線制御!ビジュアルプログラミングLESSON21
  • URLをコピーしました!

この記事内には、プロモーションが含まれます。

こんにちは、せでぃあ(@cediablog)です。

今回のArduinoプログラミングLESSON21では、「リモコンの仕組みが分かる、リモコンを使った無線制御」を紹介します。

テレビのリモコン

リモコンと言えば、現代社会に欠かせないアイテムですよね。

私が子供のころのテレビは、チャンネル切り替えのダイヤルが付いたガチャガチャ式でした。

そのような時代では、テレビの電源ON-OFFや、チャンネル切り替え、音量変更はテレビ本体に付属したボタンやツマミを操作しなければならず、移動する手間がかかっていました。

そこで登場したのが、離れた位置にいても機器が操作できるリモコン(Remote controller)です。

身の回りのリモコンを使う機器

  • テレビ
  • エアコン
  • 部屋の照明
リモコンからの入力信号データをLCDディスプレイに表示させる説明写真
リモコンからの入力信号データをLCDディスプレイに表示させます。

今回は、液晶ディスプレイLCD1602に「リモコンからの入力信号データを表示させる」プログラムの作り方を紹介します。

ELEGOOスーパースターターキットに含まれるパーツを使って、リモコンの仕組みがわかる電子工作を作っていきます。

今回液晶ディスプレイLCD1602の制御はI2Cを使ったシリアル通信を使います。

I2C通信を使ったLECディスプレイ表示方法については、こちらの記事にて詳しく解説しています。

上記記事の動作確認した配線状態のうち、LCDディスプレイ配線はそのまま使うことができます。

本記事は、プログラミングと電子パーツの知識が習得できるプログラミング初心者も安心して取り組めるテーマとなっています。

小学生、中学生も安心してプログラミングができるように、文字列を使わなビジュアルプログラミング方法を動画付きで紹介しています。

せでぃあ

ビジュアルプログラミングを使えば小学生から抵抗なくプログラミングができますよ!

本記事では、スクラッチベースのビジュアルプログラミングツールmBlockとArduinoIDEプログラムどちらのプログラミング方法も紹介しています。

本記事ではmBlockのアップロードモード「オン」でのプログラム例を紹介しています。

無料のブロックプログラミングツールmBlockのインストール方法については、こちらの記事を参照してください。

この記事を読んでわかること
  • 赤外線リモコン・受信器の使い方と各種機器の配線方法
  • Arduino IDEでのプログラミング方法
  • mBlockを使ったビジュアルプログラミング方法
この記事を書いた人
せでぃあ

せでぃあはこんな人物です

✅プライム企業に勤める電気・機械設計エンジニア

✅親子の絆を深めるため、夏休みに子供と一緒に電子工作を製作

✅Arduinoプログラミングを用いて作ったプログラミング電子工作「信GO機」が市の発明くふう展で「優秀賞」を受賞

✅本ブログにてArduinoスクラッチプログラミングLESSON記事投稿中

✅YouTubeチャンネル「せでぃあブログちゃんねる」運営中

目次

赤外線リモコンの仕組み

赤外線リモコンの仕組みについて解析します。

赤外線リモコンの動作原理

赤外線リモコンは受信機とセットで使用します。
Arduinoキットに含まれるリモコン部品

リモコン操作は、信号を発信する「赤外線リモコン」と信号を受け取る「赤外線受信機」をペアで使用します。

リモコン動作の流れ

  • 赤外線リモコンのボタンを押すと、赤外線LEDから赤外線が高速で点滅します。
  • この点滅パターンを赤外線受信機が読み取って送信されたデータを解析します。
  • データ内容に応じた動作を行います。

例えば今回使用するリモコンの「0ボタン」を押すと、「16738455」というデータが受信データとして認識されます。

0ボタンを押すと必ず同じデータ「16738455」を認識できるので、マイコン側は「16738455」を受信した=「0ボタンが押された」と解釈できます。

リモコン操作とは、これを利用して押されたボタンに応じた動作をリモートで行っています。

テレビのチャンネル切り替え、音量変更なども同じ原理で行われているのです。

別のメーカーのリモコンを使っても操作ができないのは、リモコンから発信される信号がメーカー毎で異なるからです。

テレビの前にぬいぐるみなどを置いてしまって、リモコンのチャンネル切り替えができなくなったりした経験があると思いますが、それは赤外線受信部の前を遮ってしまっていることが原因だったりするわけです。

せでぃあ

リモコン制御の仕組みがなんとなくご理解いただけたと思います。

リモコンは目に見えない赤外線を使っている

リモコンは目に見えない赤外線(IR)を使っており、今回使用するリモコンの信号波長は940nmです。

リモコンは目に見えない赤外線を使っています。
リモコンは目に見えない赤外線を使っています。

人が色を判別できる波長の領域は、おおよそ380nm~780nmと言われています。

可視光領域から外れた光を、波長が短い側を紫外線、長い側を赤外線と呼んでいます。

なぜ紫外線、赤外線と呼ばれるかは上記の色調分布をみていただければ一目瞭然だと思います。

リモコンは目に見えない赤外線LEDを素早く点滅させることで、受信機に信号を送っています。

せでぃあ

ご家庭のリモコンにも信号発信用の赤外線LEDがついていますので、ぜひ一度確認してみてください。

リモコンからの受信データをLCDディスプレイに表示させる動作の解説

今回紹介する「リモコンからの受信データをLCDディスプレイに表示させる動作」について説明します。

動作の説明

  • ディスプレイ上段に「BTN:」、下段に「DATA:」が表示される。
  • リモコンの押しボタン「0~9」を押すと、ディスプレイ上段に「押しボタン番号」、下段に「受信データ」が表示される。
  • リモコンの押しボタン「0~9」を押すと対応した値に表示が変化する。

今回はリモコン0~9以外のボタンを押しても、LCD表示内容は変わりません。

動作説明とブロックプログラミング手順の解説動画
動画での解説内容
  • 赤外線リモコンの仕組みについて
  • LCDディスプレイへのリモコンボタンと受信データの表示動作
  • mBlockを使ったプログラミング方法

まずは動画を見て、今回のLESSONで実行させたい動作内容を確認してください。

また、mBlockを使ったブロックプログラミングや動作確認方法についても解説しています。

せでぃあ

赤外線リモコンの仕組みが理解できるテーマになっています。

リモコンからの受信データをLCDに表示させるまでの流れ

赤外線リモコンからの入力データをLCDディスプレイに表示させるために必要な作業を解説します。

今回は文字列を使ったプログラム形式と、文字列を使わないブロックプログラミング形式の両方について説明します。

あなたの作りたいプロブラム形式に対応した手順に応じて、対応してください。

プログラム形式に応じた開発環境

  • 文字列による命令語形式 ⇒ ArduinoIDE
  • スクラッチベースのビジュアル形式 ⇒ mBlock
せでぃあ

プログラミング初心者の方は、ビジュアルプログラミングがおすすめです!

STEP
必要なものを準備

プログラミングするために、パソコンが必要です。

電子部品等の必要な機器については、このあと説明します。

STEP
Arduinoを使うためのセットアップ(Arduino IDEプログラミング時のみ)

パソコンに統合開発ソフトウェア「ArduinoIDE」のインストールを行います。

Arduinoのセットアップ方法については、以下の記事にて詳しく説明しています。

Arduino IDEでの言語プログラミングも勉強したい方は、プログラミングの流れを理解しておいてください。

以下の記事にて、プログラミングから動作確認までの流れを詳しく説明しています。

mBlockでプログラミングする場合は、ArduinoIDEのインストールは不要です。

STEP
mBlockでプログラミングするためのセットアップ(mBlockプログラミング時のみ)

パソコンにスクラッチベースのビジュアルプログラミングツール「mBlock」のインストールを行います。

以下の記事にて詳しく説明しています。

ArduinoIDEでプログラミングする場合は、mBlockのインストールは不要です。

STEP
電気配線

電子部品とジャンパーワイヤの差し込みだけで配線が可能です。

STEP
Arduino IDEプログラミング

専用開発ソフトウェア「Arduino IDE」を使います。

私が作成したプログラムをコピペして使ってください。

Arduino IDEプログラミングの基本操作については、こちらの記事にて詳しく説明しています。

mBlockでプログラミングする場合は、ArduinoIDEプログラミングは不要です。

STEP
mBlockプログラミング

スクラッチベースのビジュアルプログラミングツールmBlockを使ってプログラムを作成します

プログラム内容については、後述するプログラミング例を参考にしてください。

ArduinoIDEでプログラミングする場合は、mBlockプログラミングは不要です。

STEP
動作確認

プログラムが完成したら動作確認を行います。

動作確認チェックリスト
  • ディスプレイ上段に「BTN:」、下段に「DATA:」が表示されるか?
  • リモコンボタン「0~9」を押すと、ボタン番号とデータが表示されるか?

赤外線リモコンからの受信データ表示回路で使うもの

今回は、LCDディスプレイをI2C通信で制御する方法を紹介した記事の一部配線変更にて対応可能な内容です。

I2C通信を使ったLCDディスプレイ表示が初めての方は、こちらの記事から読んでいただくことをおすすめします。

赤外線リモコンからの受信データ表示回路で使うもの
配線が完了しプログラム転送できる状態写真
準備するもの
  1. パソコン
  2. Arduino本体
  3. USBケーブル
  4. ブレッドボード
  5. 赤外線受信機
  6. 赤外線リモコン
  7. LCD1602モジュール
  8. I2Cモジュール
  9. ジャンパー線(オスーメス)×7本
  10. ジャンパー線(オスーオス)×2本

今回はELEGOO社のスーパースターターキットに含まれる部品で作ることができますが、Arduino裏面のショート対策としてクリアケースも併せて準備することをおすすめします。

【おすすめ】コスパ最強のArduinoキットの中間グレードです!

パソコン

プログラムを作成するために必要です。

プログラム制御の演算はArduino側で行うため、パソコンのSPECは一般的なモデルで十分対応可能です。

パソコンのOSはWindows、Macどちらでも対応可能です。

Arduino本体【キット】

Arduino本体
Arduino本体

基本的なエディション「Arduino Uno」の互換機である、ELEGOO社のUNO R3を使用しています。

Arduino本体裏面のショート対策に、別売りのクリアケースの購入をおすすめしています。

各ソケットの役割など、Arduino本体の機能について以下の記事にて詳しく説明しています。

USBケーブル【キット】

必要なUSBケーブルの説明写真
USBケーブル

パソコンとArduinoを接続してプログラムデータのやり取りをするために必要です。

ブレッドボード【キット】

ブレッドボードの機能説明図
ブレッドボードの機能説明図

たくさんの穴が開いていて、部品の端子を穴に差し込むだけで電気的に接続が可能な板です。

説明図は30列のショート版ですが、スーパースターターキットに含まれる63列タイプでも機能は同じです。

ブレッドボードだけの購入も可能です。

赤外線受信機【キット】

赤外線受信機
赤外線受信機

赤外線リモコンの赤外線信号を受信するための機器です。

リモコン【キット】

リモコン
リモコン

赤外線リモコンです。

赤外線レシーバーとセットで使います。

LCD1602モジュール【キット】

LCD1602モジュール
LCD1602モジュール

液晶ディスプレイ「LCD(Liquid Crystal Display)」モジュールになります。

数字や文字などを表示させることが可能です。

I2Cモジュール

I2Cシリアルインタフェースボードモジュール
I2Cシリアルインターフェースボード

I2Cを使ってLCDを制御するために必要なモジュールです。

電源線2本と通信線2本の合計4本の配線だけで、LCDを制御することが可能になります。

せでぃあ

I2Cモジュールはキットに含まれないため、別途購入が必要です。

ジャンパー線(オスーメス)【キット】

ジャンパー線(オス-メス)
ジャンパー線(オス-メス)

オス-メスジャンパー線を7本使用します。

I2Cシリアルインターフェースボード及び赤外線受信機とArduino本体を接続させるために使用します。

ジャンパー線(オスーオス)【キット】

キットに同梱されているジャンパー線(オスーオス)の説明
ジャンパー線

ジャンパー線を2本使用します。

Arduino本体とブレッドボードの接続や、ブレッドボードの共通電源ライン(GNDまたは5V)からブレッドボード内の配線系統穴に差し込んで接続するのに使います。

スターターキットに含まれる機器に関しては、以下の記事にて詳しく紹介しています。

赤外線リモコンからの受信データ表示回路の配線方法

ここからは、各機器間の配線方法について解説します。

赤外線リモコンからの受信データを表示させる動作回路の配線が完了した状態
配線完了時の状態写真
I2CLCDモジュールの解説
I2CLCDモジュールの解説
赤外線リモコンからの受信データ表示回路の配線説明図
配線説明図(fritzingを用いて作成)

上図が配線説明図となりますので、これと同じ配線をすれば完成します。

機器が故障するおそれがあるので、接続するプラスマイナス極性には十分注意して配線してください。

赤外線受信機のつなぎ先

  • G:GNDに接続
  • R:5Vに接続
  • Y:2番ピンに接続

機器故障させないためにも、USBケーブルを抜いた「通電OFF」状態にて配線を行ってください

プログラミングのやり方

本記事では、以下に示す「Arduino IDEプログラミング」と「mBlockプログラミング」の2通りのプログラミング方法について解説しています。

いずれか1つのプログラミング方法を用いることで、本LESSONの動作を行うことが可能です。

ArduinoIDE:文字列による命令語形式
mBlock:スクラッチベースのビジュアル形式

文字列を使わないmBlockの方が、直感的で分かりやすく小学生におすすめのプログラミング方法になります。

mBlockを使ってプログラミングをする方は、mBlockの説明まで読み飛ばしてください。

せでぃあ

プログラミング初心者の方は、ビジュアルプログラミングがおすすめです!

LiquidCrystal_I2Cライブラリのインストール

ArduinoIDEを使用した文字列プログラミングを行うためには、LiquidCrystal_I2Cライブラリのダウンロードとインストール作業が必要となります。

LiquidCrystal_I2Cライブラリのダウンロードとインストール方法を解説します。

mBlockでプログラミングをする場合は、本ライブラリインストール作業は不要です。

STEP
GitHubのサイトを開く
LiquidCrystal_I2Cライブラリのダウンロードサイトを開く。

LiquidCrystal_I2Cライブラリのダウンロードサイトを開きます。

STEP
codeをクリックする
codeをクリックする。
STEP
ZIPファイルをダウンロードする
「Download ZIP」をクリックして、ZIPファイルをダウンロードする。

「Download ZIP」をクリックして、ZIPファイルをダウンロードします。

STEP
ArduinoIDEを開き、ライブラリをインストールする
ArduinoIDEを開き、ライブラリをインストールする。

ArduinoIDEを開き、「スケッチ」⇒「ライブラリをインクルード」⇒「.ZIP形式のライブラリをインストール…」の順に選択して、STEP3でダウンロードしたZIPファイルを選択。

インストールが行われ、ライブラリインストール作業が完了となります。

リモコンボタン0~9の受信データ

リモコンからの入力信号データをLCDディスプレイに表示させる説明写真

リモコンボタンに対する受信データは、受信させたデータをモニタリングしなければ分かりません。

今回使用するリモコンの0~9ボタンに対する、受信データの割り当ては以下の通りです。

リモコンボタンに対する受信データの割り当て
  • 0ボタン:16738455
  • 1ボタン:16724175
  • 2ボタン:16718055
  • 3ボタン:16743045
  • 4ボタン:16716015
  • 5ボタン:16726215
  • 6ボタン:16734885
  • 7ボタン:16728765
  • 8ボタン:16730805
  • 9ボタン:16732845

IRremoteライブラリのインストール

赤外線(IR)リモコン受信機を使ってデータを受信するためには、専用のライブラリをインストールする必要があります。

mBlockでプログラミングをする場合は、本ライブラリインストール作業は不要です。

STEP
ArduinoIDEを開いて、ライブラリを管理をクリックする。
Arduino IDEを開き、スケッチ⇒ライブラリをインクルード⇒ライブラリを管理をクリックする。

Arduino IDEを開き、スケッチ⇒ライブラリをインクルード⇒ライブラリを管理をクリックする。

STEP
IRremoteライブラリを検索する
検索窓に「IRremote」と入力して、IRremoteライブラリを検索します。

検索窓に「IRremote」と入力して、IRremoteライブラリを検索します。

ライブラリが検索できたら、プルダウンからバージョン「2.8.0」を選択します。

ver2.8.1以降を使うと、赤外線リモコンからの受信データがすべて「0」と認識されてしまうため、必ず「2.8.0」を選択してください。

STEP
IRremoteライブラリをインストールする
インストールボタンをクリックして、IRremoteライブラリをインストールします。

インストールボタンをクリックして、IRremoteライブラリをインストールします。

STEP
インストールが完了したことを確認する
ライブラリのインストールが完了した旨の表示がされたら、IRremoteライブラリのインストールは完了です。

ライブラリのインストールが完了した旨の表示がされたら、IRremoteライブラリのインストールは完了です。

Arduino IDEプログラミング

Arduino IDEとは統合開発ソフトウェアで、C言語のような文字列を用いたプログラミング方法です。

プログラミングするにあたり、ある程度の命令語を知っておく必要があります。

Arduino IDEのインストール方法については、以下の記事で詳しく説明しています。

日本語版のArduino公式リファレンスが記載されているので、関数を調べるときに重宝します!(私も所有しています)

プログラミング方法

Arduino IDEでの赤外線リモコンからの受信データ表示プログラミング画面
Arduino IDEでのプログラミング画面

Arduino IDEを使って、文字列プログラミングを行います。

Arduino IDEを使ったプログラミング~動作確認方法については、以下の記事で詳細説明しています。

Arduino IDEプログラム

/* 作品名:LESSON21 */
/* 作成者:せでぃあ https://cediablog.com */
/* IR(赤外線)リモコン制御 */

// ライブラリのインクルード
#include <LiquidCrystal_I2C.h>
#include <IRremote.h>

// LiquidCrystal_I2C型変数の宣言
LiquidCrystal_I2C lcd(0x27, 16, 2);  // 0x27のアドレス,16列2行のLCDを使用

// 変数の宣言
int RECEIVE_SOCKET = 2;  //IR受信信号入力ソケット番号

// IR受信モジュールの初期設定
IRrecv irrecv(RECEIVE_SOCKET);  // 受信オブジェクトの作成
decode_results results;         // 受信データの格納先


void setup() {
  //プログラム起動時1回だけ処理される回路

  //IR受信モジュール
  irrecv.enableIRIn();  //IR受信モジュールを有効化

  //LCDディスプレイ表示
  lcd.init();           // LCDの初期化
  lcd.backlight();      // LCDバックライトの点灯
  lcd.setCursor(0, 0);  //上段1列目にカーソルを移動
  lcd.print("BTN:");    //LCDディスプレイに「BTN:」と表示させる
  lcd.setCursor(0, 1);  //下段1列目にカーソルを移動
  lcd.print("DATA:");   //LCDディスプレイに「DATA:」と表示させる
}

void loop() {
  //プログラム起動後ループ処理される回路

  if (irrecv.decode(&results)) {  //IR受信モジュールからデータを受信したとき

    //リモコン「0」ボタン信号を受信したとき
    if (results.value == 16738455) {
      lcd.setCursor(4, 0);       //上段5列目にカーソルを移動
      lcd.print("0");            //LCDディスプレイに「0」と表示させる
      lcd.setCursor(5, 1);       //下段6列目にカーソルを移動
      lcd.print(results.value);  //LCDディスプレイに受信値を表示させる
    }

    //リモコン「1」ボタン信号を受信したとき
    else if (results.value == 16724175) {
      lcd.setCursor(4, 0);       //上段5列目にカーソルを移動
      lcd.print("1");            //LCDディスプレイに「1」と表示させる
      lcd.setCursor(5, 1);       //下段6列目にカーソルを移動
      lcd.print(results.value);  //LCDディスプレイに受信値を表示させる
    }

    //リモコン「2」ボタン信号を受信したとき
    else if (results.value == 16718055) {
      lcd.setCursor(4, 0);       //上段5列目にカーソルを移動
      lcd.print("2");            //LCDディスプレイに「2」と表示させる
      lcd.setCursor(5, 1);       //下段6列目にカーソルを移動
      lcd.print(results.value);  //LCDディスプレイに受信値を表示させる
    }

    //リモコン「3」ボタン信号を受信したとき
    else if (results.value == 16743045) {
      lcd.setCursor(4, 0);       //上段5列目にカーソルを移動
      lcd.print("3");            //LCDディスプレイに「3」と表示させる
      lcd.setCursor(5, 1);       //下段6列目にカーソルを移動
      lcd.print(results.value);  //LCDディスプレイに受信値を表示させる
    }

    //リモコン「4」ボタン信号を受信したとき
    else if (results.value == 16716015) {
      lcd.setCursor(4, 0);       //上段5列目にカーソルを移動
      lcd.print("4");            //LCDディスプレイに「4」と表示させる
      lcd.setCursor(5, 1);       //下段6列目にカーソルを移動
      lcd.print(results.value);  //LCDディスプレイに受信値を表示させる
    }

    //リモコン「5」ボタン信号を受信したとき
    else if (results.value == 16726215) {
      lcd.setCursor(4, 0);       //上段5列目にカーソルを移動
      lcd.print("5");            //LCDディスプレイに「5」と表示させる
      lcd.setCursor(5, 1);       //下段6列目にカーソルを移動
      lcd.print(results.value);  //LCDディスプレイに受信値を表示させる
    }

    //リモコン「6」ボタン信号を受信したとき
    else if (results.value == 16734885) {
      lcd.setCursor(4, 0);       //上段5列目にカーソルを移動
      lcd.print("6");            //LCDディスプレイに「6」と表示させる
      lcd.setCursor(5, 1);       //下段6列目にカーソルを移動
      lcd.print(results.value);  //LCDディスプレイに受信値を表示させる
    }

    //リモコン「7」ボタン信号を受信したとき
    else if (results.value == 16728765) {
      lcd.setCursor(4, 0);       //上段5列目にカーソルを移動
      lcd.print("7");            //LCDディスプレイに「7」と表示させる
      lcd.setCursor(5, 1);       //下段6列目にカーソルを移動
      lcd.print(results.value);  //LCDディスプレイに受信値を表示させる
    }

    //リモコン「8」ボタン信号を受信したとき
    else if (results.value == 16730805) {
      lcd.setCursor(4, 0);       //上段5列目にカーソルを移動
      lcd.print("8");            //LCDディスプレイに「8」と表示させる
      lcd.setCursor(5, 1);       //下段6列目にカーソルを移動
      lcd.print(results.value);  //LCDディスプレイに受信値を表示させる
    }

    //リモコン「9」ボタン信号を受信したとき
    else if (results.value == 16732845) {
      lcd.setCursor(4, 0);       //上段5列目にカーソルを移動
      lcd.print("9");            //LCDディスプレイに「9」と表示させる
      lcd.setCursor(5, 1);       //下段6列目にカーソルを移動
      lcd.print(results.value);  //LCDディスプレイに受信値を表示させる
    }

    irrecv.resume();  //IR受信情報をリセット
  }

  delay(100);  //0.1秒ウェイト
}

上記がLCDディスプレイへの赤外線リモコンからの受信データ表示プログラムになります。

Arduino IDEのプログラム画面にコピーアンドペーストすることで、動作確認まで進めることができます。

各プログラム列の右側にプログラム内容をコメント記入してありますので参考にしてください。

せでぃあ

0~9の10通りのボタン信号に対応した条件がプログラムのボリュームを大きくしていますが、コピペを使うとプログラム作成時間が短縮できますよ。

命令語の解説

今回のプログラムで使用した命令文について、解説します。

変数のデータ型指定

変数のデータ型を指定するものです。

今回はピンソケット番号を代入するので整数を扱う「int型」を指定します。

スクロールできます
データ型説明扱える範囲
int2バイトの整数を代入可能。-32768~32767
long4バイトの整数を代入可能-2,147,483,648~2,147,483,647
float4バイトの小数を代入可能。3.4028235×1038~-3.4028235×1038
char1バイトの値を代入可能。文字列の代入に利用されます。-128~127
boolean0または1のみ代入可能。フラグのON-OFFなどに利用されます。0,1
データ型の説明

if else文

条件式が成立しているか否かで、どちらの命令文を実行するか振り分けます。

if( 条件 ){
 条件成立時に実行する文 ;
} else {
 条件不成立時に実行する文 ;
}

delay(時間)

()内で指定した時間(単位はmsec)だけ、プログラム実行を待たせます。

LiquidCrystal_I2Cライブラリの説明

今回はLCD1602の制御をするために、「LiquidCrystal_I2Cライブラリ」を使用します。

このライブラリを使うだけで、簡単にLCD表示を制御できます。

LiquidCrystal_I2Cライブラリの読み出し

プログラム冒頭の宣言部にてLiquidCrystalライブラリを読み出します。

#include <LiquidCrystal_I2C.h>

LiquidCrystal型変数の指定

プログラム冒頭の宣言部にてLiquidCrystal_I2C型の変数を定義します。

LiquidCrystal_I2C lcd(I2Cアドレス, 桁数, 行数)

変数「lcd」は例であり、任意の変数文字列を指定してください。

init()

LCDの表示内容をクリアし、カーソルを左上に移動させます。

lcd型変数.init

clear()

LCDの表示内容をクリアします。

lcd型変数.clear()

setCursor( , )

カーソル位置を指定します。テキスト表示開始位置を指定することができます。

lcd型変数.setCursor(桁、行)

桁は左端が「0」、行は上段が「0=1行目」になります。

print(“表示させたい文字列”)

LCDに文字列を表示させます。

lcd型変数.print(“表示させたい文字列”)

backlight()

LCDバックライトを点灯させます。

lcd型変数.backlignt()

IRremoteライブラリの説明

赤外線リモコンからの受信データを受信するために、「IRremoteライブラリ」を使用します。

このライブラリを使うことで、赤外線受信機を使って赤外線リモコンからのデータを受信することができます。

ライブラリのバージョンは2.8.0をインストールしてください。

IRremoteライブラリの読み出し

プログラム冒頭の宣言部にてIRremoteライブラリを読み出します。

#include <IRremote.h>

赤外線データ受信オブジェクトの作成

赤外線データを受信するためのオブジェクトを作成します。

赤外線受信機の信号線と接続するArduinoの入力ピン番号を指定します。

IRrecv 受信オブジェクト名(入力ピン番号)

受信データの格納先を作成する

赤外線受信データの格納先変数を作成します。

decode_results 変数名

赤外線受信モジュールを有効にする

setup関数にて、赤外線受信モジュールを有効化します。

受信オブジェクト名.enableIRIn()

赤外線データを受信したかどうかを確認するフラグ

赤外線データを受信すると「HIGH」になるフラグです。

データを受信したときに演算させたいときに、if文の条件として使います。

受信オブジェクト名.decode(&results)

赤外線受信データの参照

赤外線受信機にて受信したデータは、受信データ格納変数.valueを使って参照できます。

受信データ格納変数名.value

赤外線受信情報をリセット

赤外線受信データをリセットし、次の赤外線データを受信できるようにします。

受信オブジェクト名.resume()

プログラミング初心者の方に、おすすめなArduinoの参考書を紹介しています!

mBlockプログラミング

スクラッチベースのビジュアルプログラミングツールmBlockプログラミングの説明
mBlockを使ったプログラミング画面

ここからは、mBlockを使ったプログラムの作り方を解説します。

mBlockを使ったプログラムの作り方
  1. デバイスにArduino Uno R3を追加する
  2. 接続モードを「アップロードモードON」にする
  3. mBlockプログラムを作成する
  4. プログラムをArduino本体に転送する

これらの基本操作方法については、こちらの記事を参照してください。

プログラミング、動作確認方法については、本記事の説明動画でも紹介しています

せでぃあ

動画を参考にプログラミングしてみてください。

IRremoteブロックの追加方法

mBlockではArduino用の専用ブロックが標準でいくつか準備されています。

しかしながら、赤外線データを受信するためのブロックは標準では準備されていないため、拡張ブロックを追加する必要があります。

追加が必要なIRremoteブロックと機能説明
追加が必要なIRremoteブロックと機能説明

今回は赤外線データ送信ブロック以外の4種類のIRremoteブロックを使います。

STEP
拡張ボタンをクリック
mBlockを開いて、拡張ボタンをクリックします。

mBlockを開いて、拡張ボタンをクリックします。

STEP
検索窓に「irremote」と入力して検索
検索窓に「irremote」と入力します。

検索窓に「irremote」と入力して、拡張ブロックを検索します。

STEP
プルアップブロックを追加する
INPUT_PULLUPと書かれた拡張ブロックを追加します。

INPUT_PULLUPと書かれた拡張ブロックを追加します。

STEP
IRremoteブロックが追加される
IRremoteブロックが追加されます。

IRremoteブロックが追加され、プログラムに使用可能となります。

I2Cを使ったLCD制御ブロックの追加方法

LCDを制御(LCD画面クリア、カーソル位置を指定、LCDへの文字列表示など)するために必要な、専用ブロックを追加する必要があります。

追加が必要なI2Cを使ったLCD制御用ブロックと機能説明
追加が必要なI2Cを使ったLCD制御用ブロックと機能説明
STEP
拡張ボタンをクリック
mBlockを開いて、拡張ボタンをクリックします。

mBlockを開いて、拡張ボタンをクリックします。

STEP
検索窓に「i2c」と入力して検索
検索窓に「i2c」と入力します。

検索窓に「i2c」と入力します。

STEP
LCDと書かれた拡張ブロックを追加
I2Cを使ったLCD制御用の拡張ブロックを追加します。

I2Cを使ったLCD制御用の拡張ブロックを追加します。

STEP
LCDブロックが追加される
I2Cを使ったLCD制御ブロックが追加されます。

I2Cを使ったLCD制御ブロックが追加されます。

mBlockを使ったプログラム内容

今回は「アップロードモード オン」でのプログラム作成例を紹介しています。

プログラム開始条件が「Arduino Unoが起動したとき」になっている点に注意してください。

以下のプログラムが動作プログラムになります。

mBlockによる赤外線リモコンからの受信データ表示ブロックプログラム
mBlockによる赤外線リモコンからの受信データ表示ブロックプログラム
mBlockによる赤外線リモコンからの受信データ表示ブロックプログラム
mBlockによる赤外線リモコンからの受信データ表示ブロックプログラム

mBlockのArduino専用ブロックについては、こちらの記事にて詳しく説明しています。

動作確認方法

赤外線リモコンからの受信データ表示回路で使うもの
配線状態説明図
動作確認チェックリスト
  • ディスプレイ上段に「BTN:」、下段に「DATA:」が表示されるか?
  • リモコンボタン「0~9」を押すと、ボタン番号とデータが表示されるか?

上記項目について確認していきましょう。

ディスプレイ上段に「BTN:」、下段に「DATA:」が表示されるか?

プログラムの演算が開始されたら、LCDディスプレイ上段に「BTN:」、下段に「DATA:」が表示されていることを確認してください。

LCDディスプレイのバックライトが点灯状態であることを併せて確認してください。

リモコンボタン「0~9」を押すと、ボタン番号とデータが表示されるか?

赤外線リモコンは受信機とセットで使用します。

赤外線リモコンのLEDを受信機の受光部の方向に向けて、リモコンのボタンを押してください。

0から9までの数字ボタンを押して、LCDディスプレイに表示される内容を確認してください。

せでぃあ

赤外線受信機はリモコンからのデータを受け取ると赤色LEDが点滅します。

赤外線リモコンは赤外線LEDの点滅信号を使っていた(まとめ)

この記事の内容をまとめると
  • 赤外線リモコンは赤外線LEDを高速で点滅させて信号を出している。
  • 赤外線受光機がリモコンからの赤外線信号を受け取ってデータとして認識する。
  • 拡張ブロックを追加することでmBlockでもリモコン制御が可能。

小学生のお子様には断然、ビジュアルプログラミングがおすすめです!

せでぃあ

mBlockはブロックのドラッグアンドドロップで簡単にプログラミングができます!

小学生のプログラミング学習におすすめな、mBlockが使えるプログラミングロボットを紹介しています。

最後まで読んでいただき、ありがとうございました。

子供の成長を育む!小学生のお子様にぴったりなプログラミング教室が見つかるように厳選しました!

Arduinoスクラッチプログラミングのおすすめ参考書について詳しく説明しています。

Arduinoプログラミング(スクラッチも)を使った電子工作を紹介しています。

応援ありがとうございます(^^)/

Arduinoで赤外線リモコンを使って無線制御!ビジュアルプログラミングLESSON21

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメント一覧 (2件)

  • [LiquidCrystal_I2Cライブラリのインストール]のgibHuBの解説がよくわからない?iRmototo.hの読み込みは、5個くらいの候補が出ますが、正式名を教えてください。BTN: DATA:までは進みます。それ以後が反応なしです。受信機のledは光ります。iRmoto.hが読み込み不可の気がします。
    GitHubのやさしい使い方をしりたいです。

    • のびおすぶろうさん、貴重なご意見ありがとうございます。
      今後の記事作成時に参考にさせていただきます。
      BTN: DATA:の表示が出来ているとの事で無事LiquidCrystal_I2Cライブラリインストールは成功しており安心しました。

      ライブラリマネージャで検索したiRmototo.hの正式名は下記になります。
      IRremote by shirriff,z3t0,ArminJo
      記事でも注意書きがありますが、バージョンは必ず2.8.0をインストールしてください。
      バージョン2.8.1以降をインストールしてしまうと赤外線データの受信が正しくできません。

      バージョン2.8.0をインストールしてもうまくいかない場合は、メールにてサポートさせていただきますのでご連絡いただけますと幸いです。

      今後ともよろしくお願いいたします。

コメントする

CAPTCHA


目次