Arduinoアナログピンをデジタルピンとして使う|スクラッチベースのmBlockについても解説
こんにちは、せでぃあ(@cediablog)です。
Arduinoのデジタル入出力ピンが足りなくて困っています
このような悩みを解決します。
Arduino本体にはデジタル入出力ピンという、押しボタン入力やLEDランプ点灯出力等に使われる端子があります。
本ブログLESSON13で扱った「4ケタ7セグメントディスプレイ」等を用いると、たくさんのデジタル入出力ピンを使います。
その他センサーや押しボタンを使いたいと思うと、デジタル入出力ピン数が足りないという悩みに直面します。
今回はアナログ入力ピンを、デジタル入出力ピンとして使用する方法について説明します。
デジタル入出力ピンをめいっぱい使用した、LESSON13記事はこちら
せでぃあはこんな人物です
✅プライム企業に勤める電気・機械設計エンジニア
✅親子の絆を深めるため、夏休みに子供と一緒に電子工作を製作
✅Arduinoプログラミングを用いて作ったプログラミング電子工作「信GO機」が市の発明くふう展で「優秀賞」を受賞
✅本ブログにてArduinoスクラッチプログラミングLESSON記事投稿中
✅YouTubeチャンネル「せでぃあブログちゃんねる」運営中
- アナログ入力ピンをデジタル入出力ピンとして使う方法
- ArduinoIDEでの対応方法
- mBlockでの対応方法
本記事は「Arduino UNO」に対する対処法を記載しています
デジタル入出力ピンが足りないときの対処法
デジタル入出力ピンが足りないときの、対策案はこちらになります。
- 入出力ピンを多く持つ別機種を使う
- アナログ入力ピンをデジタル入出力ピンとして使う
入出力ピンを多く持つ別機種を使う
アナログ入力ピンは6つありますが、不足しているデジタル入出力ピン数が7つ以上の場合は別機種への変更による対策で対応が可能です。
機種名 | デジタル入出力ピン数 |
---|---|
Arduino UNO | 14ピン |
Arduino MEGA2560 | 54ピン |
Arduinoにはいくつかの機種が存在していますが、例えば「Arduino MEGA2560」という機種は、デジタル入出力ピン数がArduino UNOと比べて40ピンも多いです。
アナログ入力ピンをデジタル入出力ピンとして使う
不足している入出力ピンと使用するアナログ入力ピンの合計が6本以下の場合は、アナログ入力をデジタル入出力ピンとして使うことで対策できます。
アナログ入力ピンは「A0~A5」の計6つあり、ピン番号に対してソフト側でデジタル入出力ピン宣言することでデジタル入出力ピンとして使用することができます。
A0~A5はデジタル入出力ピン番号「14~19」として使用することができます
ハード側対応方法
ハード側の対応方法は至って簡単です。
デジタル入出力ピンとまったく同じように、アナログ入力ピンに必要な線を差し込むだけでOKです。
今回は押しボタンスイッチをA0ピンに接続、LEDランプをA1ピンに接続する回路を例に説明していきます。
LEDにはプラスマイナスの極性がありますので、配線に注意してください
LED点灯回路については、こちらの記事にて詳しく説明しています。
押しボタンスイッチ回路については、こちらの記事にて詳しく説明しています。
プログラム側の対策方法
Arduinoは様々なプログラミングツールを用いて、プログラムを作成することが可能です。
- Arduino IDE
- mBlock
今回は、上記2種類のプログラミングツールにおける対策方法を説明します。
Arduino IDE
Arduino IDEは、Arduinoを動作させるための専用開発環境ソフトウェアです。
この後に説明する「mBlock」がビジュアルプログラミング形式であるのに対し、ArduinoIDEはC言語のような文字列プログラミング形式になります。
Arduino IDEはデジタル入出力ピン番号「0~13」を「14~19」または「A0~A5」と書き替えるだけで、簡単にアナログ入力ピンをデジタル入出力ピンとして使用することができます。
ピン番号14=A0
ピン番号15=A1
ピン番号16=A2
ピン番号17=A3
ピン番号18=A4
ピン番号19=A5
上記のような組み合わせになります。
ピン番号14~19を使ったプログラム例
/* 作品名:ANADIJI */
/* 作成者:せでぃあ https://cediablog.com */
/* アナログ入力ピンをデジタル入出力ピンとして使用する */
void setup() {
// put your setup code here, to run once: プログラム起動時1回だけ処理される回路
//入出力の割り当て
pinMode(14, INPUT); //A0ピンはデジタル入力として使用
pinMode(15, OUTPUT); //A1ピンはデジタル入力として使用
}
void loop() {
// put your main code here, to run repeatedly: プログラム起動後ループ処理される回路
if(digitalRead(14) == HIGH){ //押しボタンスイッチが押されたとき
digitalWrite(15 , HIGH); //LEDランプを点灯させる
}else{ //押しボタンスイッチが押されていないとき
digitalWrite(15 , LOW); //LEDランプを消灯させる
}
delay(100); //0.1秒ウェイト
}
ピン番号A0~A5を使ったプログラム例
/* 作品名:ANADIJI */
/* 作成者:せでぃあ https://cediablog.com */
/* アナログ入力ピンをデジタル入出力ピンとして使用する */
void setup() {
// put your setup code here, to run once: プログラム起動時1回だけ処理される回路
//入出力の割り当て
pinMode(A0, INPUT); //A0ピンはデジタル入力として使用
pinMode(A1, OUTPUT); //A1ピンはデジタル入力として使用
}
void loop() {
// put your main code here, to run repeatedly: プログラム起動後ループ処理される回路
if(digitalRead(A0) == HIGH){ //押しボタンスイッチが押されたとき
digitalWrite(A1 , HIGH); //LEDランプを点灯させる
}else{ //押しボタンスイッチが押されていないとき
digitalWrite(A1 , LOW); //LEDランプを消灯させる
}
delay(100); //0.1秒ウェイト
}
Arduino IDEに関しては、こちらの記事にて詳しく説明しています。
mBlock
mBlock は、Makeblock社が開発したスクラッチベースのビジュアルプログラミングツールです。
ブラウザ上または、PC(パソコン)にインストールをしてプログラミングを行う無償ソフトウェアになります。
mBlockではデジタル入出力ピン番号に「14~19」を指定することで、アナログ入力ピンをデジタル入出力ピンとして使用することができます。
ピン番号入力部はアルファベット入力ができない仕様となっているため、数値入力対策のみ有効となります。
アップロードモードオンのときの対策方法になります
mBlockの機能とインストール方法について知りたい方は、こちらの記事を参照してください。
Makeblock社が販売している、プログラミング教育ロボットはこちら!
Scrattino3はアナログ入力ピンを代用できない
Scrattino3(スクラッチーノ3) は、Scratch3.0の拡張機能としてArduino制御ブロックが追加されたプログラミングツールです。
残念ながらScrattino3はアナログ入力ピンをデジタル入出力ピンとして使用することができませんでした。
ビジュアルプログラミング上では一見、問題なくプログラム条件が成立しているように見えます。
しかしながら旗マークを押してプログラムを実行すると、エラーを示すポップアップウィンドウが表示されました。
押しボタンを押してみましたが、LEDは点灯しませんでした。
Scrattino3はArduinoUNO以外の機種選択ができないため、機種変更の対策もできません。
Arduino IDEまたは、mBlockにてプログラム作成することで対策が可能です
Scrattino3(スクラッチーノ3)に関しては、こちらの記事にて詳しく説明しています。
まとめ
- デジタル入出力ピンが不足したら、アナログ入力ピンを代用可能
- ピン番号指定は「A0~A5」または「14~19」を使う
- Scrattino3はアナログ入力ピンを代用できない
文字列プログラミングの「Arduino IDE」と、ビジュアルプログラミングの「mBlock」がアナログ入力ピンをデジタル入出力ピンとして使用することが可能です。
ビジュアルプログラミングでも対応できるなんて、嬉しいです!
使えるピン数が増えるとできることも増えて楽しいですね
最後まで読んでいただき、ありがとうございました。
遊びが勉強に変わる前に!小学生にこそおすすめしたいのがロボット教室です!
ビジュアルプログラミングツール「Scrattino3」を使った電子工作例を紹介しています。
スクラッチプログラミングを学習するのにおすすめな勉強本をレビューしています。
文字列プログラミングで勉強したい人はこちらの記事をごらんください!
コメント