teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

プログラムの説明の記入

2021/08/10 08:24

投稿

jake0228
jake0228

スコア16

title CHANGED
File without changes
body CHANGED
@@ -1,31 +1,29 @@
1
1
  ```c
2
+ //HC-SR04を設定
2
3
  #define trigPin A4
3
4
  #define echoPin A5
4
-
5
+ //2つのモーターを定義
5
6
  #include <AFMotor.h>
6
7
  AF_DCMotor motor1 (1);
7
8
  AF_DCMotor motor4 (4);
8
-
9
+ //間隔、距離
9
10
  long duration;
10
11
  int distance;
11
- bool bolMotor1;
12
- bool bolMotor4;
13
12
 
13
+
14
14
  void setup(){
15
+ //HC-SR04を設定
15
16
  pinMode(trigPin, OUTPUT);
16
17
  pinMode(echoPin, INPUT);
17
18
  Serial.begin(9600);
18
-
19
- bolMotor1 = false;
19
+ //モータのスピードを設定する
20
- bolMotor4 = false;
21
-
22
20
  motor1.setSpeed(200);
23
21
  motor4.setSpeed(200);
24
-
22
+ //モータを停止させる
25
23
  motor1.run(RELEASE);
26
24
  motor4.run(RELEASE);
27
25
  }
28
-
26
+ //HC-SR04で距離を測定する
29
27
  void loop(){
30
28
  uint8_t i;
31
29
  digitalWrite(trigPin, LOW);
@@ -35,10 +33,7 @@
35
33
  digitalWrite(trigPin, LOW);
36
34
  duration = pulseIn(echoPin, HIGH);
37
35
  distance = duration*0.034/2;
38
- Serial.print("Distance = ");
36
+ //距離が25センチ以上の時は前進、それ以下の場合はモータ4を逆回転させる
39
- Serial.print(distance);
40
- Serial.println("cm");
41
-
42
37
  if (distance >= 25){
43
38
  motor1.run(FORWARD);
44
39
  motor4.run(FORWARD);

1

プログラムの追加

2021/08/10 08:24

投稿

jake0228
jake0228

スコア16

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,55 @@
1
- ```c++
1
+ ```c
2
+ #define trigPin A4
3
+ #define echoPin A5
4
+
5
+ #include <AFMotor.h>
6
+ AF_DCMotor motor1 (1);
7
+ AF_DCMotor motor4 (4);
8
+
9
+ long duration;
10
+ int distance;
11
+ bool bolMotor1;
12
+ bool bolMotor4;
13
+
14
+ void setup(){
15
+ pinMode(trigPin, OUTPUT);
16
+ pinMode(echoPin, INPUT);
17
+ Serial.begin(9600);
18
+
19
+ bolMotor1 = false;
20
+ bolMotor4 = false;
21
+
22
+ motor1.setSpeed(200);
23
+ motor4.setSpeed(200);
24
+
25
+ motor1.run(RELEASE);
26
+ motor4.run(RELEASE);
27
+ }
28
+
29
+ void loop(){
30
+ uint8_t i;
31
+ digitalWrite(trigPin, LOW);
32
+ delayMicroseconds(5);
33
+ digitalWrite(trigPin, HIGH);
34
+ delayMicroseconds(10);
35
+ digitalWrite(trigPin, LOW);
36
+ duration = pulseIn(echoPin, HIGH);
37
+ distance = duration*0.034/2;
38
+ Serial.print("Distance = ");
39
+ Serial.print(distance);
40
+ Serial.println("cm");
41
+
42
+ if (distance >= 25){
43
+ motor1.run(FORWARD);
44
+ motor4.run(FORWARD);
2
- コード
45
+ }else{
46
+ motor1.run(FORWARD);
47
+ motor4.run(BACKWARD);
48
+ }
49
+
50
+
51
+ delay(1);
52
+ }
3
53
  ```arduino にモーター制御シールドをつけ、DCモータ2個と超音波距離センサーを接続して、障害物を回避する車を作るためのプログラムを作成いたしました。
4
54
  プログラムはエラーはなく、実際にarduinoに転送して動作もできております。
5
55
  お伺いしたことは、以下に記したプログラムをさらに簡易にすることができるのかということです。