2016年10月20日木曜日

Arduino と microSDカードモジュール 使ってみた

準備 
 ◆Arduino IDE (PCにインストール無料)

◆Arduino Uno (360円+送料170円)


Arduino IDE(PC) と Arduino Uno をつなぐUSBケーブル(100円+送料170円)


microSDカードモジュール (100円+送料170円)

microSDカード(299円+送料無料)

工作開始 
接続します

接続を確認します
確認1

確認2(Arduino Uno がつながっているポート)


スケッチを開きます

スケッチを変更します
 
const int chipSelect = 4;  →  const int chipSelect = 10;


シリアルモニタで見ます







2016年8月2日火曜日

Arduino と GY-521 MPU-6050 加速度 ジャイロ センサーモジュール 使ってみた

準備 
◆Arduino IDE(PCにインストール)

 ◆Arduino Uno(360円 + 送料170円)


◆USBケーブル AーBタイプ(100円 + 送料170円) 

◆GY-521 MPU-6050  加速度 ジャイロ センサーモジュール
・角速度と加速度と温度の検出
・VCC電圧は5V
・SCL、SDA電圧は3.3V
・SCL、SDA端子は 4.7kΩでpullUpされています
・MPU-6000詳細
・データーシート
・レジスタマップ


◆できれば、何か電圧レベル変換するもの(N-JFETを使った)


工作開始
◆ 接続します
(外部抵抗不要)GY-521 MPU-6050の SCL、SDA端子は 4.7kΩでpullUpされています
※(外部抵抗不要)Arduino の Wire ライブラリーを利用すると、内部の抵抗を利用して プルアップしてくれます

◆接続確認します
確認1

 確認2(Arduino Uno がつながっているポート)

 ◆スケッチを書きます
 


//An Arduino code by dd647
#include <Wire.h>
int GY521Address = 0b1101000;//pin AD0 is logic low
void setup() {
   Serial.begin(9600);
   Wire.begin();
    Wire.beginTransmission(GY521Address);
    Wire.write(0x6b);//Register_Name Power Management
    Wire.write(0b00000010);//Upon power up mode and Clock PLL
    Wire.endTransmission();
    delay(500);
   
    Wire.beginTransmission(GY521Address);
    Wire.write(0x1c);//Register_Name ACCEL_CONFIG
    Wire.write(0b00011000);//+-16g mode
    Wire.endTransmission();
    delay(500);

    Wire.beginTransmission(GY521Address);
    Wire.write(0x1b);//Register_Name GYRO_CONFIG
    Wire.write(0b00000000);//+-250°/s mode
    Wire.endTransmission();
    delay(500);   
}

void loop(){  
  getData(0x41,0x42,"TEMP");//Register_Name TEMP_OUT
  getData(0x3b,0x3c,"ACCELx");//Register_Name ACCEL_XOUT
  getData(0x3d,0x3e,"ACCELy");//Register_Name ACCEL_YOUT
  getData(0x3f,0x40,"ACCELz");//Register_Name ACCEL_ZOUT
  getData(0x43,0x44,"GYROx");//Register_Name GYRO_XOUT_
  getData(0x45,0x46,"GYROy");//Register_Name GYRO_YOUT_
  getData(0x47,0x48,"GYROz");//Register_Name GYRO_ZOUT_
  Serial.println("    ");
  delay(500);
}

void getData(int AddressH, int AddressL, char Str[]){
    Wire.beginTransmission(GY521Address);
    Wire.write(AddressH);
    Wire.endTransmission();
    Wire.requestFrom(GY521Address, 1);
    while(!Wire.available()) {
        // waiting
    }
    int h = Wire.read();
   
    Wire.beginTransmission(GY521Address);
    Wire.write(AddressL);
    Wire.endTransmission();
    Wire.requestFrom(GY521Address, 1);
    while(!Wire.available()) {
        // waiting
    }
    int l = Wire.read();
    int c = 0;
  if (Str == "TEMP"){
     c = (256 * h + l)/340+35;//Ofset=35°,LSB/1°=340
  }else{
     c = 256 * h + l;
  }   
    Serial.print(Str);
    Serial.print("=");
    Serial.print(c);
    Serial.print("    ");
}






◆シリアルモニタで見ます

重力に反応しています

2016年7月25日月曜日

Arduino と GY-50 L3G4200D ジャイロセンサーモジュール 使ってみた

準備

◆Arduino IDE (PCにインストール)

◆Arduino Uno (360円 + 送料170円) 


◆USBケーブル AーBタイプ (100円+送料170円)


◆GY-50 L3G4200D ジャイロセンサーモジュール (470円 + 送料170円)
・角速度と温度の検出
・VCC電圧は5V
・SCL、SDA電圧は3.3V
・SCL、SDA端子は 10kΩでpullUpされています


◆できれば、何か電圧レベル変換するもの(N-JFETを使った)





  工作開始 
◆ 接続します
(外部抵抗不要)GY-50 L3G4200D SCL、SDA端子は 10kΩでpullUpされています 
※(外部抵抗不要)Arduino の Wire ライブラリーを利用すると、内部の抵抗を利用して プルアップしてくれます

◆接続を確認します
確認1

確認2(Arduino Uno がつながっているポート)

◆スケッチを書きます。Y軸のみ



#include <Wire.h>
int GyroAddress = 0b1101001;
void setup() {
    Serial.begin(9600);
    Wire.begin();
    Wire.beginTransmission(GyroAddress);
    Wire.write(0x20);//Adress to set output selection
    Wire.write(0b00001010);//I set output selection with only Y-axis
    Wire.endTransmission(); 
    delay(1500);
}
void loop(){
    Wire.beginTransmission(GyroAddress);
    Wire.write(0x2B); //(high)Address of Y-axis angular rate data.
    Wire.endTransmission();
    Wire.requestFrom(GyroAddress, 1); // read a byte
    while(!Wire.available()) {
        // waiting
    }
    int yH = Wire.read();
   
    Wire.beginTransmission(GyroAddress);
    Wire.write(0x2A); //(low)Address of Y-axis angular rate data.
    Wire.endTransmission();
    Wire.requestFrom(GyroAddress, 1); // read a byte
    while(!Wire.available()) {
        // waiting
    } 

    int yL = Wire.read();
   
    int y = 256 * yH + yL;
    Serial.print(" angular=");
    Serial.print(y); 

    Wire.beginTransmission(GyroAddress);
    Wire.write(0x26); //Address of temperature
    Wire.endTransmission();
    Wire.requestFrom(GyroAddress, 1); // read a byte
    while(!Wire.available()) {
        // waiting
    }
    int t = Wire.read();

    Serial.print("     temperature=");
    Serial.println(t);
    delay(100);
}


 

◆シリアルモニタで見ます




・角速度も温度も0点調整をやらないといけないようだ。
・温度が上がると数値が下がるようだ。
・割り込みはどうするのだ?
What is Interrupt ?
 Does anyone have some obvious fix / advice / a direction to try? 

 



2016年6月28日火曜日

Arduino と I2C LCDモジュール 使ってみた

準備 

AArduino IDE(PCにインストール無料) 

◆Arduino UNO (360円+送料170円)
 


◆I2C LCDモジュール (630円+送料170円) 


◆Arduino IDE(PC)と Arduino UNO をつなぐUSBケーブル(100円+送料170円) 


 工作開始
◆接続します
明るさ調整します
 

◆接続を確認します
 確認1


確認2


◆ライブラリ(NewliquidCrystal_1.3.4.zip)をダウンロードします





 ◆Arduino  IDE にダウンロードしたライブラリを追加します





◆追加されたライブラリのスケッチを開きます
ファイル>スケッチの例>NewliquidCrystal>HelloWorld_i2c


◆スケッチを変更します。購入した I2C LCD のアドレスに変更します。 
0x38

0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE

※NOTE : I2C LCD has Several types of address.You should ask seller.
※注意 : I2C LCD のアドレスはいくつか有るようです。販売者に聞いたほうがいいです。



明るさ調整がうまくないと表示されません、青色一色で文字が表示されないなど。

 3.3Vでも5Vでも表示されました