LCD2004 I2C

Uit Private Rotor Designs
Versie door WikiBaas (overleg | bijdragen) op 27 mei 2023 om 20:38 (→‎I2C-adres wijzigen=)
(wijz) ← Oudere versie | Huidige versie (wijz) | Nieuwere versie → (wijz)
Naar navigatie springen Naar zoeken springen
Crystal Clear action run.png
LCD I2C

Release status: Documentation

LCD2004-0.png
Description
LCD2004 I2C
License
Author
Contributors
Based-on
[[]]
Categories
CAD Models
External Link
[]

Introductie

LCD2004-1.png LCD2004-2.png
Zoals we allemaal weten, hoewel LCD en sommige andere schermen de interactie tussen mens en machine enorm verrijken, delen ze een gemeenschappelijke zwakte. Wanneer ze zijn aangesloten op een controller, zullen meerdere IO's bezet zijn van de controller die niet zoveel buitenpoorten heeft. Ook beperkt het andere functies van de controller. Daarom is LCD2004 met een I2C-bus ontwikkeld om het probleem op te lossen.
I2C-bus is een type seriële bus uitgevonden door PHLIPS. Het is een high performance seriële bus met bus ruling en hoge of lage snelheid apparaatsynchronisatie functie vereist door meerdere host systeem. I2C-bus heeft slechts twee bidirectionele signaallijnen, Serial Data Line (SDA) en Serial Clock Line (SCL). De blauwe potentiometer op de I2C LCD2004 wordt gebruikt om de achtergrondverlichting aan te passen, zodat deze gemakkelijker kan worden weergegeven op de I2C LCD2004.

'Experimenteel principe

In dit experiment laten we I2C LCD2004 4-regelige tekens weergeven door te programmeren.
I²C (Inter-Integrated Circuit), uitgesproken als I-kwadraat-C, is een multi-master, multi-slave, single-ended, seriële computerbus uitgevonden door Philips Semiconductor (nu NXP Semiconductors). Het wordt meestal gebruikt voor het aansluiten van randapparatuur-IC's met lagere snelheid op processors en microcontrollers. Als alternatief wordt I²C gespeld als I2C (uitgesproken als I-twee-C) of IIC (uitgesproken als I-I-C).
I²C gebruikt slechts twee bidirectionele open afvoerleidingen, Serial Data Line (SDA) en Serial Clock Line (SCL), opgetrokken met weerstanden. Typische gebruikte spanningen zijn +5 V of +3,3 V, hoewel systemen I²C (Inter-Integrated Circuit), uitgesproken als I-kwadraat-C, is een multi-master, multi-slave, single-ended, seriële computer-bus uitgevonden door Philips Semiconductor (nu NXP Semiconductors). Het wordt meestal gebruikt voor het aansluiten van randapparatuur-IC's met lagere snelheid op processors en microcontrollers. Als alternatief wordt I²C gespeld als I2C (uitgesproken als I-two-C) of IIC (uitgesproken als I-I-C).
I²C gebruikt slechts twee bidirectionele open afvoerleidingen, Serial Data Line (SDA) en Serial Clock Line (SCL), opgetrokken met weerstanden. Typische gebruikte spanningen zijn +5 V of +3,3 V, hoewel systemen met andere spanningen zijn toegestaan.
Ga voor meer informatie over het werkingsprincipe van I2C naar I²C.

I2C Module

LCD2004-4.jpg


I2C-adres wijzigen

Wanneer er een conflict optreedt op het I2C-adres, kunt u het I2C-adres wijzigen door de A0-, A1-, A2-pinnen in te stellen op 1 of 0 op de PCF8574-chip.
Er is een module aan de achterkant van de I2C LCD, de belangrijkste chip is PCF8574 of PCF8574T, pin A0, A1, A2 is uitgebreid, zoals hieronder weergegeven.
Bestand:MG 0611-2.jpg
Voor de PCF8574T-chip, I2C-adresformaat: 0 0 1 0 0 A2 A1 A0. Het standaardadres is: 0x27
Voor de PCF8574-chip, I2C-adresformaat: 0 0 1 1 1 A2 A1 A0. Het standaardadres is: 0x3F
Als u het standaardadres wilt wijzigen, hoeft u alleen maar pinA0, A1, A2 naar GND te verbinden.
Voor PCF8574T-chip, I2C-adresbereik: 0x20-0x27
Voor PCF8574-chip, I2C-adresbereik: 0x38-0x3F
Als u het niet zeker weet, kunt u de leesI2C schets gebruiken om het gewijzigde adres te scannen.

Aansluiten aan een Arduino

Zie de volgende tabel voor de verbinding tussen het I2C LCD2004 en het Arduino Uno-bord:

LCD2004-3.jpg
I2C LCD2004 ARDUINO
GND 0V
VCC 5V
SDA A4 UNO /pin 20 mega2560
SCL A5 UNO /pin 21 mega2560

Bibliotheek toevoegen

Voordat u de code uploadt naar het besturingsbord, hebt u de LiquidCrystal_I2C bibliotheek toegevoegd.
1) Download de LiquidCrystal_I2C bibliotheek

2) Open de Arduino IDE, selecteer Sketch -> Include Library -> Add ZIP Library

IDE-1.png

3) Zoek het bestand LiquidCrystal_I2C dat u zojuist hebt downloadt. Klik op open en vervolgens wordt u gevraagd door "Bibliotheek toegevoegd aan uw bibliotheken. Vink 'Bibliotheken importeren' aan". U kunt ook zien dat de zojuist geïmporteerde bibliotheken in de lijst zijn verschenen door Sketch->Inclusief Library->LiquidCrystal_I2C.
IDE-2.png

Voorbeeld code

Kopieer de volgende code naar de Arduino IDE

/*****************************************
 * name: I2C LCD2004
 * function: You should now see your I2C LCD2004 display "Hello,world!","IIC/I2C LCD2004"
 * "20 cols, 4 rows","www.sunfounder.com"
 ********************************/


/********************************/
// include the library code
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);  // set the LCD address to 0x27 for a 16 chars and 2 line display
/*********************************************************/
void setup()
{
  lcd.init();  //initialize the lcd
  lcd.backlight();  //open the backlight 
   
  
  lcd.setCursor ( 0, 0 );            // go to the top left corner
  lcd.print("    Hello,world!    "); // write this string on the top row
  lcd.setCursor ( 0, 1 );            // go to the 2nd row
  lcd.print("   IIC/I2C LCD2004  "); // pad string with spaces for centering
  lcd.setCursor ( 0, 2 );            // go to the third row
  lcd.print("  20 cols, 4 rows   "); // pad with spaces for centering
  lcd.setCursor ( 0, 3 );            // go to the fourth row
  lcd.print(" www.kunstmanen.net  ");
}
/*********************************************************/
void loop() 
{

}
/************************************************************/

Stap 4: Upload de code

Voordat u de code uploadt, moet u het juiste bord en de juiste poort selecteren, volgt u de stappen:

1) Klik op Tools ->Board en selecteer Arduino / Genuino Uno.

IDE-3.png

2) Dan klik Tools ->Serial Port.

IDE-4.png

3) Klik op het uploadpictogram om de code naar de ARDUINO
te uploaden
IDE-5.png
Als 'Klaar met uploaden' onder aan het venster wordt weergegeven, betekent dit dat de schets met succes is geüpload.

Resultaat

U zou nu moeten zien dat uw I2C LCD1602/LCD2004 de vloeiende tekens "Hallo, wereld!", "IIC / I2C LCD2004", "20 cols, 4 rijen" en "www.kunstmanen.net" weergeeft
LCD1602-1.jpg

Lees I2C Address

Als alles correct is, maar het display toont slechts 16 zwarte rechthoeken op regel 1.it kan het adres van i2c niet 0x27 zijn, daarom moet u de volgende code uitvoeren om het adres te lezen en wijzig vervolgens de 0x27 waarop u leest.

LiquidCrystal_I2C lcd(0x27,16,2);
/*****************************************************
 * name:I2C_Address
 * function:read the address of the I2C lcd1602
 * Connection:
 * I2C                 UNO 
 * GND                 GND
 * VCC                  5V
 * SDA                  A4(pin20 in mega2560)
 * SCL                  A5(pin21 in mega2560)
 ********************************************************/

#include <Wire.h>

void setup()
{
  Wire.begin();
  Serial.begin(9600);
  Serial.println("\nI2C Scanner");
}
void loop()
{
  byte error, address;
  int nDevices;
  Serial.println("Scanning...");
  nDevices = 0;
  for(address = 1; address < 127; address++ )
  {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the 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(" !");
      nDevices++;
    }
    else if (error==4)
    {
      Serial.print("Unknow error at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX);
    }
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");
  delay(5000); // wait 5 seconds for next scan
}

Bronnen

I2C_LCD2004 test code
PCF8574T_datasheet
LiquidCrystal_I2C library