出席も参考程度にとります初回の時にふわっとしか話せておらず、前回質問されたので改めて書いておきます。成績については前期と後期で1回ずつ簡単な課題を出そうと思っています。課題メインですが、出席も一応取ります。各部品について解説アクチュエータ=出力部品についてセンサーは現実で起きていることを「数値」に置き換える装置アクチュエータはその逆で、数値を何らかのエネルギーとして出することができる前回のセンサーに続き、今回はアクチュエータをいくつか触ってみようと思います。センサーは起きている事を数値=電気信号に置き換える装置であるということは前回話しましたが、アクチュエータはその逆で、電気エネルギーを別のエネルギーに変換するための装置です。代表的なものとしてはLED・スピーカー・モーターなどです。LEDやスピーカーは小さいものならArduinoから簡単な制御ができるので、今日はこの2つを実際に触ってみますが、その前に先週の復習も兼ねてArduinoについてもう少し詳しく解説していこうと思います。Arduinoの「ピン」アナログ入力ピンデジタルピン電源・GNDなどその他システムピン前回も使ったArduinoの黒いソケット部分ですが、穴のひとつひとつを「ピン」と呼びます。中には金属のバネが入っていて、これが回路を通じてArduinoのマイコンと電気的に繋がっています。ピンにも種類があるのですが、大きくアナログ入力ピン・デジタルピン・その他のピンに分けて説明します。アナログ入力ピンUNOではA0~A5までの6本0~5Vまでの電圧を0~1023までまず前回使ったアナログピンですが、これはUNOの場合A0からA5までの6本のピンがあって、同時に使うことができます。0~5Vまでの電圧を0~1023までの1024段階で計測することができます。電圧の高さは、基準電圧によって決まる。デフォルトでは5VAREFピンとanalogReference関数でより低電圧で細かい入力も可能ちなみに補足すると、5Vというのはデフォルトの値なのでここは変更することが可能です。(5V以上には設定できない)AREFピンに基準となる電圧を加えて、analogReference関数で設定を変更することで例えば0~1Vの範囲を1023段階で刻むなど、より細かいパラメータを見ることができるようにもなります。できる入出力とも0(=0V)か1(=5V)の二種類しか区別することができないなんちゃってアナログ出力「PWM」が使えるピンがいくつかあるそして今日使うのが、13本あるデジタルピンです。アナログピンは入力だけなのですが、デジタルピンは入力と出力を切り替えて使うことができます。このデジタルピンは0か1の2種類の状態にしかなれません。出力はArduinoの場合、0Vか5Vを出す事ができ、入力の場合は、2.5V周辺を境目に、それより高いか低いかで0か1の数値を取ることができます。微妙な変化を取ることは難しいですが、スイッチを使う時なんかは6個しかないアナログ入力ピンを使わずにデジタル入力ピンを使えば良いわけです。このデジタルピンには番号にチルダ(~)が付いているものもあります。これらのピンには「PWM」という技があって、コレを使うと「アナログ出力っぽい」ことができるのですが、それについては後述します。その他のピン外部の部品に電源を供給したい時に便利なVIN/GNDピンRESET・AREF・IOREFTXD・RXDはなるべく使わないようにするのがオススメ最初のうち主に使うピンはデジタルピンとアナログピン、そしてPOWERと書かれている電源ラインのピンになってくると思います。VIN/5V/3V3はそれぞれ所定の電圧が出ているピンです。5Vはそのまま5V、3V3は3.3Vの事で、VINは電源のプラスに直結していますが、USBを使っている限りはここからも5Vが出ています。RESETピンはArduinoのプログラムを最初からやり直すためのピンで、自動で再起動させたい時などに使います。AREFは先ほど補足したピンで、IOREFはデジタル入力の基本電圧5Vが流れているだけなので、殆ど使う事はないでしょう。あとは0番・1番ピンを見るとTXD・RXDと書かれたピンがあります。これはデータ通信用のピンでUSB側とも繋がっています。ここを埋めてしまうとプログラムを書き込めない場合があったりするので、使うピンが少ないうちは使わない方が何かと便利です。補足ArduinoUNOはUSBじゃなくてもACアダプタから5~12Vの電源でも動作可能VCCが電源電圧、5V3Vはレギュレータに繋がっているVINについてもう少し詳しく説明すると、ArduinoにはUSB以外に外部のACアダプタを接続するポートがついていて、こっちの電源で動作できるようにもなっています。電源からきた電圧は一度レギュレータと呼ばれる部品によって5Vまで落とされてArduinoのCPU部分に供給されるようになっています。こちらは推奨最大12Vまで突っ込めるようになっており、高い電圧で動くモーターのような部品を1つの電源で動かしたい時などはこっちを使うと便利です。その場合5Vピンからは5V、VINピンからは12Vが出てくるということになります。LEDを点灯してみる結線&書き込みそれではLEDを点灯させてみようと思います。図のように結線をしたら、以下のコードを記述して前回同様Arduinoにアップロードしていきます。1秒ごとにLEDが点滅したら成功です。digitalWriteというのが、デジタル出力をするための「関数」と呼ばれるものです。Arduinoのプログラムについては次回じっくりやっていこうと思っていますが、ここではdigitalWriteの後のカッコに命令の詳細を書いていて、「9番ピンをデジタル出力のHIGH/LOWにする」という意味を持っています。HIGHの時には9番ピンの電圧が5Vに、LOWの時は0Vに変化します。その次のdelayというのはディレイ=遅延という意味で、指定した数値のミリ秒分何もせずにプログラムを停止させます。ここでは1000ミリ秒な1秒止まってはHIGH、1秒止まってはLOWという具合に切り替えることで、LEDの点滅を繰り返しています。delay(1000);}PWM出力をしてみるデジタルピンからPWM出力を試す点滅だけでは少し味気ないので、先ほど少し触れたPWMを使ってもう少し気の利いた表現をしてみましょう。今のスケッチは後で使いたいので、好きな名前で保存しておいてください。保存したら新しいスケッチを立ち上げて、今度は以下のようなコードを書きます。かっこの数が多いので注意しながら書いてみてください。コーディングできると、LEDがふわふわと点滅します。Modulation(パルス幅変調)デジタルのHIGHとLOWを高速に切り替えて、間を表現している漫画のトーンに近いイメージdigitalWriteの時は消えてるか点いているかハッキリしてましたが、今度のプログラムではanalogWriteという関数を使いました。これは0~255の数字を指定すると、0~5Vの中間の電圧を指定できるものです。ここでは、Arduinoのプログラムが実行されてからの時間millis()関数と、三角関数であるサイン関数を使って0~255の間を上下するようなプログラムを書いています。これはPWM(パルス幅変調)という方式で、デジタルのHIGHとLOWを目に見えないスピードで高速に切り替えながら、その割合を変化させることで中間の電圧がかかっているように振る舞うというものです。iPhoneのハイスピードカメラで見ると、チラつきが見えたりします。漫画のスクリーントーンを想像してもらうと分かりやすいと思います。漫画雑誌の印刷は通常白か黒の2色だけで印刷しているのですが、黒をものすごく細かくまばらに点在させることで見せかけのグレーを表現しています。それと同じで、HIGH=5Vにしている時間をまばらにすることで「見せかけの低電圧」を作っているということです。PWMはケース次第で使えない綺麗な「アナログ出力」はコストが上がるPWMではないアナログ出力はDACと呼ばれるそのため、LEDなどで諧調のある表現をする分には問題ないのですが、スピーカーやモーターなど一部の部品についてはこのPWMでは都合の悪い場合が出てきます。厳密な原理はまだそこまで理解しなくても大丈夫ですが、あくまで「それっぽいアナログ出力」として認識しておいた方が良いでしょう。補足:何故こんな回りくどいやり方をするかというと、基本的にデジタルの世界であるマイコンでアナログ電圧を出力するというのは地味に部品数が多くなって、コストがかさむ傾向があります。ケース次第で使えないといいつつ、大抵のことはPWMで十分対応ができるので、アナログ出力はデジタルピンでPWMしてくださいよ、ということになってるんですね。ちなみにPWMではなく純粋なアナログ電圧を出力する方法はDAC(Digital-Analog-Convert)と呼ばれます。DAWをやってたりすると聞く言葉かもしれません。電子工作ではこのDAC専用のICをArduinoと通信させて扱うというような事ができるので、それもいずれ解説していこうと思います。同様にスピーカーも試してみます同じように、スピーカーも試してみましょう。先ほどと同じように9番ピンとGNDに、圧電スピーカーを接続します。スピーカーの場合抵抗は必要ありません。LEDの時に保存したプログラムを再利用しますが、delayの値2か所を1000から1に変更します。簡単な方法ですが、圧電スピーカーから矩形波が出てきます。delayの値を変えると周波数が変わるので、音程が変わってきます。圧電素子LED前回説明を省略してしまったカーボン抵抗とLED、圧電素子について説明しようと思います。原則、部品には抵抗を付ける。(電流=電圧÷抵抗)電子部品の多くは、単体では殆ど抵抗が無い(0ではない)ように作られています。抵抗値(Ω)で決まるので、そのまま電源やICに直結すると大量の電流が流れてしまいます。条件によって流したい電流は変わってくるので、その都度必要な電流を流すための抵抗値を差し込んであげる必要があります。直結についてLEDを直結した図もたまにあるが、よくは無いGNDに向かう線は、原則一度は抵抗があるようにするまれにArduinoにLEDを直接差してる図や写真があったりしますが、あまりよろしくありません。最近のLEDが多少電流を多く流しても壊れにくくなったというのと、オームの法則とは別にArduinoのデジタル出力からは20mAしか流せないという条件からこういうことが出来てしまうのですが、LEDとArduino両方の寿命を縮めることになります。GNDに向かっていく線をたどった時には原則として抵抗が存在しているように回路を組みましょう。電圧をかけると形が変化する薄い膜状の素材(水晶など)が使われるこの素材が、スピーカーのコーンに当たる役割を持っている続いてスピーカーとして使った圧電素子について。これは電圧をかけると形が変化する膜状の素材が使われていて、それがコーンの代わりになって音を出すことができます。そのためあまり繊細な表現はできませんが、簡単な電子音を鳴らすブザーなどによく使われています。ピエゾは電流が流れない電圧で押し込むようなイメージコンデンサなど「電流が流れない」部品も一定数存在する一般的なスピーカーはこの限りではない先ほど回路には原則抵抗を入れるという話をしましたが、ピエゾには抵抗を入れませんでした。これは何故かというと、ピエゾの線には電流が流れず、電圧が加わるだけで形が変化するためです。このように電流が流れない部品も一部あって、コンデンサなどが代表的な例ですが、そういう時には特に抵抗が必要ない場合が多いです。気を付けたいのが一般的なコーンの入っているスピーカーは全く違う原理で動くためこの限りではないので、電流のコントロールは必須です。電流の入り口「アノード」と、出口「カソード」がある電球と違い流れる方向は一方向LEDは今や電子部品に限らず照明としても超定番の素子です。白熱電球や蛍光灯よりも少ない電流でより明るい光を出す事ができて、発熱も少ないので寿命も長いためです。Diode=LED」という名前がついています。ダイオードなので電源側を接続する「アノード」と、GND側に接続する「カソード」があります。今日使った砲弾型のLEDの場合は大抵片方の線が長くなっていて、長い方がアノードというのが定番になっています。補足:足の長さで分かるようになっているので、配線の都合で切ってしまったりすると分からなくなることが多くありますが、そういう時は中の金属部分を見ると分かることがあります。素子の小さい方がアノード側になっていることが多いので、大量に切って使ったりする時は参考にすると良いでしょう。今日使ったのは単色の青色LEDでしたが、当然色々なLEDがありますし、1個の樹脂に3色のLEDが封入されたフルカラーLEDというのも存在します。1個あたりの値段が100円しないものも多くあるので、色々買って試すだけでも楽しいと思います。LEDをたくさん使ってコントロールしたい時に便利なWS2812、通称NeoPixelと呼ばれるLEDがあるのでそれの制御についても解説しようと思います。IDEのコーディングについてTinkerCADを使ってやってみます次回ですが、ArduinoIDEのコーディングについてやっていきたいと思います。ソフトウェアが中心になるので、TinkerCADを使ってみようと思います。コメントをキャンセルメールアドレスが公開されることはありません。