影片中的LCD螢幕和WII的左手搖桿都是利用I2C介面控制的,
這裡一樣是參考Cooper Maa大大的文章,
WII nunchuck:     http://coopermaa2nd.blogspot.tw/2012/08/wii-nunchuk-arduino.html
I2C LCD:              http://coopermaa2nd.blogspot.tw/2012/09/i2c-16x2-lcd.html

(線路接法)
基本上超級簡單的,把Arduino的數位接腳A2~A5拉到麵包板上,SCL接A5,SDA接A4,VCC接A3,GND接A2,
至於WiiChuck的話,也是一樣的接法,但是因為上面可能沒印接腳,所以請記得最靠近切邊的是GND,或是使用下圖來幫助接線
2014-07-23 14.55.07

為什麼LCD可以直接由A2跟A3供電呢?其實這是因為WIICHUCK的library會把A2變成HIGH電位,準備供電給NunChuck所以就可以供電了。
不過其實NunChuck的工作電壓應該是3.3V,所以最好是另外接電給NunChuck。

程式碼下載處:https://box.nctu.edu.tw/public.php?service=files&t=6f1ed03752ae4e587e1036cb1e02f625&download

程式碼如下:

#include 
#include 
#include <LiquidCrystal_I2C.h> 

Wiichuck wii;
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display 

void setup() {

  Serial.begin(115200);
  wii.init();
  wii.calibrate();  // calibration
  lcd.init(); // initialize the lcd 
  // Print a message to the LCD. 
  lcd.backlight(); 
}

void loop() {

  if (wii.poll()) {
    lcd.clear();      
    lcd.setCursor(0, 0);
    //lcd.print("joy:");
    lcd.print(wii.joyX());
    lcd.print(",");
    lcd.print(wii.joyY());
    lcd.print(",");
    //lcd.print("accle:");
    lcd.print(wii.accelX());
    lcd.print(",");
    lcd.print(wii.accelY());
    lcd.print(",");
    lcd.setCursor(0, 1);
    lcd.print(wii.accelZ());
    lcd.print(",");
    //lcd.print("button:");
    lcd.print(wii.buttonC());
    lcd.print(",");
    lcd.print(wii.buttonZ());
    //lcd.println("");
  }
  delay(1000);
}

----
其他資訊
1. I2C教學影片:http://www.youtube.com/watch?v=D29NePyvxNI。By 立錡資訊。
2. I2C介面的SDA跟SCL BUS應該要有上昇電阻,不過我在教學文章裡都沒看到?但是都可以動。還是說這顆電阻被Arduino內建了?
3. I2C BUS上的電容,不可以超過400pF。

qmaw 發表在 痞客邦 留言(0) 人氣()