地域密着型エリア広告配信リクルートの地域密着型広告ドコイク?アドネットワーク Ads by ドコイク?[無料でホームページを作成] [通報・削除依頼]
[無料でホームページを作成] [通報・削除依頼]
婚活

2016年11月 のアーカイブ

2016年11月13日 13時09分49秒 (Sun)

Arduinoロータリエンコーダ(KY-040)の実験

ロータリエンコーダ(KY-040)を使った実験です。ロータリエンコーダは回転角度や回転速度を測るために用いられるもので、詳細は英語ですが下記に書かれています。
//henrysbench.capnfatz.com/henrys-bench/arduino-sensors-and-input/keyes-ky-040-arduino-rotary-encoder-user-manual/

KY-040は下のようなものです。
img_20161113-131741.jpg
配線は、(Arduino)−(KY-040)で、3番ピン―CLK、4番ピン―DT、5V―+、GND―GNDです。
ここで示すスケッチは上のURLで紹介されているものと同じですが、日本語での解説を加えています。

int pinA = 3;  // KY-040のCLKにつなぐ
 int pinB = 4;  // KY-040のDTにつなぐ
 int encoderPosCount = 0; //カウント数
 int pinALast; //前回の最後のピンAの値(初期値) 
 int aVal;
 boolean bCW;//時計回り(1)か、そうでないか(0)

 void setup() { 
   pinMode (pinA,INPUT);
   pinMode (pinB,INPUT);
   pinALast = digitalRead(pinA); //ピンAの状態は前回の最後の位置を表す(初期値)  
   Serial.begin (9600);
 } 

 void loop() { 
   aVal = digitalRead(pinA);//ピンAの状態を読み込む
   if (aVal != pinALast){ // 読み込んだピンAの値が初期値と違う場合は回転している
     // 回転方向を決めるためにピンBの状態を調べる
     if (digitalRead(pinB) != aVal) {  
      // ピンBの値がピンAと異なる場合はピンAが先に値が変わったことになり、時計回りと判断される
       encoderPosCount ++; //時計回りの場合はカウントを増やす
       bCW = true; //時計回り
     } else {// そうでなければ反時計回りと判断される
       bCW = false; //反時計回り
       encoderPosCount--; //反時計回りではカウントは減らす
     }
     Serial.print ("Rotated: ");
     if (bCW){
       Serial.println ("clockwise");
     }else{
       Serial.println("counterclockwise");
     }
     Serial.print("Encoder Position: ");
     Serial.println(encoderPosCount);
     
   } 
   pinALast = aVal;
 } 

実験の様子です。

2016年11月12日 15時24分55秒 (Sat)

Arduino ジョイスティック(KY-023)の実験

ジョイスティックはゲームなどでよく用いられるポインティングデバイスです。下のような形をしています。
img_20161113-152831.jpg
x軸方向に倒すとx軸の値が0〜1023の間で、y軸方向に倒すとy軸の値が0〜1023の間で変わるのですが、このジョイスティックは少し倒しただけで0または1023になってしまうようで、精密な調整は難しそうです。また、中央を押すとz軸になっており、押している間は出力がLOWになります。

配線は、(Arduino)―(ジョイスティック)で、3番ピン―SW、A0ピン―VRx、A1ピン―VRy、5V―+5V、GND―GNDです。

スケッチは、

// KY023
int JoyStick_X = A0; // x軸はA0につなぐ
int JoyStick_Y = A1; // y軸はA1につなぐ
int JoyStick_Z = 3; // z軸は3番ピンにつなぐ

void setup ()
{
  pinMode (JoyStick_X, INPUT);
  pinMode (JoyStick_Y, INPUT);
  pinMode (JoyStick_Z, INPUT_PULLUP);
  Serial.begin (9600); // 9600 bps
}
void loop ()
{
  int x, y, z;
  x = analogRead (JoyStick_X); //x軸の読み込み
  y = analogRead (JoyStick_Y); //y軸の読み込み
  z = digitalRead (JoyStick_Z); //z軸の読み込み
  Serial.print (x, DEC); //x軸の値の10進数表示
  Serial.print (",");
  Serial.print (y, DEC); //y軸の値の10進数表示
  Serial.print (",");
  Serial.println (z, DEC); //z軸の値の10進数表示
  delay (100);
}

実験の様子は
です。

2016年11月10日 6時27分58秒 (Thu)

無重力実験に向けて

前回、加速度センサについて書いたのですが、宇宙に関連する応用として、無重力実験があります。 無重力になっていることの確認に、加速度センサは欠かすことができません。

無重力は投げ上げたり、自由落下させているときに生み出すことができます。そこで、Arduinoを取り付けた加速度計を、電池駆動としてSDカードにデータを書き込むようにして投げ上げ実験を行ってみました。

Arduinoの装置としてはしたのようなものですが、これを袋に入れ、屋外で投げ上げて実験を行いました。
img_20161111-144251.jpg
前回の加速度センサに加えて、マイクロSDカードモジュールの結線は、GND―GND、5V―VCC、12番ピン―MISO、11番ピン―MOSI、13番ピン―SCK、4番ピン―CSになります。
 
実験に使ったスケッチは

//加速度計 KXR94-2050
#include <SPI.h>
#include <SD.h>

int CS_PIN = 4;
File file;
float t=0.0;

void initializeSD()
{
  if (SD.begin(CS_PIN))
  {
    Serial.println("SD card is ready to use.");
  } else
  {
    Serial.println("SD card initialization failed");
    return;
  }
}

float acc(byte pin)
{
  return(analogRead(pin)*5.0/1023.0-2.5);
}


void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
    initializeSD();
}

void loop() {
  // put your main code here, to run repeatedly:
   t+=0.01;
    file = SD.open("161111.csv", FILE_WRITE);
  if(file){
    file.print(t);file.print(", ");
    file.print(acc(A5));file.print(", ");
    file.print(acc(A4));file.print(", ");
    file.println(acc(A3));
    file.close();
  }  
  else
  {
    Serial.println("Failure!");
  }     
  delay(10);
}

としました。データごとの待ち時間を10msにしているので、サンプリング時間も同じ0.01秒として書き込んでいます。

実験の様子を下に示します。
投げ上げられている時間は1秒程度ですが、今回の実験データをグラフにしてみると、下のようになりました。0.7〜1.1秒で無重力になっていて、約0.4秒空中にあったことになります。グラフでは、サンプリング時間を10msとしていますが、SDカードへの記録時間を考慮していないので、もう少しサンプリン時間に長い間隔あるのかもしれませんね。
img_20161111-145923.jpg
 

2016年11月7日 19時54分59秒 (Mon)

Arduino 加速度計 KXR94-2050

加速度計を使って、振動を測定してみましょう。使用する加速度計は秋月電子で購入したKXR94-2050(850円)です。
//akizukidenshi.com/catalog/g/gM-05153/

外観は
img_20161107-200945.jpg
のようなもので、基板付きで1p角くらいです。

配線は、5V―1番ピン、5V―2番ピン、GND―3番ピン、GND―5番ピン、A3―6番ピン、A4―7番ピン、A5―8番ピンです。

スケッチは、1Vあたり1G、オフセットが2.5Vで、ArduinoのAD変換が10bit(=1023)で10Vなので。以下のようになります。

//加速度計 KXR94-2050

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.print(" x= "); Serial.print(acc(A5));
  Serial.print(" y= "); Serial.print(acc(A4));
  Serial.print(" z= "); Serial.println(acc(A3));
  delay(100);
}

float acc(byte pin)
{
  return(analogRead(pin)*5.0/1023.0-2.5);//単位はG
}

実験の様子を下に示します。

2016年11月5日 20時36分48秒 (Sat)

小型マイコンArduinoを使って生活を豊かに!

400円で買える小型マイコンArduino互換機の基礎(買い方、統合開発環境のインストール、LEDや光抵抗センサを使った基本的実験)とセットで買える37センサ・効果器のうち、現在までに23のモジュールについて、線のつなぎ方・スケッチ(Arduinoのプログラム)も具体的に示して説明をしてきています。

多くの人に知ってもらって、試してみてもらいたいです。この記事のシェアもよろしくお願いします。
ぜひご覧ください。

//www5.hp-ez.com/hp/tottyiwata/page21/index
 
img_20160911-084325.jpg


プロフィール

プロフィール画像
ニックネーム
宇宙技術汎用化トレーナー 岩田 敏彰
性別
男性
血液型
A型

ブログ

12345
6789101112
13141516171819
20212223242526
27282930
QRコード
携帯用QRコード
アクセス数
ページビュー数