Pubblicato il

Come collegare Display LCD 16×2 RGB su Arduino

Premessa:

Con questa guida riuscirete a collegare ogni genere di schermo LCD 16×2. Inoltre vedremo nello specifico un display con la retroilluminazione RGB. A livello Hardware, rispetto ai soliti display, quello RGB viene caratterizzato con l’aggiunta di altri 3 pin per la gestione delle varie tonalità da ricavare per l’effetto retro illuminato.

LISTA DEI MATERIALI:

Come Collegare il Display 16×2 su Arduino:

CollegareRGBDisplayLCDArduino

Per la retroilluminazione collegare il led rosso (pin 16 display) al pin digitale 3 di Arduino, il led verde (pin 17 display) al pin digitale 5 di Arduino, e il led blu (pin 18 display) al pin digitale 6 di Arduino. Di norma non necessitano resistenze perchè sono gia integrate a bordo del LCD RGB.

RGBLCD3Colori

Software Diplay RGB: con questo software scriveremo due righe sullo schermo e aggiungeremo un effetto “onda” retroilluminato con varie tonalità di colori che vedrete sfumarsi nel ciclo loop di arduino.

Librerie:

  • LiquidCrystal LGPL: arduino.cc/en/Reference/LiquidCrystal
  • Wire LGPL: arduino.cc/en/Reference/Wire
// include the library code:
#include <LiquidCrystal.h>
#include <Wire.h>

#define REDLITE 3
#define GREENLITE 5
#define BLUELITE 6
 
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
 
// you can change the overall brightness by range 0 -> 255
int brightness = 255;
 
void setup() {
  // set up the LCD's number of rows and columns: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("RGB 16x2 Display  ");
  lcd.setCursor(0,1);
  lcd.print(" Multicolor LCD ");
  lcd.setCursor(0,2);
  pinMode(REDLITE, OUTPUT);
  pinMode(GREENLITE, OUTPUT);
  pinMode(BLUELITE, OUTPUT);

  brightness = 100;
}
 
 
void loop() {
  for (int i = 0; i < 255; i++) {
    setBacklight(i, 0, 255-i);
    delay(5);
  }
  for (int i = 0; i < 255; i++) {
    setBacklight(255-i, i, 0);
    delay(5);
  }
  for (int i = 0; i < 255; i++) {
    setBacklight(0, 255-i, i);
    delay(5);
  }
}
 
 
 
void setBacklight(uint8_t r, uint8_t g, uint8_t b) {
  // normalize the red LED - its brighter than the rest!
  r = map(r, 0, 255, 0, 100);
  g = map(g, 0, 255, 0, 150);
 
  r = map(r, 0, 255, 0, brightness);
  g = map(g, 0, 255, 0, brightness);
  b = map(b, 0, 255, 0, brightness);
 
  // common anode so invert!
  r = map(r, 0, 255, 255, 0);
  g = map(g, 0, 255, 255, 0);
  b = map(b, 0, 255, 255, 0);
  Serial.print("R = "); Serial.print(r, DEC);
  Serial.print(" G = "); Serial.print(g, DEC);
  Serial.print(" B = "); Serial.println(b, DEC);
  analogWrite(REDLITE, r);
  analogWrite(GREENLITE, g);
  analogWrite(BLUELITE, b);
}