Arduino 7) 可変抵抗器でボリューム値を知る
2019.02.05
Arduinoはアナログピンの入力電圧を0~1023段階で測ることができます。
Arduinoの5Vを可変抵抗器につなげ、その抵抗の変化を読み取り数値化するのです。
可変抵抗は電圧をコントロールできます。
一般的に抵抗と言えば電圧が一定の場合は電流を制御するものというイメージがあります。
可変抵抗はキルヒホッフの第二法則を利用した分圧を行い電圧をコントロールできるのです。
Arduinoのアナログピンは0vで0、2.5Vで512、5Vで1023という値を返します。
では実際に読み取ってみます。
変化を目視するためにボードについているLEDを点滅させその速度で判断してみましょう。
配線はこのようにして
ソースは以下のようにします
int Denatu = 0;
void setup() {
Serial.begin( 9600 ); //シリアルモニタを使うときの儀式
pinMode(13, OUTPUT); //ボードのLEDを使用する
}
void loop() {
digitalWrite(13, HIGH); //LEDを光らせる
Denatu = analogRead(0); //A0ピンの電圧を測る0(0V)~1023(5V)
Serial.println(Denatu); //シリアルモニタに値を出力
delay(Denatu); //読み取った値分処理を止める1023=1.023秒
digitalWrite(13, LOW); //LEDを消す
delay(Denatu); //読み取った値分処理を止める1023=1.023秒
}
実行した結果はこちら
ダイヤルに合わせてLEDの速度が変化しているのがわかります。
TXのLEDがチカチカしているのはシリアルモニタと通信しているためです。
この仕組は頻繁に使われ応用される基礎なので、
自分自身の再確認のために記録を残しておきます。
Arduinoの5Vを可変抵抗器につなげ、その抵抗の変化を読み取り数値化するのです。
可変抵抗は電圧をコントロールできます。
一般的に抵抗と言えば電圧が一定の場合は電流を制御するものというイメージがあります。
可変抵抗はキルヒホッフの第二法則を利用した分圧を行い電圧をコントロールできるのです。
Arduinoのアナログピンは0vで0、2.5Vで512、5Vで1023という値を返します。
では実際に読み取ってみます。
変化を目視するためにボードについているLEDを点滅させその速度で判断してみましょう。
配線はこのようにして
ソースは以下のようにします
int Denatu = 0;
void setup() {
Serial.begin( 9600 ); //シリアルモニタを使うときの儀式
pinMode(13, OUTPUT); //ボードのLEDを使用する
}
void loop() {
digitalWrite(13, HIGH); //LEDを光らせる
Denatu = analogRead(0); //A0ピンの電圧を測る0(0V)~1023(5V)
Serial.println(Denatu); //シリアルモニタに値を出力
delay(Denatu); //読み取った値分処理を止める1023=1.023秒
digitalWrite(13, LOW); //LEDを消す
delay(Denatu); //読み取った値分処理を止める1023=1.023秒
}
実行した結果はこちら
ダイヤルに合わせてLEDの速度が変化しているのがわかります。
TXのLEDがチカチカしているのはシリアルモニタと通信しているためです。
この仕組は頻繁に使われ応用される基礎なので、
自分自身の再確認のために記録を残しておきます。
Arduino MEGA 2560 R3とセンサーシールドをドッキング
2018.08.10
Arduinoに接続するためのSSRを購入
2018.08.07
SSRとはソリッドステート・リレーの略で
簡単に言うと、半導体を使った無接点リレー。
高速高頻度のOn/Offが可能です。
Arduinoの処理能力を活かそうとした場合、高速切り替えに対応できるリレーが必要ですが、
一般的な電磁石を用いたものでは速度と耐久性が劣ります。安価で使いやすいけどね。
実際に届いたSSRはコレ↓です。
オムロン製のSSRを8列束ねたボードになります。
肝心な部分は国産なので動作は大丈夫でしょうが、
さすが中国製。組付けが適当だなぁ~(;´Д`)
接触不良なんてあったら困るので、
一応動作確認しておきますかねぇ。
8列全部に付いている2Aの抵抗ヒューズはすべて正常です。切れていませんでした。
これ、切らしたら面倒くさいなぁ・・・
とりあえす、Arduinoに以下のコードを書いて実験してみる
void setup() {
//動作確認のためのLED
#define LED_PIN 13
pinMode(LED_PIN, OUTPUT);
//リレーにつなげる配線
#define RELAY_LED 4
pinMode(RELAY_LED, OUTPUT);
//スイッチとしてボタンを使う。
pinMode(7,INPUT);
}
void loop() {
if (digitalRead(7) == HIGH) { //スイッチの状態を調べる
digitalWrite(LED_PIN, HIGH);
digitalWrite(RELAY_LED, HIGH); }
if (digitalRead(7) == LOW) { //スイッチの状態を調べる
digitalWrite(LED_PIN, LOW);
digitalWrite(RELAY_LED, LOW); }
}
押した時リレーがOnになるけど、Offにはならない・・・
全てのポートで試してみましたが同じ結果になるのでリレーの故障では無さそう。
はて、回路的なミスなのか、プログラム的なミスなのか・・・
そこで取り出したる、このボード
一般的な電磁石で動作するリレーも買ってあったのでした(ΦωΦ)キラーン
これに接続して実験してみると、
問題なく動作しました。
(前実験でズボラしたせいか赤LEDは焼損しちゃったので
写真では白LEDに変えて抵抗追加してます(;´Д`) )
ということはSSRの使い方に問題があるようです。
なんでだろ?って思って調べたら、
「出力素子のトライアックの特性により、オフするには一旦出力側の電流をゼロにする必要があります。
DC出力の場合には電流がゼロにならないため、出力側をオフできなくなります。」
って記述が・・
ああ、そう、つまり直流では使えないっすね。知りませんでした(;´Д`)
無知って怖いわぁ。
MEGA用のセンサーシールドを調べる
2018.07.27
私が買ったのはV2.0、売っている中では最新のものです。
このシールドについて、日本人が紹介しているブログって全然無いんですね。
買ったはいいものの特徴の全体がつかめてないのでテスタで遊んでみました。
外部電源はどこまでつながっているのか調査してしました。
結果は、ジャンパーピンを外すと赤マークをつけたところだけ
Arduinoの5Vが供給されるというのがわかりました。
つまりアナログピンはArduinoの5V供給が固定になっているのですね。
デジタルピンは外部電源(ピンク)から来ています。
あと赤マークをつけたところとピンクとの繋がりはありませんでした。
ジャンパーピンをつけた場合は、全てのVCC(5V)にArduinoの5Vが供給されています。
これは外部接続のVCCラインにも繋がっているということなので、
まちがってもジャンパーピンを挿した状態で電源の外部入力をおこなってはいけないですね。
Arduinoが壊れちゃいます。
Arduino MEGA センサーシールドを買ってみる。
2018.07.19
最近、私のArduino事情が忙しくなってきました。
この世界、あまり詳しくなくて、
まだまだ遊びがてら勉強しているレベルなのですが、
プログラムが組める人が周りにいないということで、
人並みのスキルを早急に身に着けなくてはならなくなった次第です。
内容的にはシーケンサーとほぼ同じことを要求されるわけですが、
何もかもが未経験。どこから手を付けて良いものかと悩んでいます。
その中で決定していることもいくつかあります。
デジタルピンの数が多くないと不便なのでMEGA 2560 R3を使うということ。
DUEもMEGAと同じくデジタルが54本使えるし、コアは32bit、
フラッシュメモリも倍の512KB、SRAMなんて12倍の96KBもあります。
クロックも高いので高速処理が期待できるので、性能だけで見ればDUEなんですが、
プロセッサが今までとは異色で、動かないソースがいくつかある模様。
リレーやセンサー群は5Vのものが多いので、動作電圧が3.3VのDUEは
素人の私が扱うには力不足かな?なんてことを考えてMEGAで勉強することにしました。
ちなみにamazonのリンクを上に貼りましたが、
AliExpress等のショップから買えば、1,500円未満で購入可能です。
互換品という所謂パチモノで良いなら、送料いれても1,000円未満です。
正規品を買ったつもりで互換品が届いたという事例も結構ありますが、
2~3週間という配達期間に我慢できるならオススメの買い方です。
amazonの価格で約4枚買える計算ですしね。
そして、このままではセンサーだのモーターだのLEDだのを付けるにしても
Arduinoに接続するのは不便です。他供給の電力を利用したり、
GNDを束ねたりするにはブレッドボードが必須になります。
↑コレですね。Arduinoを使うには基本中の基本なんですが、
でもね、これ部品が多くなると配線がぐちゃぐちゃのスパゲッティになってしまうんです。
構成部品が決まってて、パソコンで配置を整理してからならキレイにまとまるんですが、
試作レベルではショートを誘発しかねないので怖いです。
そこで、センサーシールドなる物も合わせて購入してみました。
シールドとは、ざっくりいうと拡張ボードらしい。
いろんな機能を追加する時に便利なボードで、
Arduinoにおんぶされるようにドッキングさせて使います。
私が買ったのは、配線をシンプルにまとめることができるボード。
ブレッドボードのように思いついたアイデアをすぐ実現するのに最適。
外部からの電源も簡単に接続できて、
横にあるジャンパーピンでショートさせると、Arduinoからの5V供給。
ジャンパーピンを外すと、外部供給になるようです。
Arduinoからの供給とはいっても、300ma以上は出せないようですし、
ジャンパーピンを付けることはまず無さそうですね。
このボードはレギュレータらしきものは付いてないので、
外部供給されたそのままの電圧がそれぞれのVCCに行くのだと想像します。
検証はこれからですが・・。
デジタルピン以外がイマイチわかりにくいので、↑整理してみました。
赤塗になってるデジタルピンは他のピンと役割が競合する可能性があるので、
さらに拡張する予定があるなら、使わないほうが無難という意味で塗っています。