Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Arduino 16×2 LCD-zelfstudie – Alles wat u moet weten

In deze Arduino-tutorial leren we hoe we een LCD (Liquid Crystal Display) aansluiten en gebruiken met Arduino . LCD-schermen zoals deze zijn erg populair en worden veel gebruikt in veel elektronicaprojecten omdat ze geweldig zijn voor het weergeven van eenvoudige informatie, zoals sensorgegevens, terwijl ze zeer betaalbaar zijn.

Ik heb ze al in verschillende van mijn Arduino-projecten gebruikt en je kunt ze hier bekijken:

  • Arduino beveiligings- en alarmsysteemproject
  • DIY Vending Machine – Mechatronica-project op basis van Arduino
  • Arduino-afstandsmeter en digitaal waterpasproject

Je kunt de volgende video bekijken of de schriftelijke tutorial hieronder lezen. Het bevat alles wat u moet weten over het gebruik van een LCD-tekendisplay met Arduino, zoals LCD-pinout, bedradingsschema en verschillende voorbeeldcodes.

Wat is een LCD-tekenweergave?

Een LCD-tekenweergave is een uniek type weergave dat alleen individuele ASCII-tekens met een vaste grootte kan weergeven. Met behulp van deze individuele karakters kunnen we een tekst vormen.

Als we het scherm van dichterbij bekijken, kunnen we zien dat er kleine rechthoekige gebieden zijn die zijn samengesteld uit een raster van 5 × 8 pixels. Elke pixel kan afzonderlijk oplichten, en dus kunnen we karakters genereren binnen elk raster.

Het aantal rechthoekige gebieden bepaalt de grootte van het LCD-scherm. Het meest populaire LCD-scherm is het 16×2 LCD-scherm, dat twee rijen heeft met 16 rechthoekige vlakken of tekens. Natuurlijk zijn er andere formaten zoals 16×1, 16×4, 20×4 enzovoort, maar ze werken allemaal volgens hetzelfde principe. Deze LCD's kunnen ook een andere achtergrond- en tekstkleur hebben.

16×2 LCD-pinout

Het heeft 16 pinnen en de eerste van links naar rechts is de Grond pin. De tweede pin is de VCC waarmee we de 5 volt-pin op het Arduino-bord aansluiten. De volgende is de Vo-pin waarop we een potentiometer kunnen bevestigen om het contrast van het display te regelen.

Vervolgens De RS pin of register select pin wordt gebruikt om te selecteren of we commando's of gegevens naar het LCD-scherm willen sturen. Als de RS-pin bijvoorbeeld is ingesteld op lage staat of nul volt, sturen we opdrachten naar het LCD-scherm zoals:zet de cursor op een specifieke locatie, wis het scherm, schakel het scherm uit enzovoort. En wanneer de RS-pin is ingesteld op Hoge staat of 5 volt, sturen we gegevens of tekens naar het LCD-scherm.

Vervolgens komt de R/W pin die de modus selecteert of we naar het LCD-scherm willen lezen of schrijven. Hier is de schrijfmodus duidelijk en wordt deze gebruikt voor het schrijven of verzenden van opdrachten en gegevens naar het LCD-scherm. De leesmodus wordt door het LCD-scherm zelf gebruikt bij het uitvoeren van het programma, waarover we in deze tutorial niet hoeven te discussiëren.

De volgende is de E pin die het schrijven naar de registers mogelijk maakt, of de volgende 8 datapinnen van D0 tot D7. Dus via deze pinnen sturen we de 8-bits gegevens wanneer we naar de registers schrijven of als we bijvoorbeeld de laatste hoofdletter A op het display willen zien, sturen we 0100 0001 naar de registers volgens de ASCII-tabel. De laatste twee pinnen A en K , of anode en kathode zijn voor de LED-achtergrondverlichting.

We hoeven ons tenslotte niet veel zorgen te maken over hoe het LCD-scherm werkt, aangezien de Liquid Crystal Library voor bijna alles zorgt. Op de officiële website van de Arduino kunt u de functies van de bibliotheek vinden en bekijken die een eenvoudig gebruik van het LCD-scherm mogelijk maken. We kunnen de bibliotheek gebruiken in 4 of 8 bit-modus. In deze tutorial gebruiken we het in 4-bits modus, of we gebruiken gewoon 4 van de 8 data-pinnen.

Hoe Arduino op LCD aan te sluiten – Bedradingsschema

Hier leest u hoe we het 16×2 LCD-scherm moeten aansluiten op een Arduino-bord.

We zullen slechts 6 digitale ingangspinnen van het Arduino-bord gebruiken. De LCD's registreren van D4 tot D7 wordt verbonden met Arduino's digitale pinnen van 4 tot 7. De Enable pin wordt verbonden met pin nummer 2 en de RS pin wordt verbonden met pin nummer 1. De R/W pin wordt verbonden met Ground en deVo pin wordt verbonden met de middelste pin van de potentiometer.

Je kunt deze componenten krijgen op een van de onderstaande sites:

  • 16×2 karakter LCD……………………..
  • Potentiometer ………………………….
  • Arduino-bord …………………………
  • Broodplank en springdraden ……… 

Het contrast van het LCD-scherm aanpassen

We kunnen het contrast van het LCD-scherm aanpassen door de spanningsingang aan te passen aan de Vo pin. We gebruiken een potentiometer omdat we op die manier het contrast gemakkelijk kunnen verfijnen, door de ingangsspanning aan te passen van 0 tot 5V.

Kan ik het LCD-scherm gebruiken zonder potentiometer?

Ja, als we geen potentiometer hebben, kunnen we het LCD-contrast nog steeds aanpassen door een spanningsdeler te gebruiken die is gemaakt van twee weerstanden. Met behulp van de spanningsdeler moeten we de spanningswaarde tussen 0 en 5V instellen om een ​​goed contrast op het display te krijgen. Ik ontdekte dat een spanning van ongeveer 1V prima werkte voor mijn LCD. Ik heb een weerstand van 1K en 220 ohm gebruikt om een ​​goed contrast te krijgen.

Er is ook een andere manier om het LCD-contrast aan te passen, en dat is door een PWM-signaal van de Arduino naar de Vo te sturen. pin van het LCD-scherm. We kunnen de Vo . verbinden pin naar elke Arduino PWM-compatibele pin, en in de setup-sectie kunnen we de volgende coderegel gebruiken:

analogWrite(11,100); // Generate PWM signal at pin D11, value of 100 (out of 255)Code language: Arduino (arduino)

Het genereert een PWM-signaal op pin D11, met een waarde van 100 van de 255, wat zich vertaalt in een spanning van 0 tot 5V, het zal rond de 2V-ingang zijn bij de Vo LCD-pin.

LCD Arduino-code

Hier is een eenvoudige code waarmee we het werkingsprincipe van de Liquid Crystal-bibliotheek kunnen uitleggen. Dit is de code van het eerste voorbeeld uit de video:

/*
* Arduino LCD Tutorial
*
* Crated by Dejan Nedelkovski,
* www.HowToMechatronics.com
*
*/

#include <LiquidCrystal.h> // includes the LiquidCrystal Library 
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7) 

void setup() { 
 lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display } 
}

void loop() { 
 lcd.print("Arduino"); // Prints "Arduino" on the LCD 
 delay(3000); // 3 seconds delay 
 lcd.setCursor(2,1); // Sets the location at which subsequent text written to the LCD will be displayed 
 lcd.print("LCD Tutorial"); 
 delay(3000); 
 lcd.clear(); // Clears the display 
 lcd.blink(); //Displays the blinking LCD cursor 
 delay(4000); 
 lcd.setCursor(7,1); 
 delay(3000); 
 lcd.noBlink(); // Turns off the blinking LCD cursor 
 lcd.cursor(); // Displays an underscore (line) at the position to which the next character will be written 
 delay(4000); 
 lcd.noCursor(); // Hides the LCD cursor 
 lcd.clear(); // Clears the LCD screen 
}Code language: Arduino (arduino)

Codebeschrijving:

Het eerste dat we moeten doen, is de Liquid Crystal Library invoegen. We kunnen dat als volgt doen:Sketch> Include Library> Liquid Crystal. Dan moeten we een LC-object maken. De parameters van dit object moeten de nummers van de digitale ingangspinnen van het Arduino-bord zijn, respectievelijk als volgt op de pinnen van het LCD-scherm:(RS, Enable, D4, D5, D6, D7). In de installatie moeten we de interface naar het LCD-scherm initialiseren en de afmetingen van het scherm specificeren met behulp van de begin() functie.

In de loop schrijven we ons hoofdprogramma. De print() . gebruiken functie die we op het LCD-scherm afdrukken.

lcd.print("Arduino"); // Prints "Arduino" on the LCDCode language: Arduino (arduino)

De setCursor() functie wordt gebruikt om de locatie in te stellen waar de volgende tekst die naar het LCD-scherm is geschreven, wordt weergegeven.

lcd.setCursor(2,1); // Sets the location at which subsequent text written to the LCD will be displayed Code language: Arduino (arduino)

De knipper() functie wordt gebruikt voor het weergeven van een knipperende cursor en de noBlink() functie voor het uitschakelen.

lcd.blink(); //Displays the blinking LCD cursorCode language: Arduino (arduino)

De cursor() functie wordt gebruikt voor het weergeven van de underscore-cursor en de noCursor() functie om uit te schakelen. De clear() . gebruiken functie kunnen we het LCD-scherm wissen.

lcd.clear(); // Clears the LCD screenCode language: Arduino (arduino)

Voorbeeld van scrollende tekst op 16×2 LCD en Arduino

Als we een tekst hebben met een lengte van meer dan 16 tekens, kunnen we door de tekst scrollen met de scrollDisplayLeft() of scrollDisplayRight() functie uit de LiquidCrystal-bibliotheek.

Hier is een voorbeeldcode:

#include <LiquidCrystal.h>

LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)

void setup() {
  lcd.begin(16, 2);
  lcd.print("Scrolling Text Example");
}
void loop() {
  lcd.scrollDisplayLeft();
  delay(500);
}Code language: Arduino (arduino)

We kunnen kiezen of de tekst naar links of rechts zal scrollen, met behulp van de scrollDisplayLeft() of scrollDisplayRight() functies. Met de vertraging() functie kunnen we de scrollsnelheid instellen.

Als u meer controle wilt over hoe de tekst scrolt, kunt u het scrollen ook zelf doen met behulp van een "for"-lus. Hier is een voorbeeld:

#include <LiquidCrystal.h>

LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)

void setup() {
  lcd.begin(16, 2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display

}

void loop() {
  // scroll text to the right
  for (int i = 0; i <= 13; i++) {
    lcd.setCursor(i, 0); // Sets the location at which subsequent text written to the LCD will be displayed
    lcd.print("LCD");
    delay(500); // 1 second delay
    lcd.clear(); // Write a character to the LCD
  }
  // scroll text to the left
  for (int i = 12; i >= 1; i--) {
    lcd.setCursor(i, 0);
    lcd.print("LCD");
    delay(500); 
    lcd.clear(); 
  }
}Code language: Arduino (arduino)

Aangepaste tekens genereren en weergeven op het LCD-scherm

Naast de ASCII-tekens is het met de LiquidCrystal-bibliotheek ook mogelijk om aangepaste tekens op het LCD-scherm te genereren en weer te geven.

We kunnen het uiterlijk van elk teken specificeren door een array van 8 bytes. Hier is een voorbeeldcode:

#include <LiquidCrystal.h>

byte heart[8] = {  // Array of bytes
  B00000,          // B stands for binary formatter and the five numbers are the pixels
  B01010,
  B11111,
  B11111,
  B01110,
  B00100,
  B00000,
  B00000
};

byte smile[8] = {
  B00000,
  B00000,
  B01010,
  B00000,
  B10001,
  B01110,
  B00000,
  B00000
};

byte lock[8] = {
  B01110,
  B10001,
  B10001,
  B11111,
  B11011,
  B11011,
  B11111,
  B00000
};

byte character[8] = {
  B11111,
  B10101,
  B11111,
  B01010,
  B01110,
  B11111,
  B01110,
  B01110
};


LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)

void setup() {
  lcd.begin(16, 2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display
  lcd.createChar(0, heart); // Create a custom character
  lcd.createChar(1, smile);
  lcd.createChar(2, lock);
  lcd.createChar(3, character);

  // Clears the LCD screen
  lcd.clear();

  // Print a message to the LCD
  lcd.print("Custom Character");
}

void loop() {
  lcd.setCursor(1, 1);
  lcd.write(byte(0));  // Display the custom character 0, the heart

  lcd.setCursor(5, 1);
  lcd.write(byte(1));

  lcd.setCursor(9, 1);
  lcd.write(byte(2));

  lcd.setCursor(13, 1);
  lcd.write(byte(3));
}Code language: Arduino (arduino)

We kunnen zien hoe we het uiterlijk van het personage kunnen specificeren door de nullen in 1s te veranderen binnen het raster van 5 × 8 pixels.

In de setup moeten we het aangepaste teken maken met behulp van de createChar() functie.

lcd.createChar(0, heart); // Create a custom characterCode language: Arduino (arduino)

De eerste parameter in deze functie is een getal tussen 0 en 7, of we moeten een van de 8 ondersteunde aangepaste tekens reserveren. De tweede parameter is de naam van de array van bytes.

We schrijven het aangepaste teken naar het scherm met de write() functie en als parameter gebruiken we het nummer van het teken.

lcd.write(byte(0));  // Display the custom character 0, or the heartCode language: Arduino (arduino)

Zie ook:Arduino Touch Screen Tutorial | TFT LCD

Conclusie

We hebben dus vrijwel alles besproken wat we moeten weten over het gebruik van een LCD-scherm met Arduino. Deze LCD-karakterdisplays zijn erg handig voor het weergeven van informatie voor veel elektronicaprojecten. In de bovenstaande voorbeelden heb ik 16×2 LCD gebruikt, maar hetzelfde werkingsprincipe is van toepassing op elk ander formaat van deze karakterdisplays.

Ik hoop dat je deze tutorial leuk vond en iets nieuws hebt geleerd. Stel gerust een vraag in de opmerkingen hieronder en vergeet niet mijn volledige verzameling van 30+ Arduino-projecten te bekijken.


Productieproces

  1. Alles wat u moet weten over Plunge EDM
  2. Alles wat je moet weten over gietijzer
  3. Alles wat u moet weten over hoogovens
  4. Alles wat u moet weten over boormachines
  5. Alles wat u moet weten over plaatwerk
  6. Alles wat u moet weten over freesmachines
  7. Alles wat u moet weten over een schaafmachine
  8. Alles wat u moet weten over de vormmachine
  9. Alles wat u moet weten over metaalbewerking
  10. Alles wat u moet weten over CNC-machines
  11. Alles wat u moet weten over machinepersen