ステッピングモータ 28BYJを距離センサHC-SR04を用いて制御するために、以下のコードを書いています。ものが検出されたら、ステッピングモータが回るという感じです。各センサは単独では動くのですが、合わせると動きません。
Arduino
1//distance sensor 2#define echoPin 2 // Echo Pin 3#define trigPin 3 // Trigger Pin 4 5double Duration = 0; //受信した間隔 6double Distance = 0; //距離 7 8//stepping moter 9int Pin0 = 10; 10int Pin1 = 11; 11int Pin2 = 12; 12int Pin3 = 13; 13 14void setup() 15{ 16 Serial.begin( 9600 ); 17 pinMode( echoPin, INPUT ); 18 pinMode( trigPin, OUTPUT ); 19 20 pinMode(Pin0, OUTPUT); 21 pinMode(Pin1, OUTPUT); 22 pinMode(Pin2, OUTPUT); 23 pinMode(Pin3, OUTPUT); 24} 25void loop() { 26 //distance sensor 27 digitalWrite(trigPin, LOW); 28 delayMicroseconds(2); 29 digitalWrite( trigPin, HIGH ); //超音波を出力 30 delayMicroseconds( 10 ); // 31 digitalWrite( trigPin, LOW ); 32 Duration = pulseIn( echoPin, HIGH ); //センサからの入力 33 if (Duration > 0 && Distance <= 5.0) { 34 Duration = Duration / 2; //往復距離を半分にする 35 Distance = Duration * 340 * 100 / 1000000; // 音速を340m/sに設定 36 Serial.print("Distance:"); 37 Serial.print(Distance); 38 Serial.println(" cm"); 39 40 delay(500); 41 42 for (int i = 0; i < 30; i++) { 43 digitalWrite(Pin0, LOW); 44 digitalWrite(Pin1, LOW); 45 digitalWrite(Pin2, LOW); 46 digitalWrite(Pin3, HIGH); 47 delay(3); 48 digitalWrite(Pin0, LOW); 49 digitalWrite(Pin1, LOW); 50 digitalWrite(Pin2, HIGH); 51 digitalWrite(Pin3, LOW); 52 delay(3); 53 digitalWrite(Pin0, LOW); 54 digitalWrite(Pin1, HIGH); 55 digitalWrite(Pin2, LOW); 56 digitalWrite(Pin3, LOW); 57 delay(3); 58 digitalWrite(Pin0, HIGH); 59 digitalWrite(Pin1, LOW); 60 digitalWrite(Pin2, LOW); 61 digitalWrite(Pin3, LOW); 62 delay(3); 63 } 64 digitalWrite(Pin0, LOW); 65 digitalWrite(Pin1, LOW); 66 digitalWrite(Pin2, LOW); 67 digitalWrite(Pin3, LOW); 68 delay(900); 69} 70}
回答1件
あなたの回答
tips
プレビュー