公告版位
需要找什麼嗎? 左邊分類或許可以幫助你...

using System;
using System.Runtime.InteropServices;

namespace ttt
{
    class MainClass
    {

        [DllImport("user32")]
        static extern bool SetCursorPos(int X, int Y);

黃彥霖 發表在 痞客邦 留言(1) 人氣()

全球手機攝影機主要供應廠商

※ 主要 CIS 廠商 Aptina、OmniVision、Samsung、STMicro 與 Toshiba 共占有行動電話應用市場的 85%

未命名  

 

 

 


黃彥霖 發表在 痞客邦 留言(0) 人氣()

還有一篇基本篇可參考:http://lolikitty.pixnet.net/blog/post/163032620

 

#include <Wire.h>

// LSM303DLHC 的 i2c 地址。由於 Arduino i2c 資料空間是 7 bit 所以要右移一個位元
int i2cAddress = 0x32 >> 1; 

void setup() {
    Serial.begin(9600);
    Serial.println("-------------------");
    Wire.begin(); // 啟用 i2c
    
    writeReg(0x20,0b00100111); // 打開三軸加速計的電源 ,設定每秒讀取10次,啟用XYZ軸
}

void loop() {
  Wire.beginTransmission(i2cAddress);
  Wire.write(0x28 | (1 << 7));
  Wire.endTransmission();
  Wire.requestFrom(i2cAddress, 6);
  
 

  byte xla = Wire.read();
  byte xha = Wire.read();
  byte yla = Wire.read();
  byte yha = Wire.read();
  byte zla = Wire.read();
  byte zha = Wire.read();
  
  int x = (xha << 8 | xla) >> 4;
  int y = (yha << 8 | yla) >> 4;
  int z = (zha << 8 | zla) >> 4;
    
  Serial.print("X : ");
  Serial.print(x);
  Serial.print("       Y : ");
  Serial.print(y);
  Serial.print("       Z : ");
  Serial.println(z);
    
    delay(500);
}

/************************************************************* 
* 寫入佔存器:writeReg(int reg, int value)
* reg:佔存器地址
* value:要寫入的值
*/
void writeReg(int reg, int value){
    Wire.beginTransmission(i2cAddress);   
    Wire.write(reg);
    Wire.write(value);
    Wire.endTransmission();
}

/************************************************************* 
* 讀取佔存器:readReg(int reg)
* reg:要讀取的佔存器地址
*/
int readReg(int reg){
    Wire.beginTransmission(i2cAddress);   
    Wire.write(reg);
    Wire.endTransmission();
    
    Wire.requestFrom(i2cAddress, 1);
    int value = Wire.read();
    Wire.endTransmission();
    
    return value;
}


執行結果:

11111111111  

 

 

 


黃彥霖 發表在 痞客邦 留言(1) 人氣()

還有一篇進階篇可參考:http://lolikitty.pixnet.net/blog/post/163257851

 

#include <Wire.h>

// LSM303DLHC 的 i2c 地址。由於 Arduino i2c 資料空間是 7 bit 所以要右移一個位元
int i2cAddress = 0x32 >> 1; 

void setup() {
    Serial.begin(9600);
    Serial.println("-------------------");
    Wire.begin(); // 啟用 i2c
    
    writeReg(0x20,0b00100111); // 打開三軸加速計的電源 ,設定每秒讀取10次,啟用XYZ軸
}

void loop() {
    Serial.print("X : ");
    Serial.print(readReg(0x29));
    Serial.print("    Y : ");
    Serial.print(readReg(0x2B));
    Serial.print("    Z : ");
    Serial.println(readReg(0x2D));
    delay(500);
}

/************************************************************* 
* 寫入佔存器:writeReg(int reg, int value)
* reg:佔存器地址
* value:要寫入的值
*/
void writeReg(int reg, int value){
    Wire.beginTransmission(i2cAddress);   
    Wire.write(reg);
    Wire.write(value);
    Wire.endTransmission();
}

/************************************************************* 
* 讀取佔存器:readReg(int reg)
* reg:要讀取的佔存器地址
*/
int readReg(int reg){
    Wire.beginTransmission(i2cAddress);   
    Wire.write(reg);
    Wire.endTransmission();
    
    Wire.requestFrom(i2cAddress, 1);
    int value = Wire.read();
    Wire.endTransmission();
    
    return value;
}


輸出結果:

I2C1  

 

 資料手冊說明:(查看完整請資料手冊請點我)


 針對上面 writeReg(0x20,0b00100111); 程式碼的說明

黃彥霖 發表在 痞客邦 留言(2) 人氣()

// 資料手冊 i2c 的 TC74 A0 地址是寫 1001000
 
#include <Wire.h>

int i2cAddress = 72; // TC74 A0 的 i2c 地址 ( 2 進制 1001000  轉成 10 進制後為 72 )

void setup() {
    Serial.begin(9600);
    Serial.println("-------------------");
     Wire.begin(); // 一定要寫
}

void loop() { 
    
    Wire.beginTransmission(i2cAddress);
    Wire.write(0);
    Wire.endTransmission();

    Wire.requestFrom(i2cAddress, 1); // 一定要寫
    
    while(Wire.available() == 0); // 等待回應
        
    Serial.println(Wire.read()); // 讀取溫度並傳送至電腦顯示
    
    delay(500); // 延遲0.5秒
}





黃彥霖 發表在 痞客邦 留言(0) 人氣()