Pengenalan Modul Adaptor LCD I2C

Cuba Instrumen Kami Untuk Menghapuskan Masalah





Dalam posting ini kita akan melihat modul penyesuai LCD berasaskan 'I2C' atau 'IIC' atau 'I persegi C', yang akan mengurangkan sambungan wayar antara paparan Arduino dan LCD menjadi hanya 2 wayar, juga menjimatkan banyak pin GPIO untuk sensor / pemacu lain dll.

Sebelum kita membincangkan mengenai modul penyesuai LCD I2C, penting untuk memahami apa itu bas I2C dan bagaimana ia berfungsi.



Tetapi bagaimanapun anda tidak perlu menjadi pakar dengan protokol I2C untuk bekerja dengan penyesuai LCD sebutan ini.

Ilustrasi sambungan I2C:

Ilustrasi sambungan I2C:

I2C atau IIC adalah singkatan dari 'Inter-Integrated Circuit' adalah bas komputer bersiri yang diciptakan oleh semikonduktor Philips, yang kini dikenali sebagai semikonduktor NXP. Sistem bas ini dicipta pada tahun 1982.



Apa itu Bas?

Bas adalah sekumpulan kabel / wayar yang membawa data dari satu cip ke cip lain / satu papan litar ke papan litar yang lain.

Kelebihan utama protokol bas I2C adalah, mikrokontroler atau sensor atau cip yang disokong dapat dihubungkan dengan hanya dua wayar. Keuntungan dari protokol ini adalah, kita dapat menghubungkan 127 cip atau sensor / pemacu yang berbeza ke satu peranti induk yang biasanya mikrokontroler dengan hanya 2 wayar.

Apakah dua wayar I2C?

Kedua-dua wayar tersebut masing-masing adalah SDA dan SCL yang merupakan Data Serial dan Jam bersiri.

Jam bersiri atau SCL digunakan untuk menyegerakkan komunikasi data melalui bas I2C. SDA atau Serial Data adalah garis data di mana data sebenar disampaikan dari master ke slave dan sebaliknya. Peranti induk mengawal jam bersiri dan memutuskan peranti hamba mana yang diperlukan untuk berkomunikasi. Tidak ada peranti hamba yang dapat memulakan komunikasi terlebih dahulu, hanya perangkat induk yang dapat melakukannya.

Garis data Serial adalah dua arah dan kuat, setelah setiap set data 8 bit dikirim, perangkat penerima mengirim kembali bit pengakuan.

Seberapa pantas protokol I2C?

Versi asal protokol I2C yang dikembangkan pada tahun 1982 menyokong 100 Kbps. Versi seterusnya diseragamkan pada tahun 1992 yang menyokong 400Kbps (mod pantas) dan menyokong hingga 1008 peranti. Versi seterusnya dikembangkan pada tahun 1998 dengan 3.4 Mbps (mod kelajuan tinggi).

Beberapa versi I2C yang lain dikembangkan pada tahun 2000, 2007, 2012 (dengan mod Ultra-Fast 5Mbps) dan versi terbaru I2C dikembangkan pada tahun 2014.

Mengapa perintang penarik dalam bas I2C?

SDA dan SCL adalah 'longkang terbuka' yang bermaksud kedua-dua garis boleh turun RENDAH tetapi tidak dapat menggerakkan garis TINGGI, jadi perintang tarik disambungkan pada setiap garis.

Tetapi dengan sebahagian besar modul I2C seperti LCD atau RTC telah dibina resistor pull up, jadi kita tidak perlu menyambungkannya melainkan ditentukan.

Pull-up / Pull-down resistor: Pull-up resistor adalah perintang yang disambungkan ke + Ve talian bekalan untuk mengekalkan tahap logik garis ke TINGGI jika garis tidak tinggi atau rendah.

Resistor pull-down adalah perintang yang disambungkan ke –Ve talian bekalan untuk mengekalkan tahap logik garis ke RENDAH jika garis tidak tinggi atau rendah.

Ini juga menghalang bunyi masuk ke garisan.

Kami harap kami mencakar permukaan protokol I2C, jika anda memerlukan lebih banyak maklumat mengenai protokol I2C, sila layari

YouTube dan Google.

Sekarang mari kita lihat modul LCD I2C:

Lekapan modul LCD I2C

Terdapat 16 pin output untuk paparan LCD yang dapat disolder terus ke belakang modul LCD 16 X 2.

Pin input ialah + 5V, GND, SDA dan SCL. Pin SDA dan SCL pada Arduino Uno masing-masing adalah pin A4 dan A5. Untuk Arduino mega SDA adalah pin # 20 dan SCL adalah pin # 21.

Mari kita bandingkan bagaimana rupanya ketika kita memasang LCD ke Arduino tanpa penyesuai I2C dan dengan penyesuai.

Tanpa Penyesuai I2C:

Arduino Tanpa Penyesuai I2C

Dengan penyesuai I2C:

Arduino menggunakan Adaptor I2C

Adaptor disolder di bahagian belakang paparan LCD dan seperti yang kita lihat bahawa kita menjimatkan banyak pin GPIO untuk tugas-tugas lain dan kita juga dapat terus menambahkan 126 lagi peranti I2C ke pin A4 dan A5.

Harap maklum bahawa pustaka Liquid Crystal standard tidak akan berfungsi dengan penyesuai LCD I2C ini, terdapat perpustakaan khas untuk ini, yang akan diliputi dalam masa terdekat dan kami akan menunjukkan kepada anda bagaimana menggunakan modul ini dengan contoh pengekodan.

Cara Menghubungkan Adaptor I2C ke Paparan 16 x 2

Pada bahagian artikel di atas, kami mempelajari asas-asas protokol I2C dan mengambil gambaran keseluruhan asas mengenai modul penyesuai LCD I2C. Dalam catatan ini kita akan belajar bagaimana menghubungkan modul penyesuai LCD I2C ke paparan LCD 16 x 2 dan kita akan melihat bagaimana program dengan contoh.

Kelebihan utama protokol I2C adalah kita dapat menyambungkan sensor / peranti input / output yang disokong hanya dalam dua baris dan sangat membantu dengan Arduino kerana ia mempunyai pin GPIO yang terhad.

Sekarang mari kita lihat cara menyambungkan modul ke LCD.

Modul ini mempunyai 16 pin output dan 4 pin input. Kita hanya boleh memasangkan penyesuai ke bahagian belakang paparan LCD 16 x 2. Daripada 4 pin input, kedua adalah + 5V dan GND, selebihnya adalah SDA dan SCL.

Kami dapat melihat bahawa kami menyimpan banyak pin di Arduino untuk tugas input / output lain.

Kami dapat mengatur kontras paparan dengan menyesuaikan potensiometer dengan pemacu skru kecil (diserlahkan dalam kotak merah).

Lampu latar sekarang boleh dikendalikan dalam kod program itu sendiri:

lampu latar lcd ()

Ini akan menyalakan lampu latar pada paparan LCD.

lcd.noBacklight ()

Ini akan mematikan lampu latar pada paparan LCD.

Kita dapat melihat ada pelompat yang tersambung, yang disorot dalam kotak merah, jika pelompat dikeluarkan, lampu latar tetap MATI tanpa mengira perintah program.

Sekarang penyediaan perkakasan selesai, sekarang mari kita lihat cara membuat kod. Perlu diingat bahawa modul LCD I2C memerlukan yang istimewa

perpustakaan dan perpustakaan 'liquidcrystal' yang telah dipasang tidak akan berfungsi.

Anda boleh memuat turun perpustakaan I2C LCD dari sini dan menambah Arduino IDE:

github.com/marcoschwartz/LiquidCrystal_I2C

Dari catatan sebelumnya, kami mengetahui bahawa peranti I2C mempunyai alamat di mana master atau mikrokontroler dapat mengenal pasti peranti dan berkomunikasi.

Dalam kebanyakan kes, untuk modul LCD I2C alamatnya adalah '0x27'. Tetapi pembuatan yang berbeza mungkin mempunyai alamat yang berbeza. Kita mesti memasukkan alamat yang betul dalam program ini hanya paparan LCD anda akan berfungsi.

Untuk mencari alamat hanya sambungkan 5V ke Vcc dan GND ke GND Arduino dan SCL pin modul I2C ke A5 dan SDA ke A4 dan muat naik kod di bawah.

Ini akan mengimbas peranti I2C yang disambungkan dan menunjukkan alamatnya.

// -------------------------------- //
#include
void setup()
{
Wire.begin()
Serial.begin(9600)
while (!Serial)
Serial.println('-----------------------')
Serial.println('I2C Device Scanner')
Serial.println('-----------------------')
}
void loop()
{
byte error
byte address
int Devices
Serial.println('Scanning...')
Devices = 0
for (address = 1 address <127 address++ )
{
Wire.beginTransmission(address)
error = Wire.endTransmission()
if (error == 0)
{
Serial.print('I2C device found at address 0x')
if (address <16)
{
Serial.print('0')
}
Serial.print(address, HEX)
Serial.println(' !')
Devices++
}
else if (error == 4)
{
Serial.print('Unknown error at address 0x')
if (address <16)
Serial.print('0')
Serial.println(address, HEX)
}
}
if (Devices == 0)
{
Serial.println('No I2C devices found ')
}
else
{
Serial.println('-------------- done -------------')
Serial.println('')
}
delay(5000)
}
// -------------------------------- //

Muat naik kod dan buka monitor bersiri.

Seperti yang kita lihat, dua peranti telah dikesan dan alamatnya dipaparkan, tetapi jika anda hanya ingin mencari alamat modul LCD I2C, anda tidak boleh menyambungkan peranti I2C lain semasa melakukan imbasan.
Jadi kesimpulannya kami mendapat alamat '0x27'.

Sekarang kita akan menjadikan jam tangan digital sebagai contoh kerana terdapat dua peranti I2C, modul LCD dan RTC atau modul jam waktu nyata. Kedua-dua modul akan dihubungkan dengan dua wayar.

Muat turun pustaka berikut:
Perpustakaan RTC: github.com/PaulStoffregen/DS1307RTC
TimeLib.h: github.com/PaulStoffregen/Time

Cara menetapkan masa ke RTC

• Buka Arduino IDE dan arahkan ke Fail> Contoh> DS1307RTC> tetapkan masa.
• Muat naik kod dengan perkakasan yang lengkap dan buka monitor bersiri dan anda sudah selesai.

Gambarajah litar:

Program:

//------------Program Developed by R.Girish-------//
#include
#include
#include
#include
LiquidCrystal_I2C lcd(0x27, 16, 2)
void setup()
{
lcd.init()
lcd.backlight()
}
void loop()
{
tmElements_t tm
lcd.clear()
if (RTC.read(tm))
{
if (tm.Hour >= 12)
{
lcd.setCursor(14, 0)
lcd.print('PM')
}
if (tm.Hour <12)
{
lcd.setCursor(14, 0)
lcd.print('AM')
}
lcd.setCursor(0, 0)
lcd.print('TIME:')
if (tm.Hour > 12)
{
if (tm.Hour == 13) lcd.print('01')
if (tm.Hour == 14) lcd.print('02')
if (tm.Hour == 15) lcd.print('03')
if (tm.Hour == 16) lcd.print('04')
if (tm.Hour == 17) lcd.print('05')
if (tm.Hour == 18) lcd.print('06')
if (tm.Hour == 19) lcd.print('07')
if (tm.Hour == 20) lcd.print('08')
if (tm.Hour == 21) lcd.print('09')
if (tm.Hour == 22) lcd.print('10')
if (tm.Hour == 23) lcd.print('11')
}
else
{
lcd.print(tm.Hour)
}
lcd.print(':')
lcd.print(tm.Minute)
lcd.print(':')
lcd.print(tm.Second)
lcd.setCursor(0, 1)
lcd.print('DATE:')
lcd.print(tm.Day)
lcd.print('/')
lcd.print(tm.Month)
lcd.print('/')
lcd.print(tmYearToCalendar(tm.Year))
} else {
if (RTC.chipPresent())
{
lcd.setCursor(0, 0)
lcd.print('RTC stopped!!!')
lcd.setCursor(0, 1)
lcd.print('Run SetTime code')
} else {
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Read error!')
lcd.setCursor(0, 1)
lcd.print('Check circuitry!')
}
}
delay(1000)
}
//------------Program Developed by R.Girish-------//

Catatan:

LiquidCrystal_I2C lcd (0x27, 16, 2)

'0x27' adalah alamat yang kami dapati dengan mengimbas dan 16 dan 2 adalah jumlah baris dan lajur pada paparan LCD.

Untuk RTC, kami tidak perlu mencari alamatnya tetapi kami menjumpai semasa mengimbas '0x68', namun tetap Pustaka RTC akan mengatasinya.

Sekarang mari kita lihat berapa banyak kita mengurangkan kesesakan wayar dan menjimatkan pin GPIO di Arduino.

Hanya 4 wayar yang disambungkan ke paparan LCD, diserlahkan dalam kotak merah.

Juga hanya 4 wayar yang disambungkan dari Arduino dan modul RTC berkongsi talian yang sama.

Sekarang anda telah memperoleh pengetahuan asas mengenai I2C dan cara menggunakan modul penyesuai LCD I2C.
Adakah anda suka siaran ini? Anda ada pertanyaan? Sila nyatakan di bahagian komen, anda mungkin mendapat balasan pantas.




Sebelumnya: Litar Penguji Diod Transistor Sederhana Seterusnya: Buat Litar Pemanjangan Julat Kawalan Jauh IR ini