Last active
August 28, 2018 14:59
-
-
Save likersacademia/1964012e3f9192d3da6266cf526396ee to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 15センチ以上で、スイッチが押されると、モーターが回転し、ブザーが鳴るプログラム | |
#include <Servo.h> //サーボモーターを動かす関数を用意します | |
#define echoPin 5 //D5に、ピンが入っている。これが1つめのINPUT※距離センサー | |
#define trigPin 6 //D6に、ピンが入っている。これが1つめのINPUT※距離センサー | |
#define buttonPin 12 //これが2つめのINPUT※スイッチ | |
//追加したいときは、何番に、なんのピンが刺さっているのかを確認してください。消したいときは、文章そのまま消してください。光センサーのときは、#define cdsPin (番号)になります。 | |
//次に、OUTPUTです。 | |
#define moterPin 3 //D3に、ピンが入っている。これが1つ目のINPUT※モーター | |
#define buzzerPin 2 //D2に、ピンが入っている。これが2つ目のINPUT※ブザー | |
//追加したいときは、何番に、なんのピンが刺さっているのかを確認してください。消したいときは、文章そのまま消してください。LEDのときは、#define ledPin (番号)になります。 | |
//INPUT,OUTPUTで使用するものの設定を行います。 | |
double Duration = 0; //受信した間隔です。距離センサーをいれるときは、この文章をいれます。 | |
double Distance = 0; //距離です。距離センサーをいれるときは、この文章をいれます。 | |
Servo myservo; //モーターをいれるときは、この文章をいれます。 | |
bool buttonState = 0;//スイッチを設定するときは、この文章をいれます。 | |
void setup() { | |
Serial.begin(9600); //これを追加するとシリアルモニター(画面右上の虫眼鏡のマーク)をみるときは、これを設定してください。※スクーミーでは、必ずいれてください。 | |
//つぎに、使いたいアイテムの文章を入れてください。ここでは、距離センサーとスイッチを使うので、2種類入れています。光センサーを入れる時は、pinMode(cdsPin, INPUT);です。 | |
pinMode(echoPin,INPUT); //距離センサーをいれるときは、この文章をいれます。 | |
pinMode(trigPin,OUTPUT); //距離センサーをいれるときは、この文章をいれます。 | |
pinMode(buttonPin, INPUT); //スイッチを設定するときは、この文章をいれます。 | |
myservo.attach(moterPin,700,2300); //モーターをいれるときは、この文章をいれます。 | |
pinMode(buzzerPin, OUTPUT); //ブザーをいれるときは、この文章をいれます。 | |
} | |
void loop() { | |
//距離センサーをいれるときは、以下の長い文章をいれます。ここから・・・・ | |
digitalWrite(trigPin, LOW); | |
delayMicroseconds(2); | |
digitalWrite(trigPin, HIGH); //超音波を出力 | |
delayMicroseconds(10); | |
digitalWrite(trigPin, LOW); | |
Duration = pulseIn(echoPin, HIGH); //センサからの入力 | |
if (Duration > 0) { | |
Duration = Duration/2; //往復距離を半分 | |
Distance = Duration*340*100/1000000; //音速を340m/sに設定 | |
Serial.print("Distance:"); | |
Serial.print(Distance); | |
Serial.println("cm"); | |
//・・・ここまでです。このあとにスイッチの情報を追加します。 | |
} | |
buttonState = digitalRead(buttonPin); //スイッチを設定するときは、この文章をいれます。 | |
//・・・ここまでです。必要なINPUTの文字を追加しましょう。 | |
//ifのあとから自由に変更できるところです。 | |
if(Distance>15 && buttonState == HIGH) //Distance(距離)>15センチ &&(あと) buttonState == HIGH(ボタンが押されたら)です。15センチより遠くて、スイッチが押されたら何かが起こる仕組みの命令文です。 | |
{ | |
myservo.write(700); //700はモーターが一番早く回る数値です。時計回り(when 1450~700 µsec) 逆時計回り(when 1550~2300 µsec) 1500に近い方が回転がおそくなる | |
digitalWrite(buzzerPin, HIGH); //ブザーがなる(ブザーをいれるときは、この文章をいれます。) | |
delay(200); //ここの数200も変更してみましょう。上の文字とセットで使います。 | |
} | |
else //もしそれ以外であれば、下の動作が起きます。 | |
{ | |
myservo.write(1500); //1500はモーターが止まる数値です | |
digitalWrite(buzzerPin, LOW); //ブザーがとまる(ブザーをいれるときは、この文章をいれます。) | |
delay(200); //ここの数200も変更してみましょう。上の文字とセットで使います。 | |
} | |
} | |
//今回のお題は「暗くなったとき、距離30センチよりはなれたら、遅く回転していたモーターが回るのをやめ、明かりがつく」でした。このプログラムを変更して、お題の通りに動くプログラムを作成してみましょう。では、HPで「チャレンジする」を押してください。 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment