• ベストアンサー

arduinoのsetup()について

現在,arduino uno R3によって,モータドライバTA7291Pを通して,DCモータを制御しております. arduinoにスケッチを送った直後にDCモータを回転させないようにするにはどうすればよいでしょうか? setup()関数の中で,モータドライバの入力端子2つにつながっているarduinoの端子2つを出力に設定した上で,これらの端子の出力をHIGHにしました. しかし,arduinoにスケッチを送った直後はDCモータが回転してしまいます. ご教授のほどよろしくお願いいたします.

質問者が選んだベストアンサー

  • ベストアンサー
  • koujikuu
  • ベストアンサー率43% (428/992)
回答No.1

arduino はリセット直後数秒はパソコンとの通信待機状態になり、内蔵プログラムを実行しません またマイコン初期状態は入力ポートで HIGH / LOW 不定になります、その為TA7291P IN1,IN2入力ピンを10KΩ程度でプルアップし、IN1=H , IN2=H (モーターブレーキ設定)にしておきます setup() でも先に digitalWrite(IN1,HIGH);digitalWrite(IN2,HIGH); でポートの状態を確定してから、pinMode(IN1,OUTPUT);pinMode(IN2,OUTPUT); 出力ポートに切換えます

marimmo-
質問者

お礼

ご回答ありがとうございます. arduinoが内蔵プログラムを実行しない時間があるのですね. プルアップによる解決法を試してみます. これからもよろしくお願いいたします.

関連するQ&A

  • Arduinoのスケッチでエラーがでてしまいます。

    【電子工作関連】Arduinoでボタンを押すとランダムに3つのモーターのうち一つが回転するというスケッチを書きたいのですが、エラーが出てしまいます。どこが間違っているのでしょう? Arduinoで、ボタンを押すとランダムに3つのモーターのうち一つが回転するというスケッチを書きたいのですが、コンパイル使用とすると、 「error: expected unqualified-id before numeric constant」 というエラーが出てしまいます。 どこが間違っているのでしょう? 下がそのスケッチです。 なお、モータードライバにはTA7291Pを使用。 信号ピンである5番6番ピンをArduino5~10番ピンに振り分けて、それぞれにモーターを接続、 電源やGNDは共有してます。 なお、ボタンを使わず、単純に3つのモーターのうち一つが回転するというというスケッチは出来ていて、実際にその通り動いています。 ------------------------------ //3つのモーターをランダムに動かす int val = 0 //入力ピンの状態がこの変数に記憶される void setup(){ pinMode(2,INPUT); //ボタンを入力に設定 pinMode(5,OUTPUT); //モーター(1)のドライバー5番ピンを出力に設定 pinMode(6,OUTPUT); //モーター(2)のドライバー5番ピンを出力に設定 pinMode(7,OUTPUT); //モーター(3)のドライバー5番ピンを出力に設定 pinMode(8,OUTPUT); //モーター(1)のドライバー6番ピンを出力に設定 pinMode(9,OUTPUT); //モーター(2)のドライバー6番ピンを出力に設定 pinMode(10,OUTPUT); //モーター(3)のドライバー6番ピンを出力に設定 } void loop(){ val = digitalRead(2); //入力を読み取りvalに格納 if (val == HIGH){ digitalWrite(random(5,8),HIGH);//ランダムにモーターを正回転させる } else { digitalWrite(5,LOW); digitalWrite(6,LOW); digitalWrite(7,LOW);//モータを止める } }

  • Arduinoでランダムにモーターを回したい

    【電子工作関連】Arduinoでボタンを押すたびに、ランダムに3つのモーターのうち一つが回転するというスケッチを書きたいのですが、ランダムになりません。どうすればランダムになるでしょう? 下がそのスケッチです。 今のところ、3つ全てのモーターが回ってしまいます。 なお、モータードライバにはTA7291Pを使用。 信号ピンである5番6番ピンをArduino5~10番ピンに振り分けて、それぞれにモーターを接続、 電源やGNDは共有してます。 なお、ボタンを使わず、単純に3つのモーターのうち一つが回転するというというスケッチは出来ていて、実際にその通り動いています。 ------------------------------ //3つのモーターをランダムに動かす int val = 0; //入力ピンの状態がこの変数に記憶される void setup(){ pinMode(2,INPUT); //ボタンを入力に設定 pinMode(5,OUTPUT); //モーター(1)のドライバー5番ピンを出力に設定 pinMode(6,OUTPUT); //モーター(2)のドライバー5番ピンを出力に設定 pinMode(7,OUTPUT); //モーター(3)のドライバー5番ピンを出力に設定 pinMode(8,OUTPUT); //モーター(1)のドライバー6番ピンを出力に設定 pinMode(9,OUTPUT); //モーター(2)のドライバー6番ピンを出力に設定 pinMode(10,OUTPUT); //モーター(3)のドライバー6番ピンを出力に設定 } void loop(){ val = digitalRead(2); //入力を読み取りvalに格納 if (val == HIGH){ digitalWrite(random(5,8),HIGH);//ランダムにモーターを正回転させる } else { digitalWrite(5,LOW); digitalWrite(6,LOW); digitalWrite(7,LOW);//モータを止める } }

  • arduinoとDCモーターとポテンショメーターな

    arduinoとDCモーターとポテンショメーターなどを使って、DCモーターのフィードバック制御をしようと思っています。DCモーターのモータードライバーとして、モーターシールド( https://www.amazon.co.jp/Arduino-A000079-モータシールド-Rev3/dp/B00THGHNEE )を使う場合、モーターシールドがarduinoを全て覆ってしまうので(arduinoのピンがモーターシールドによって塞がれてしまうので)、ポテンショメーターの出力信号などはarduinoに取り込めないのでしょうか? よろしくお願い致します。

  • Arduinoとモータドライバのつなぎ方...

    卒論でDCブラシレスモータをArduinoで制御することにしました。 ArduinoとDCブラシレスモータ、モータドライバは以下のものを購入しています。 プログラムについてまだまだ勉強不足で申し訳ないのですが、Arduinoとモータドライバのつなぎ方をどのようにしてよいかイマイチよくわかっていません... 申し訳ありませんが、お詳しい方教えてください。 ・ArduinoMega2560 ・EC45flatΦ42.8mm ブラシレス50Watt(DCブラシレスモータ) ・DECModule50/5(モータドライバ)

  • arduinoでファンを回したい

    先日arduino UNO R3 というマイコンを入手しました。 これを使ってファンを回そうと思ったのですが上手く行きません。 1.5vの単三電池を3つ直列にして電気を流したらファンは勢いよく回りました。 ファンはDC ブラシレスモータと言うもので、DC 5V、0.45wと書かれています。 マイコンの出力電圧は5Vなので出力ピンとGNDにつないだら動くと思うのですが電圧をかけた瞬間に少し動こうとして止まります。 10ミリ秒感覚でHIGHとLOWを繰り返したら、ゆっくりですか回りました。 上手にモータを回すにはどうすればいいのでしょうか? 完全な初心者なので、根本的な勘違いをしていたらすみません。 よろしくお願いします。

  • 【Arduino】モーターが最高速でも遅い

    Arduinoからブラシレスモータを4つ制御しようとしています。 Arduinoと4つのモータドライバを繋げ、各モータドライバとモータを繋げています。 モータドライバのSet Value Speedというピンに0~5Vの電圧をかければそれに応じた回転数が得られる事になっています。 しかし、5Vをかけてもモータの本来の最高速の1/3くらいしか得られません。 Set Value Speedにかける電圧を徐々に上げていくと、0.5Vくらいまでは回転数が上がっていくのですがそれ以降は変化しません。 使用しているのは以下の通りです。よろしくお願い致します。 Arduino: Arduino UNO モータドライバ: maxon DEC Module 50/5 http://www.maxonjapan.co.jp/media_releases_10284.html http://www.maxonjapan.co.jp/manual/dec/DEC%20Module50-5_J(380200).pdf モータ: maxon EC 22 100W http://www.maxonjapan.co.jp/media_releases_10331.html http://www.maxonjapan.co.jp/products/datasheets/151.pdf ギアヘッド: maxon GP22 HP http://www.maxonjapan.co.jp/products/datasheets/224.pdf

  • Arduinoで三つのDCモータをPWM制御する

    初めまして,初心者です.ぜひ教えて頂きたいです. Arduino Mega 2560 で三つのDCモータをPWM制御したいですが,なかなかできません. モータードライバも使います(一個ずつ). ぜひアドバイスを頂きたいです. 宜しくお願いします

  • arduinoでミスト機を自作したい

    Arduinoで、本を見ながら複数LEDを光らせた程度の初心者です。 小さいミスト機(面A4サイズx幅7cm)を自作しようと思うのですが、タンクの水(250ml)が無くなる少し前(残量5ml~10ml)に、メールで知らせてくれる機能はどのようにすると良いでしょうか? 必要なパーツ、スケッチ、概要を教えてください。 あとタイマーについての質問ですが、これから自作するiPhoneアプリを使って、Bluetooth-Arduino UNOで、タイマーを制御することはできますか? (Arduino FIOが無線に最適のようですが、Arduino UNOでも基盤にUSB端子を付けて、ノートパソコンにつけるBluetoothのミニ端子つけるとできそうな気もなんとなくするのですが、出来ないものなのでしょうか。。。)

  • Arduinoによるモーター制御

    Arduino microとモータードライバを用いてモーターを制御しようと考えています。なるべくモーター制御機構を小さくしたいので外部電源を取り付けたくないのですが、外部電源がない場合Arduinoがショートしてしまうことはありますでしょうか? また、どれくらいの電圧、電流だと大丈夫なのかを調べるにはどのように計算をすればいいのでしょうか?

  • モータドライバ PWMブレーキ

    夏休みの自由研究でDCモータドライバを使う部分がありまして(モータドライバIC  http://akizukidenshi.com/download/ta8428k(s).pdf )センサが左右に2つ有りその出力でICの制御端子をON/OFFし片方がHiになった場合Hi側の方に回転し両方Hiの場合はブレーキにしたいと思っています。 そこで速度制御にPWMを使うのですがブレーキにするときはPWMのままで大丈夫なのでしょうか? 発振回路は共通なのでタイミングは同じだと思うのですが・・・ webをさがしてもだいたいがマイコンを使っているのでよくわかりませんでした。