センサの入力信号は、ノイズ成分が含まれる場合がほとんどです。このノイズをソフトで除去する方法がデジタルフィルタです。今回は、代表的なローパスフィルタ、Mean(平均)フィルタ、Median(中央)フィルタのプログラム方法を紹介します。 ローパスフィルタ(RCフィルタ) ローパスフィルタは、周波数が低い信号を通して、周波数が高い信号を遮断します。また、このフィルタはRCフィルタとも呼ばれます。電気回路でローパスフィルタを作るときは、下記のような回路構成で、抵抗(R)とコンデンサ(C)を使用します。 これを式で表します。ある時刻tにおけるフィルタ出力値Voutは、係数をaとして、センサ入力値をVinとすると、下記のようになります。 Vout[t] = a * Vout[t-1] + (1-a) * … [もっと読む...] about ArduinoでSTEM教育 基礎編:デジタル入力フィルタ
アーカイブ 12月 2019
ArduinoでSTEM教育 基礎編:センサのキャリブレーション
センサはいろいろな種類がありますが、どんなものにも誤差が生じます。この誤差をできるだけ小さくするために、キャリブレーション(校正、調整)を行います。例えば、ライントレースカーの場合だと、床材が異なると反射率も異なるので、その環境下でデータを取って、制御閾値を調整する必要があります。このようなセンサデータを処理プログラムする方法を紹介します。 起動時にキャリブレーションする方法 起動時時に実行されるsetup関数内で、基準となるラインを計測して、それをもとに閾値やヒステリシスを設定します。 ヒステリシスについて、簡単に説明します。例えば、照度センサの閾値を500に設定して、500以下だとLEDを点灯、501以上だとLEDを消灯するプログラムを作るとします。照度センサから入力される値は、常に微小に上下しているため、500や501といった値 … [もっと読む...] about ArduinoでSTEM教育 基礎編:センサのキャリブレーション
Arduinoをビジュアルプログラミングする ~ Ardublock, BlocklyDuino, S4A, Scrattino, mBlock ~
Arduinoのプログラミングは、C/C++を学んだことがある人からすると、すんなりと入り込めると思います。しかし、多くの子供はキーボードを打つことさえ難しいのが現状です。そこで、登場するのがScratchのようにブロックを置いてプログラムする方法です。Arduino用にさまざまなツールが開発されていますので、それぞれの特徴について解説します。 なぜビジュアルプログラミング? 初めてプログラミングをする子供に学んで欲しいことは、自分のアイデアを形にして、トライ&エラーを繰り返し、より良いものを作り上げる楽しさです。プログラミングは、それを実現するための手段であり、習得することが目的では有りません。 テキストベースのプログラム … [もっと読む...] about Arduinoをビジュアルプログラミングする ~ Ardublock, BlocklyDuino, S4A, Scrattino, mBlock ~