LCD1602/I2C LCD1602 FAQ

Uit Private Rotor Designs
Naar navigatie springen Naar zoeken springen


Crystal Clear action run.png
ARDUINO

Release status: Documentation

LCD1602-0.png
Description
LCD1602/I2C LCD1602 FAQ
License
Author
Contributors
Based-on
Categories
CAD Models
none
External Link
[]

Inleiding

LCD1602/1602 of LCD2004/2004 karakter-type liquid crystal display, is een soort dot matrix module om letters, cijfers en tekens weer te geven, enzovoort. Het bestaat uit 5x7 of 5x11 dot matrix posities; elke positie kan één teken weergeven. Er is een punthoogte tussen twee tekens en een spatie tussen regels, waardoor tekens en lijnen worden gescheiden. Het model 1602 betekent dat het 2 regels van 16 tekens weergeeft.

Over het algemeen heeft lcd1602 parallelle poorten, dat wil zeggen dat het meerdere pinnen tegelijkertijd zou bedienen. Lcd1602 kan worden onderverdeeld in acht-poorts en vier-poorts aansluitingen. Als de achtpoortsverbinding wordt gebruikt, zijn alle digitale poorten van het Arduino Uno-bord bijna volledig bezet. Als u meer sensoren wilt aansluiten, zijn er geen poorten beschikbaar. Daarom wordt de vierpoortsverbinding hier gebruikt voor een betere toepassing.

LCD1602/2004

Q: Weergave van cheques in plaats van tekens op LCD1602, hoewel deze is aangesloten

A: Het overkomt de meeste LCD1602-gebruikers, dus geen zorgen! U kunt het LCD-scherm controleren aan de hand van de volgende checklists:

1.Controleer eerst of de code met succes is geüpload. Als u 'Klaar met uploaden' ziet in het IDE-venster en er onderaan geen foutbericht wordt weergegeven, betekent dit dat de code normaal is geüpload. Anders uploadt u de code opnieuw.

Faq16021.jpg

2.Als de code met succes is geüpload en de witte vinkjes op het scherm verschijnen, kan het contrast niet goed zijn, zodat de tekens niet normaal kunnen worden weergegeven. U moet de potentiometer op het I2C bord met de klok mee en tegen de klok in aanpassen, totdat de tekens duidelijk worden weergegeven.

3.Als het nog steeds niet werkt, drukt u op de RESET-knop om de Arduino opnieuw op te starten.

4.Als de bovenstaande stappen niet kunnen helpen, kan de bedrading verkeerd zijn. Controleer de verbinding - in principe verkeerde pinnen of los contact, door de eliminatiemethode. Dat wil zeggen, als het scherm oplicht, betekent dit dat pin A en pin K correct zijn aangesloten. VDD moet worden aangesloten op 5V, VSS op GND, OV op de middelste pin van de potentiometer en RW op GND. Voor de rest pinnen, sluit ze aan op basis van uw codedefinitie.

5.Als je elke bovenstaande methode hebt geprobeerd en er nog steeds niet achter kunt komen, is de mogelijke reden dat de pinnen van de LCD1602 niet goed zijn gesoldeerd. Controleer dit en soldeer de aansluitingen opnieuw. Controleer de pinnen vooral D4-D7, RS en E en kijk of er sprake is van vals solderen.

Q: Mess code – tekens weergegeven, maar onleesbaar

A: 1.Meestal is het het slecht solderen van pinnen.

Bovenstaande is uitsluitend van toepassing als U zelf de I2C interface met de LCD samenvoegd Het moet zijn zoals weergegeven in de volgende figuur na het solderen - elke pin is omwikkeld met soldeer. Je kunt iets meer gebruiken tijdens het solderen; het is OK zolang pinnen naast elkaar niet gemengd solderen, zelfs als je denkt dat het er niet mooi uitziet. Let erop dat je geen pin ten onrechte gesoldeerd moet laten.

Faq1602-2.jpg

2.Probeer vervolgens op de RESET-knop te drukken. Het kan zijn dat de tekens die de vorige keer zijn weergegeven, niet zijn gewist. Het doel wordt dus overlapt met de vorige inhoud.

3.Controleer of de voedingsvoeding een constante spanning geeft en niet teveel varieert.

Q: Ik heb de schets zelf ingetypt stroomt de tekst van rechts naar links in de bovenste rij, maar gevolgd door vreemde tekens

A: Als u de code woord voor woord intypt, kunnen het typfouten zijn die de rommelcode veroorzaken.

In de volgende array "Kunstmanen" is het aantal tekens (Kunstmanen+ spaties) 26; het is hetzelfde getal in de andere array arrary2[]. In de code laten we de LCD1602 26 tekens weergeven. Dus als je een array van minder dan 26 definieert, zullen vreemde tekens het tekort aanvullen, wat dan de rommelcode is.

char array1[]=" Kunstmanen               ";  //the string to print on the LCD
char array2[]="hello, world!             ";  //the string to print on the LCD

Specifiek I2C LCD1602

Q: De schets voor I2C LCD1602 kan niet met succes worden geüpload; fouten gemeld

A: Als u de volgende foutberichten te zien krijgt bij het uploaden van de code voor de I2C CDL1602, hebt u mogelijk de LiquidCrystal_I2C bibliotheek niet toegevoegd.

Faq1602-3.jpg

Klik op Sketch->Import Library->Add Library, zoek het downloadpakket van de bibliotheek en pak het uit, ga in de map naar de bibliotheek, klik op LiquidCrystal_I2C

Faq1602-4.jpg

Klik vervolgens op Openen' en je krijgt de melding "Bibliotheek toegevoegd aan je bibliotheken". Controleer het menu Bibliotheek importeren. Upload nu de code opnieuw.

Faq1602-5.jpg

Q: Only the first letter is displayed.

A: Wanneer u de code met betrekking tot I2C LCD1602 uitvoert in de nieuwste versie van Arduino Software (IDE), kan het gebeuren dat alleen de eerste letter op het LCD-scherm wordt weergegeven. Dit komt door het compatibiliteitsprobleem. Voer de volgende stappen uit om het probleem op te lossen.

1.Wijzig de LiquidCrystal_I2C bibliotheek Open de IDE, klik op Bestand ->Voorkeuren en er wordt een venster weergegeven met Tabbladen. Het pad in het roze vak hieronder is dat voor de bibliotheken.

Faq1602-6.jpg

Ga naar deze map. Vervolgens libraries -> LiquidCrystal_I2C en open het bestand LiquidCrystal_I2C.cpp. Ga naar Regel 19 en verander return 0 in return 1, sla het bestand op en sluit. Compileer vervolgens de code opnieuw.

Faq1602-7.jpg

2.Ook kunt u een oudere versie van de Arduino IDE gebruiken, zoals de Arduino 1.0.5 of 1.0.6.

Q: Hoe is I2C LCD1602 aangesloten op de Mega2560

A: De verbinding tussen het LCD-scherm en de Uno zijn: GND naar GND, VCC naar 5V, SDA naar A4 en SCL naar A5. Hoewel de Uno veel pinnen deelt met de Mega2560, zijn twee pinnen, dat wil zeggen SDA en SCL, verschillend op de twee.

Op de UNO is A4 SDA en A5 SCL, terwijl op de Mega2560 pin20 de SDA is en pin 21 de SCL. Daarom moeten de SDA en SCL op de I2C CDL1602 worden gekoppeld aan de pin 20 en pin 21, in plaats van A4 en A5.

Q: Weergave van witte cheques in plaats van tekens wanneer deze brandt

A: Meestal zolang de code met succes is geüpload en de bedrading correct is, kan het LCD-scherm normaal worden weergegeven. Maar afwijkingen zijn mogelijk.

Als u alleen witte vinkjes ziet in de bovenste rij, kan dit worden veroorzaakt doordat het I2C-adres niet 0x27 is. Dus nu moet u het I2C-adres van uw I2C LCD1602 lezen. Kopieer de volgende code naar de IDE en upload deze naar je board. Open vervolgens de Serial Monitor en het adres wordt afgedrukt.

Wanneer u net het circuit inschakelt, brandt het LCD-scherm dan? En er werden witte cheques getoond in plaats van waar je het voor bedoeld had? Het kan zijn dat het I2C-adres niet 0x27 is. Je moet de echte vinden door een code. Kopieer de volgende code in een nieuw IDE-venster en upload deze naar je bord. Wanneer het met succes is gebeurd, opent u Serial Monitor en wordt het I2C-adres weergegeven. Vervang vervolgens het adres in deze regel in uw code: "LiquidCrystal_I2C lcd(0x27,16,2);" door het adres dat u zojuist krijgt. De code:

Faq1602-7.jpg

Wijzig vervolgens het adres "0x27" in LiquidCrystal_I2C lcd(0x27,16,2); in uw code in die afgedrukt op de "Serial Monitor".

/*****************************************************
* name:I2C_ Scanner
* 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
}