前提
Arduino初心者です。よろしくお願いいたします。
Arduinoにおいて、二つのモーターを条件ごとに動かしたいと考えています。
シリアルモニタを利用し、1が入力したら正転、2が入力したら逆転というようにしたいです。
この際、1を入力したあとも、2を入力したら正転から逆転するようなプログラムにしたいです。
1と2で判別は出来ますが、再度入力しても正転から逆転とならず困っております。
よろしくお願いいたします。
該当のソースコード
const int IN1 = 3;
const int IN2 = 4;
const int IN3 = 5;
const int IN4 = 6;
const int ENA = 9; // PWM制御で使うENAピンをD9に(モーター1のPWM制御ピン)
const int ENB = 10; // PWM制御で使うENBピンをD10に(モーター2のPWM制御ピン)
int data = 0;
int i = 0;
int step = 5;
void setup(){
pinMode(IN1, OUTPUT); // デジタルピンを出力に設定
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
Serial.begin(9600);//シリアル通信開始、転送速度は9600ビット/秒
}
void loop(){
if (Serial.available() > 0) {
data = Serial.read();//シリアル通信で受け取ったデータを読み込む
if (data == '1') {
digitalWrite(IN1, HIGH); //
digitalWrite(IN2, LOW); // モータ1を正転
analogWrite(ENA, 100); // Duty 78.4%でモータ1を回転させる
digitalWrite(IN3, HIGH); //
digitalWrite(IN4, LOW); // モータ2を正転
analogWrite(ENB, 100); // Duty 78.4%でモータ2を回転させる
// digitalWrite(IN1, HIGH); //
delay(5000);
} if (data == '2') {
digitalWrite(IN1, LOW); //
digitalWrite(IN2, HIGH); // モータ1を逆転
analogWrite(ENA, 200); // Duty %でモータ1を回転させる
digitalWrite(IN3, LOW); //
digitalWrite(IN4, HIGH); // モータ2を逆転
analogWrite(ENB, 200); // Duty %でモータ2を回転させる
// digitalWrite(IN1, HIGH); //
delay(5000);
}
}
delay(1000);
}
回答1件
あなたの回答
tips
プレビュー