日本と海外

日本と海外の国の比較と名古屋愛知情報

arduino 2

少し複雑にしたスケッチである。

障害物までの距離を測りながら動く。

距離はつないだパソコンの画面で見える。

ほとんどを変数化してvoid setup()の前にグローバル変数とした。

だから、値は変えられる。

まとめてあるので、探し回る必要もない。ただ変数名が何を示すのかを覚える必要がある。

本当は説明文が必要である。(//以降は説明文だ。

voidの中で使う変数はローカル変数で他のvoidでは使えない。

 

----------------------------------------------

#include <Stepper.h>
const int sPin1 = 4;
const int sPin2 = 8;
int mati0 = 500;
int hayasa0 = 180;//速さ、整数倍で360
int kaitensu = 100; //1回転のステップ数 整数倍で360
int nagasa0 = 100;
int tuusin = 9600;
Stepper myStepper0(kaitensu, sPin1, sPin1 + 1, sPin1 + 2, sPin1 + 3);
Stepper myStepper1(kaitensu, sPin1, sPin2 + 1, sPin2 + 2, sPin2 + 3);
//---------------------
int TRIG = 3;
int ECHO = 2;
double duration = 0;
double distance = 0;
double speed_of_sound = 331.5 + 0.6 * 25; // 25℃の気温の想定
//---------------------
void setup() {
  //------------------------
  digitalWrite(TRIG, LOW);
  delayMicroseconds(2);
  digitalWrite( TRIG, HIGH );
  delayMicroseconds( 10 );
  digitalWrite( TRIG, LOW );
  duration = pulseIn( ECHO, HIGH ); // 往復にかかった時間が返却される[マイクロ秒]
  //-------------------------------
  myStepper0.setSpeed(hayasa0);
  myStepper1.setSpeed(hayasa0);
  pinMode(ECHO, INPUT );
  pinMode(TRIG, OUTPUT );
  Serial.begin(tuusin);
}
void loop() {
  for (int i = 0; i <= nagasa0; i++) {
    digitalWrite(TRIG, LOW);
    delayMicroseconds(1);
    digitalWrite( TRIG, HIGH );
    delayMicroseconds( 1 );
    digitalWrite( TRIG, LOW );
    duration = pulseIn( ECHO, HIGH ); // 往復にかかった時間が返却される[マイクロ秒]

    duration = duration / 2; // 往路にかかった時間
    distance = duration * speed_of_sound / 10000;
    Serial.print("Distance:");
    Serial.print(distance);
    Serial.println(" cm");
    //******************
    if (distance < 10) {
      myStepper0.step(kaitensu);
      myStepper1.step(kaitensu);
    }
    else if (distance < 10) {
      myStepper0.step(kaitensu);
      myStepper1.step(kaitensu);
    }
    delay(mati0);
    for (int i = 0; i <= nagasa0; i++) {
      //if (duration > 0) {
      duration = duration / 2; // 往路にかかった時間
      distance = duration * speed_of_sound * 100 / 1000000;
      Serial.print("Distance:");
      Serial.print(distance);
      Serial.println(" cm");
      //}
      myStepper0.step(-kaitensu);
      myStepper1.step(kaitensu);
    }
    delay(mati0);
  }
}