Arduino中使用I2C通訊可直接調用Wire.h庫, 這個庫容許Arduino連接其餘I2C設備, 連接線有兩條, 分別是SDA(數據行)和SCI(時鐘線). 各型號Arduino的I2C對應引腳:
Arduino Board:I2C / TWI pins
Arduino Uno/Ethernet:A4 (SDA), A5 (SCL)
Arduino Mega2560:20 (SDA), 21 (SCL)
Arduino Leonardo:2 (SDA), 3 (SCL)
Arduino Due:20 (SDA), 21 (SCL), SDA1, SCL1oop
通常購買到的是分開的兩個組件, 須要按下圖這樣將PCF8574T焊接到1602LCD上測試
PCF8574T模塊4pin(Gnd, Vcc, SDA i2c數據, SCL i2c時鐘)和Arduino接口的對應關係: Gnd -> Gnd, Vcc -> Vcc, SDA -> A4, SDL -> A5ui
獲取I2C地址spa
#include <Wire.h> void setup() { Serial.begin (115200); // Leonardo: wait for serial port to connect while (!Serial) { } Serial.println (); Serial.println ("I2C scanner. Scanning ..."); byte count = 0; Wire.begin(); for (byte i = 8; i < 120; i++) { Wire.beginTransmission (i); if (Wire.endTransmission () == 0) { Serial.print ("Found address: "); Serial.print (i, DEC); Serial.print (" (0x"); Serial.print (i, HEX); Serial.println (")"); count++; delay (1); // maybe unneeded? } // end of good response } // end of for loop Serial.println ("Done."); Serial.print ("Found "); Serial.print (count, DEC); Serial.println (" device(s)."); } // end of setup void loop() {}
運行時, 打開Serial Monitor, 將波特率設爲115200, 看到的輸出就是I2C地址code
自帶LiquidCrystal_I2C顯示測試blog
在運行顯示測試前檢查是否已經安裝了library: LiquidCrystal, LiquidCrystal_I2C接口
#include <Wire.h> #include <LiquidCrystal_I2C.h> // I2C地址, 通常爲0x3F, 0x20或0x27 LiquidCrystal_I2C lcd(0x27,16,2); void setup() { lcd.init(); lcd.backlight(); // 打開背光 } void loop() { lcd.setCursor(0,0); lcd.print("LCD1602 iic Test"); lcd.setCursor(0,1); lcd.print("0123456789ABCDEF"); delay(1000); }
若是屏幕亮可是無顯示, 能夠調節背後的電位器讓字符顯示到合適的對比度.get
第三方New LiquidCrystal顯示測試it
到 https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/ 下載最新的library並安裝io
#include <Wire.h> #include <LCD.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7); // 0x27 is the I2C bus address for an unmodified backpack void setup() { // activate LCD module lcd.begin (16,2); // for 16 x 2 LCD module lcd.setBacklightPin(3,POSITIVE); lcd.setBacklight(HIGH); } void loop() { lcd.home (); // set cursor to 0,0 lcd.print("HELLO WORLD...."); lcd.setCursor (0,1); // go to start of 2nd line lcd.print(millis()); delay(1000); lcd.setBacklight(LOW); // Backlight off delay(1000); lcd.setBacklight(HIGH); // Backlight on }
供電和耗電測試
硬件是Arduino NANO + 擴展板 + PCF8574T + 1602LCD, 使用輸入電壓12V. 擴展板自己不帶IC, 只有一個電源LED, 功耗能夠忽略. 在使用自帶的LiquidCrystal_I2C庫跑上面的測試代碼時, 測得的功耗僅爲0.95W左右.