Vol.95 アルコールディスペンサーを作りたいPart3
こんばんは。
株式会社スマレジ 首都圏営業部のキタショウです!
・サーボモーターを動かす
【サーボモーターを動かす】
さらに昨日の続きです。
※途中から見て頂いた方は是非最初から見てください
sma-ktsw.hatenablog.com
昨日の記事で実現した、
・超音波センサーを動作させて距離として結果を返す
に付け加えて、「結果を返す」の部分で「サーボモーターを動かす」
という動作を組み込んでみたいと思います。
今回もまずは動画をご覧ください。
箱を近づけると青いLEDが点灯し、かつサーボが動きます。
動画を取った後確度の調整と、1回の動作で2回動作するようにしました。
コードは下記の通りです。
#include<Servo.h>
Servo servo;//サーボはservoとする
double tim=0;
double distance=0;
int echoPin=2;
int trigPin=3;
int led=13;void setup()
{
Serial.begin(9600);//シリアルモニターの定義
pinMode(echoPin,INPUT);//入力
pinMode(trigPin,OUTPUT);//出力
pinMode(led,OUTPUT);//出力
servo.attach(10);//10番ピンにオレンジ
}void loop()
{
digitalWrite(trigPin,LOW);//超音波を発射
delayMicroseconds(2);
digitalWrite(trigPin,HIGH);
delayMicroseconds(10);
digitalWrite(trigPin,LOW);
tim=pulseIn(echoPin,HIGH);//超音波の反射波を受信
if(tim>0)//超音波受信までの時間を半分にして、音速からcmを算出
{
distance=tim*0.017;
}
if(distance<=8)//8cm以下だった場合以下の動作をする
{
digitalWrite(led,HIGH);
servo.write(90);//90度回転
delay(200);
servo.write(0);//0度に戻す
delay(150);
servo.write(90);//90度回転
delay(200);
servo.write(0);//0度に戻す
delay(150);
}else{//それ以外(距離が8cm以上)の場合の処理
digitalWrite(led,LOW);
servo.write(0);
}
Serial.print("distance: ");//シリアルモニタへの出力
Serial.print(distance);
Serial.println("cm");
delay(1000);
}
では、本日はこの辺りで。