Skip to content

Instantly share code, notes, and snippets.

@likersacademia
Last active August 28, 2018 14:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save likersacademia/1964012e3f9192d3da6266cf526396ee to your computer and use it in GitHub Desktop.
Save likersacademia/1964012e3f9192d3da6266cf526396ee to your computer and use it in GitHub Desktop.
// 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