時間を操作するときにdelay関数をよく使いますが、これを使うとdelayで指定した時間が経過するまで、プログラムが止まってしまいます。メインのプログラムは動かし続けた状態で、 時間を計測したい場合は、割り込みタイマーを使うと良いです。 目次 Timerの種類MsTimer2FlexiTimer2プログラム Timerの種類 Arduino Unoは、AVR ATmega328Pというマイコンを搭載しており、このマイコンにはTimer0, Timer1, … [もっと読む...] about ArduinoでSTEM教育 応用編:割り込みタイマーで時間を計測する
Arduino
ArduinoでSTEM教育 応用編:WAV音源をデータ変換して圧電スピーカから出力する
効果音のような短い音源であれば、SDカードやシールド等を使用しなくても、音源をソースコードに埋め込んで、圧電スピーカから出力することができます。プログラムサイズが容量オーバーしないように、音質を落とす必要がありますが、利用できる機会は多いと思います。 WAV音源を準備する まずは音源を準備する必要があります。ネットで購入するのが、一番お手軽だと思います。国内サイトだとAudioStock、海外サイトだとAudioJungleがメジャーです。先日、AudioJungleで効果音を2ドルで購入しました。支払いはPayPalで行いました。購入前に音を再生することができますので、色々聴き比べて選ぶことができます。購入したファイルはMP3形式だと思うので、フリーソフト等でWAV形式に変換してください。このあたりの情報は、検索するとたくさん出てきます。 … [もっと読む...] about ArduinoでSTEM教育 応用編:WAV音源をデータ変換して圧電スピーカから出力する
ArduinoでSTEM教育 応用編:XBee(ZigBee)で無線通信
長距離通信を行う場合、Bluetoothは電波が届かないので、WiFiやZigBeeを使用します。XBeeモジュールを使用すると、手軽に環境を構築できます。Arduino2台を1対1でZigBee通信する方法について紹介します。 XBeeとZigBeeについて XBeeは米Digi社の商標で、各種無線通信規格に対応したモジュールが販売されています。よく使用される通信規格は、WiFiとZigBeeです。ZigBeeは聞いたことがないかもしれませんが、電気的な基礎仕様はIEEE802.15.4で規格化されており、それより上位の層はZigBeeアライアンスが使用策定を行っています。 WiFiはアクセスポイントを経由して、インターネットに接続することを主な目的としていることに対して、ZigBeeやBluetoothは機器間を接続して情報を相互通信 … [もっと読む...] about ArduinoでSTEM教育 応用編:XBee(ZigBee)で無線通信
ArduinoでSTEM教育 基礎編:デジタル入力フィルタ
センサの入力信号は、ノイズ成分が含まれる場合がほとんどです。このノイズをソフトで除去する方法がデジタルフィルタです。今回は、代表的なローパスフィルタ、Mean(平均)フィルタ、Median(中央)フィルタのプログラム方法を紹介します。 ローパスフィルタ(RCフィルタ) ローパスフィルタは、周波数が低い信号を通して、周波数が高い信号を遮断します。また、このフィルタはRCフィルタとも呼ばれます。電気回路でローパスフィルタを作るときは、下記のような回路構成で、抵抗(R)とコンデンサ(C)を使用します。 これを式で表します。ある時刻tにおけるフィルタ出力値Voutは、係数をaとして、センサ入力値をVinとすると、下記のようになります。 Vout[t] = a * Vout[t-1] + (1-a) * … [もっと読む...] about ArduinoでSTEM教育 基礎編:デジタル入力フィルタ
ArduinoでSTEM教育 基礎編:センサのキャリブレーション
センサはいろいろな種類がありますが、どんなものにも誤差が生じます。この誤差をできるだけ小さくするために、キャリブレーション(校正、調整)を行います。例えば、ライントレースカーの場合だと、床材が異なると反射率も異なるので、その環境下でデータを取って、制御閾値を調整する必要があります。このようなセンサデータを処理プログラムする方法を紹介します。 起動時にキャリブレーションする方法 起動時時に実行されるsetup関数内で、基準となるラインを計測して、それをもとに閾値やヒステリシスを設定します。 ヒステリシスについて、簡単に説明します。例えば、照度センサの閾値を500に設定して、500以下だとLEDを点灯、501以上だとLEDを消灯するプログラムを作るとします。照度センサから入力される値は、常に微小に上下しているため、500や501といった値 … [もっと読む...] about ArduinoでSTEM教育 基礎編:センサのキャリブレーション