【ロボットプログラミングへの道】Arudino Unoで簡単なボタンスイッチ操作を覚えよう


※ 当ページには【広告/PR】を含む場合があります。
2022/05/14
合同会社タコスキングダム|TacosKingdom,LLC.

本ブログではスクラッチ言語を中心に技術な話題を取り上げていますが、あまり
「ロボットプログラミング」をネタの方は比較的少ないとユーザー様からのご指摘がチラホラと...。

STEAM教育の重要度が年々叫ばれる昨今、今後ともロボットプログラミングには様々な分野から熱い視線が注がれているのは確かですので、ここから徐々にロボットプログラミングの基礎的なテーマも扱っていければな、と考えています。

以前ブログに記した、現在小学生がロボットプログラミング教材として多いのは、ヒューマンオリジナルロボットLEGO©マインドストームEV3micro:bitの順になっています。

これらは、大手プログラミングスクールが利用・提供している教材という意味で、子供の利用人口が多いということであり、自宅で手軽にロボットプログラミングが学習できるかということに直結はしません。

むしろ入手性やキット価格、さらに子供から大人までホビーや産業に至るまで長く使える点を考えると
「Arduino(アルディーノ)」が現在コストパフォーマンスが良いのではないかと思います。

今回はアルディーノを使って、もっとも簡単なロボットプログラミングのテクニックであるスイッチ操作を解説します。


Arduino Uno Rev3

合同会社タコスキングダム|タコキンのPスクール【Pschool厳選】お子様に通わせたいロボットプログラミング教室&教材・学習サービスまとめ

ディップスイッチからArduinoに入力信号を送る

ではまず今回試すボタンスイッチ1つでLEDをON・OFFするための回路を示します。

合同会社タコスキングダム|タコキンのPスクール

アルディーノは専用の
「Arduino IDE」と呼ばれる開発環境プログラムからプログラムを作成します。

まだArduino IDEをインストールしていなかった場合には以下のサイトなどを参考にしてみてください。

参考|Arduino 開発環境 Arduino IDE のインストール(Windows 上)

「Arduino インストール」とか「Arduino 使い方」でネット検索すると、関連記事も山ほど出てくるのでここでは解説は省きます。

とりあえずArduinoプログラムを新規作成して、今回使うのスケッチをおもむろにアルディーノに書き込んでみましょう。

            
            /**
 * デジタルピン#4(入力)
 * デジタルピン#7(出力)
 */
const int PIN = 4, POUT = 7;

void setup() {
    //👇デジタルピン(入力)はプルアップして使う
    pinMode(PIN, INPUT_PULLUP);
    pinMode(POUT, OUTPUT);
    delay(500);
}

void loop() {
    if (digitalRead(PIN) == LOW) {
        digitalWrite(POUT, LOW);
    }
    else {
        digitalWrite(POUT, HIGH);
    }
}
        
入力ピンはプルアップして使うので、通常状態(スイッチを押さない時)ではON電圧(HIGH)、スイッチを押すとOFF電圧(LOW)になっていることに注意してください。

なお上のプログラムだと、出力ピン先にLEDを付けたら、
ボタンを押さないと点灯し、押すと消灯します。

この挙動を逆にしたければ、出力ピンのHIGH/LOWを反対にすると良いでしょう。

            
            const int PIN = 4, POUT = 7;

void setup() {
    pinMode(PIN, INPUT_PULLUP);
    pinMode(POUT, OUTPUT);
    delay(500);
}

void loop() {
    if (digitalRead(PIN) == LOW) {
        digitalWrite(POUT, HIGH);
    }
    else {
        digitalWrite(POUT, LOW);
    }
}
        

入力ピンのプルアップモードの違い

Arduinoに限らずマイコンへのピン入力を使うときに、誤作動や過電流から回路を保護するために、「プルアップ抵抗」や「プルダウン抵抗」と呼ばれる10kΩ程度の抵抗を外部で準備する必要があります。

Arduinoシリーズではこの「プルアップ抵抗」が内蔵されているため、利用者は自分で抵抗を外付けするか、内部のプルアップ抵抗を利用するかが選択できます。

            
            //👇プルアップ抵抗なし(=自分でプルアップ/ダウン抵抗と電圧源を準備する)
pinMode(PIN, INPUT);

//👇内部プルアップ抵抗を使う
pinMode(PIN, INPUT_PULLUP);
        

知っておきたいのは、内部プルアップを使うと入力ピンには通常ではON電圧(=3.3〜5V)になり、この入力ピンをGNDに落とすとOFF電圧(=0V)になります。これは文字通り、内部電圧によって入力ピンがON電圧まで持ち上げ(プルアップ)られているためです。

内部プルアップを使わないと、使用者がプルアップするかプルダウンするか自由に選択できるように、入力ピンは通常ではOFF電圧(=0V)になります。


Arduino Uno Rev3

合同会社タコスキングダム|タコキンのPスクール【Pschool厳選】お子様に通わせたいロボットプログラミング教室&教材・学習サービスまとめ

プログラムを使ってみる

ブレッドボードに先程の模式図のように配線してみます。

合同会社タコスキングダム|タコキンのPスクール

特に取り付ける向きを気をつける部品はLEDくらいですが、LEDは足の長い方が電極+側、短いほうがー極かグラウンド側です。

アルディーノ側のピンはプログラムに合わせた箇所に差し込みます。

合同会社タコスキングダム|タコキンのPスクール

ブレッドボードの配線が終わったら、アルディーノに電源を入れてみます。

入力ピンはプルアップで設定していてON電圧がかかっているので、最初の入力はONから始まります。

入力がONのときには、出力もONにするようにしていたので、LEDも点灯することになります。

合同会社タコスキングダム|タコキンのPスクール

スイッチを押してみると、LEDが消灯します。

合同会社タコスキングダム|タコキンのPスクール

以上が、アルディーノにおける1ピン入力1ピン出力のもっとも簡単なプログラムになります。

参考サイト

プルアップ抵抗とプルダウン抵抗