インプットデバイス・アプトプットデバイス


インプットデバイス(センサー)

周辺環境情報を取得し送信する。
人間でいったら「感覚器官」。耳や目、皮膚など。
デジタルセンサーとアナログセンサーがあり、デバイスそのものは、
デジタルはHIGHかLOW(0か1)などの数値を離散的に返し、
アナログは0〜1023などの値を概ね電圧を使い連続的に返す。
デバイスによっては,デジタル信号を返すものもある。

getSensVal

センサーで情報を取得し,パソコンのシリアルポートから値を受け取ってみる

事前準備

  1. 電源を入れていない状態で,センサーをArduinoにつなぐ
  2. センサーから出てきている線は3本
  3. それぞれ以下のような配置
  4. ジャンパー線を使って,Arduinoと接続する信号はA0

!写経!

//getSensorVal

void setup() {
  // 9600bpsで通信をするように,シリアルポートを初期化
  Serial.begin(9600);
}

void loop() {
  // アナログピン0(A0)の値を読み,セットバリュー変数に格納
  int sensorValue = analogRead(A0);
  // 読み込んだ値をシリアルポートに(IDEで読める形で)送信
  Serial.println(sensorValue);
  // 安定的に値を読めるように,1/1000秒まつ
  delay(1);
}
        

アップロード&値を取得

  1. 先ほどの手順と同様に検証後のアップロード
  2. 組み込みLEDがフラッシュしたら、エディタの左側にある"Monitor"を開く

task


アウトプットデバイス(アクチュエーター)

命令に合わせて何かしらの仕事をし出力する。
人間で言ったら、筋肉や声帯など。
DCモータは電流から磁場を発生し回転運動に変え、
サーボモータは上記と仕事+信号を受け取りた上で、位置(角度)の制御が可能。
ディスプレイは液晶などを使い図形を描ける。
スピーカーは音が出て、LEDは光るという仕事をそれぞれ行える。

helloServo

ContinuousRotationServo(連続回転サーボ)を動かしてみる

事前準備

  1. 電源を入れていない状態で,サーボをArduinoにつなぐ
  2. サーボから出てきている線は3本
  3. それぞれ以下のような配置
  4. ジャンパー線を使って,Arduinoと接続する信号はD10

!写経!

//helloServo(continuousRotation)

// ライブラリの読み込み
#include 
// サーボオブジェクトを作る
Servo myservo;
//中間位置を設定
const int neutral = 95;

void setup () {
  myservo.attach(10);  // サーボの信号ピンをD9に
}

void loop () {
  // 時計回り高速
  myservo.write(neutral - 90);
  delay(2000);
  // 停止
  myservo.write(neutral);
  delay(1000);
  // 反時計回り高速
  myservo.write(neutral + 90);
  delay(2000);
  // 停止
  myservo.write(neutral);
  delay(1000);
   // 時計回り低速
  myservo.write(neutral - 10);
  delay(2000);
  // 停止
  myservo.write(neutral);
  delay(1000);
  // 反時計回り低速
  myservo.write(neutral + 10);
  delay(2000);
  // 停止
  myservo.write(neutral);
  delay(1000);
}
        

サーボはどうやって制御されている?