ここから本文です

Arduino UNOについてです。

gbj********さん

2020/6/2514:17:35

Arduino UNOについてです。

#include <Servo.h>
Servo myservo;
int swpin = 3;
int ledpin = 5;
void setup() {
// put your setup code here, to run once:
pinMode(swpin , INPUT);
pinMode(ledpin , OUTPUT);
myservo.attach(10);
}

void loop() {
// put your main code here, to run repeatedly:
int sw_status;
int ang;
sw_status = digitalRead(swpin);
if(sw_status == HIGH){
digitalWrite(ledpin , HIGH);
ang=0;
for(ang = 0; ang <= 180; ang++){
myservo.write(ang);
delay(30);
}
ang=180;
for(ang = 0; ang <= -180; ang--){
myservo.write(ang);
delay(30);
}
digitalWrite(ledpin , LOW);
}

}

サーボモータをタクトスイッチを押している間だけ0度-180度までゆっくり動き、180度-0度までゆっくり戻るようなプログラムを作ってるんですが、何故か180度まで動いた後、素早く0度まで戻ってしまいます。どうしたらいいでしょうか。

while文でやると何故か永遠に動作してしまうのでif文を使っています。

補足swpinはスイッチのピンで
ledpinはLEDのピンです。(動作確認用)

閲覧数:
7
回答数:
1

違反報告

ベストアンサーに選ばれた回答

nac_tnkさん

2020/6/2515:00:23

やっている事が0→180度のみです。
つまり、
> for(ang = 0; ang <= -180; ang--) {
で、(0<=-180)は偽になりますから何も行われません。

180度→0度ですから
for(ang = 180; ang >= 0; ang--) {
でしょうね。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

本文はここまでです