質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

解決済

1回答

468閲覧

Arduino モータ動作

yyybbbyy

総合スコア13

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2022/08/17 07:16

前提

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);
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2022/08/17 07:39

提示のコードではどういう動作になっていて、それをどうしたいのか詳しく説明しよう 1で正転、2で逆転、で、そんでいいのでは。
ozwk

2022/08/17 08:03

2 → 1の順番だとどうなりますか?
yyybbbyy

2022/08/17 08:08

現状それで出来ていない為質問させていただきました。 2から1ですと2の動作はちゃんとできますが、1を入力しても2の動作を続けてしまいます。
yyybbbyy

2022/08/17 08:14

loop内においてif分を用いて1を入力で正転、2を入力で逆転としていて、1度入力すると再度数字を入力してもモータの動きが変わりません
guest

回答1

0

ベストアンサー

1,2で回転を変えたあと、5+1秒のディレイを入れてますが、そこらへんのはなしですかね。
十分に間隔を開けて、おくってみよう。

で、これでもダメなら、あとはハードの問題になるかと思われるので、回路図を提示しよう

投稿2022/08/17 08:40

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yyybbbyy

2022/08/17 09:39

ありがとうございます。delayをなくしたらうまくいきました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問