もうすぐ0.1㌧

株式会社スマレジの営業部(首都圏)で働く中の人のブログ

Vol.95 アルコールディスペンサーを作りたいPart3

こんばんは。

株式会社スマレジ 首都圏営業部のキタショウです! 

 


サーボモーターを動かす



 

サーボモーターを動かす】
f:id:kitashow:20210829153254j:plain

さらに昨日の続きです。

※途中から見て頂いた方は是非最初から見てください
sma-ktsw.hatenablog.com

昨日の記事で実現した、
・超音波センサーを動作させて距離として結果を返す
に付け加えて、「結果を返す」の部分で「サーボモーターを動かす」
という動作を組み込んでみたいと思います。

今回もまずは動画をご覧ください。

youtu.be



箱を近づけると青い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);
}


では、本日はこの辺りで。