下手の横好きのスクラップブック!!

下手の横好きの、いろいろな記録です。
電子工作・PIC・Arduino・太陽光発電・写真などetc

Arduino用モータードライブシールド「Arudumoto」でモーターを回す(3)

2014-01-22 | Arduino

電源スイッチ・スタートスイッチ・LEDの取り付け
 ユニバーサルプレート上にユニバーサル基板を利用して、電源スイッチとブレッドボードを取り付け。 
 さらに、ブレッドボードを使ってスタートボタンとLEDランプを取り付け配線をします。

電源スイッチ
 電源スイッチはArduinoとモーター用電源をそれぞれ単独で入り切りできるように取り付けました。

 Arduinoにプログラムをアップロードする時や、モーターを別電源で駆動する時に使います。

ブレッドボード 
 ブレッドボードは、今後回路等を仮り接続して実験や調整できるように小さいものを取り付けました。

スタートスイッチ
 現状では電源が入ると即スタートする状態なので、スケッチ上でスイッチの ON/OFF を判断してスタートできるように回路の追加とスケッチの変更を行いました。
 スイッチはブレッドボード上にタクトスイッチを取り付けて、デジタル7番ピンに接続します。

LEDランプ
 プログラム動作状態でLEDランプが点滅するように、LED回路をデジタル6番ピンに追加します。

配線



スケッチ
 各動作をサブルーチンから読み込むように大幅に変更となりました。
 スタートスイッチが押されるとLEDランプが点灯し、約2秒経過後 Fedein  forward  fadeout  backward の順に回転し  stoppedで停止します。
 最後にLEDランプを消灯してスタートスイッチの入力待ちになります。
 void Loop内のサブルーチンを入れ替えると回転方向や回転モードを変えることができます。また、forward  backward の引数の値を変えることにより回転速度と  回転時間が変わります。

//モーターピン設定
 int pwm_a = 3;
 int dir_a = 12;
 int pwm_b = 11;
 int dir_b = 13;

//スタートスイッチ LEDピン設定
 int ST_SWITCH = 7;
 int LED = 6;

//サブルーチン
void forw()
 {
 digitalWrite(dir_a,HIGH);
 digitalWrite(dir_b,HIGH);
 }

void back()
 {
 digitalWrite(dir_a,LOW);
 digitalWrite(dir_b,LOW);
 }

void forward(int mspeed,int mtime)
 {
 digitalWrite(dir_a,HIGH);
 digitalWrite(dir_b,HIGH);
 analogWrite(pwm_a,mspeed);
 analogWrite(pwm_b,mspeed);
 if(mtime > 0){
  delay(mtime);
  analogWrite(pwm_a,0);
  analogWrite(pwm_b,0);
  }
 }

void backward(int mspeed,int mtime)
 {
 digitalWrite(dir_a,LOW);
 digitalWrite(dir_b,LOW);
 analogWrite(pwm_a,mspeed);
 analogWrite(pwm_b,mspeed);
 if(mtime > 0){
  delay(mtime);
  analogWrite(pwm_a,0);
  analogWrite(pwm_b,0);
  }
 }


void stopped()
 {
 digitalWrite(dir_a,LOW);
 digitalWrite(dir_b,LOW);
 analogWrite(pwm_a,0);
 analogWrite(pwm_b,0);
 }

void fadein()
 {
 for(int i=0;i<=200;i+=1){
 analogWrite(pwm_a,i);
 analogWrite(pwm_b,i);
 delay(30);
 }
 }

void fadeout()
 {
 for(int i=200;i>=0;i-=1){
 analogWrite(pwm_a,i);
 analogWrite(pwm_b,i);
 delay(30);
 }
 }

void astop()
 {
 analogWrite(pwm_a,0);
 }

void bstop()
 {
 analogWrite(pwm_b,0);
 }
 
void setup()
  {
  //ピンモード設定
   pinMode(pwm_a, OUTPUT);
    pinMode(dir_a, OUTPUT);
 
   pinMode(pwm_b, OUTPUT);
    pinMode(dir_b, OUTPUT); 
 
  pinMode(ST_SWITCH,INPUT);
  pinMode(LED,OUTPUT);
   }


void loop()
   {

   while(1){
 if(digitalRead(ST_SWITCH)==LOW)break;
 }

  digitalWrite(LED,HIGH);

   delay(2000);

forw();
fadein();
delay(1000);
forward(50,5000);
delay(1000);
fadeout();
backward(100,5000);
fadeout();
stopped();

digitalWrite(LED,LOW);

 }


 

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Arduino用モータードライブシ... | トップ | Arduino用モータードライブシ... »
最新の画像もっと見る

コメントを投稿

Arduino」カテゴリの最新記事