【初心者向け】ソレノイドで電子工作 ~プログラミング編~ | ソレノイドどんどん!

ソレノイドどんどん!

無名の電気部品ソレノイド、だけどたくさん使われているのだ

新製品デモ機「たこ焼きPON☆PON」作り方紹介のシリーズ、
今回はプログラミング編です。

4:プログラミング編1
  プログラミング編2



今回はArduinoでのプログラミングを紹介します。

ソレノイドを動かすのは電気を入れればいいだけなんですが、自動的に動かすには「制御」が必要です。
制御ができなくて、ソレノイド挫折した方もいらっしゃるのでは?

まずは、Arduino専用ソフトをインストールしましょう!
https://www.arduino.cc/en/Main/Software

(インストール方法は、検索するといろんなブログでわかりやすく説明されていますよ!)


では、たこ焼きポンポンのプログラミングを部分的に説明していきますね!

C言語の紹介って感じかもです。

プログラミングの完成版は、プログラミング編2をご覧ください。

ここから、だらだら書いていきますが、

digitalWrite(sol1,HIGH) ・・・ソレノイド1に電流が流れる 
digitalWrite(sol2,LOW)  ・・・ソレノイド2に電流が流れない
delay(dh)                  ・・・指定した時間だけとまる
                  例)dh=1000 なら1秒とまる
                  Arduinoはミリ秒で入力するようです
for(i=0;i<☆;i++)      ・・・☆の回数だけ反復

ということをおさえておいてください。


まず、ピンとソレノイドをつなげます。
初めに名前を付けないとあとのプログラミングができません。


int sol0=0; 
ソレノイド0は0番のピンにつながりました。

この要領ですべてのソレノイドをつなげます。
int sol1=1;
int sol2=2;
int sol3=3;
  ・
  ・
  ・
int sol17=17;


たこ焼きポンポンでは6パターンの動きをプログラミングしています。

・全部動く
・左から右へ1列ずつ動く
・右から左へ1列ずつ動く
・ランダムに動く
・外から内へ渦巻きに動く
・内から外へ渦巻きに動く

言葉で言うより、動画を見てもらうとわかりやすいか。。


1.全部(all)

全部のソレノイドを1回だけ動かします。

void allHIGH() {
  digitalWrite(sol0,HIGH); 
  digitalWrite(sol1,HIGH);
   ・
  ・
  ・
  digitalWrite(sol16,HIGH);
  digitalWrite(sol17,HIGH);
}


これだけでは電流が流れっぱなしなので、
次に、電気を切るプログラムを入れます。

void allLOW() {
  digitalWrite(sol0,LOW); 
  digitalWrite(sol1,LOW);
   ・
  ・
  ・
  digitalWrite(sol16,LOW); 
  digitalWrite(sol17,LOW);
}


これで、1回だけソレノイドが動きます!



2.左から右(LR)


この3つを動かします


  digitalWrite(sol0,HIGH); 
  digitalWrite(sol1,HIGH);
  digitalWrite(sol2,HIGH);
  delay(dh);             
  digitalWrite(sol0,LOW); 
  digitalWrite(sol1,LOW);
  digitalWrite(sol2,LOW);
  delay(dl);            
  

これを2回くりかえしたいので、先頭にfor文を1行加えます

for(i=0;i<2;i++){          
  digitalWrite(sol0,HIGH); 
  digitalWrite(sol1,HIGH);
  digitalWrite(sol2,HIGH);
  delay(dh);
  digitalWrite(sol0,LOW); 
  digitalWrite(sol1,LOW);
  digitalWrite(sol2,LOW);
  delay(dl);
  }


以下のプログラムで左から右へ縦1列ずつ動作します。

void LR() {
  dh=100;
  dl=dh*4;
  
  for(i=0;i<2;i++){
  digitalWrite(sol0,HIGH); 
  digitalWrite(sol1,HIGH);
  digitalWrite(sol2,HIGH);
  delay(dh);
  digitalWrite(sol0,LOW); 
  digitalWrite(sol1,LOW);
  digitalWrite(sol2,LOW);
  delay(dl);
  }
    
  ・
  ・
  ・
  ・

  for(i=0;i<2;i++){
  digitalWrite(sol15,HIGH); 
  digitalWrite(sol16,HIGH);
  digitalWrite(sol17,HIGH);
  delay(dh);
  digitalWrite(sol15,LOW); 
  digitalWrite(sol16,LOW);
  digitalWrite(sol17,LOW);
  delay(dl);
  }


3.右から左

右の列から2のパターンを入れていきます。
void RL() {
  dh=100;
  dl=dh*4;
  
  for(i=0;i<2;i++){
  digitalWrite(sol15,HIGH); 
  digitalWrite(sol16,HIGH);
  digitalWrite(sol17,HIGH);
  delay(dh);
  digitalWrite(sol15,LOW); 
  digitalWrite(sol16,LOW);
  digitalWrite(sol17,LOW);
  delay(dl);
  }

  ・
  ・
  ・
  ・

 for(i=0;i<2;i++){
  digitalWrite(sol0,HIGH); 
  digitalWrite(sol1,HIGH);
  digitalWrite(sol2,HIGH);
  delay(dh);
  digitalWrite(sol0,LOW); 
  digitalWrite(sol1,LOW);
  digitalWrite(sol2,LOW);
  delay(dl);
  }
}


4.ランダム(wave)


digitalWrite(sol0,HIGH);
  digitalWrite(sol6,HIGH);
  digitalWrite(sol7,HIGH);
  digitalWrite(sol14,HIGH);
  digitalWrite(sol15,HIGH);
  delay(d);
  digitalWrite(sol0,LOW);
  digitalWrite(sol6,LOW);
  digitalWrite(sol7,LOW);
  digitalWrite(sol14,LOW);
  digitalWrite(sol15,LOW);

動かしたいソレノイドだけこのように入力していきます。


5.外から内(spin)

外側から中心に向かって追いかけっこをする動きです。


d=100;
  digitalWrite(sol0,HIGH);
  delay(d);
  digitalWrite(sol0,LOW);
  digitalWrite(sol3,HIGH);
  delay(d);
  digitalWrite(sol3,LOW);
  digitalWrite(sol7,HIGH);
  delay(d);
  digitalWrite(sol7,LOW);
  digitalWrite(sol11,HIGH);
  delay(d);
  digitalWrite(sol11,LOW);


6.内から外(spinN)

中心まできたら、今度は逆回りです。



d=100;
  digitalWrite(sol5,HIGH);
  delay(d);
  digitalWrite(sol5,LOW);
  digitalWrite(sol9,HIGH);
  delay(d);
  digitalWrite(sol9,LOW);
  digitalWrite(sol13,HIGH);
  delay(d);


プログラミングは敷居が高いけど
まずは既存のプログラムをコピーして使ってみるといいかも。
ぼちぼち勉強していこうと思いました、、、

にほんブログ村

にほんブログ村

にほんブログ村