LCD Nokia 5110

Jan 05
2011

..como tinha prometido, aqui fica o meu post/tutorial de como colocar este rapaz a funcionar…

Ora bem, depois de alguns mails trocados com quem de direito, aka Filipe Valpereiro e Carlos Rodrigues la consegui por isto a funcionar, mas a realidade é que tive “sorte”.

Sorte porquê? porque devido a não ler tudo ate ao fim podia ter queimado o LCD assim sem mais nem menos, é que este menino funciona a 3.3V e quando se diz 3.3V SAO mesmo TODOS OS PINS, nao é so o VCC…e eu como sou toto nao sabia disso. Devia ter lido o Datasheet!!

Mas felizmente nao queimou e a prova disso é que no dia 31 mandei um tweet com uma imagem do LCD a dizer HAPPY NEW YEAR, hehe…para fugir um pouco ao clássico “Hello World”.

Bem ja chega de conversa e vamos ao que interessa. Existem duas maneira de ligar isto a correcta e que funciona, e a menos correcta, mas que continua a funcionar…ainda estou a espera de ter confirmação se é seguro usar assim.

Para ja vao precisar da seguinte lista de material:

  • 1 x Nokia 5110 LCD
  • 6 x Resistencias de 10K
  • 8 x Jumper Cables
  • 1 x Arduino

Nota: se usarem um arduino que funcione a 3.3V nao precisam de resistencias, podem ligar o LCD directamente!

Depois de terem este material todo é so ligarem os pins com a seguinte ordem:

Nota: Estas ligaçoes sao especificamente para o Nokia 5110 LCD se usarem outro convem verem os pins que veem indicados “normalmente” por tras da board do LCD. no meu caso vinham e sao estas:

O que da as seguintes ligaçoes:

  • LCD —– > Arduino
  • 1 ———> 3.3V
  • 2 ———> GND
  • 3 ———> D7
  • 4 ———> D6
  • 5 ———> D5
  • 6 ———> D4
  • 7 ———> D3
  • 8 ———> (Este eu não liguei porque são os leds do LCD, mas por motivos de teste podem ligar em qualquer um desde que o PIN esteja HIGH)

E afinal onde é que colocamos as resistências???

Ok aqui entra a minha duvida, que talvez quem perceba mais de electronica possa esclarecer, ha duas maneiras de ligar, eu para ja estou a usar uma que assume que a board do LCD tenha um Diodo que assegura que nao queima, mas ha maneiras mais correctas segundo me informou tanto o Filipe Valpereiro com o Carlos Rodrigues, estes dois a quem gabo a paciência para me aturarem os mais 😉 eu ja tinha metido um filtro para spam para mim mesmo…hehe..

O melhor mesmo é verem este Tutorial da Sparkfun que explica tudo como devem fazer, e depois se não vos agradar ou quiserem arriscar fazer a minha maneira passem para o parágrafo seguinte.

Eu liguei metendo nada mais nada menos do que uma resistência de 10K entre cada pin do LCD e cada pin do Arduino, e ei esta a funcionar as mil maravilhas, pelo menos por enquanto ainda nao vi fumo, seja ele branco ou de outra cor qualquer… Por isso voces é que sabem, é a vossa responsabilidade!

Note-se que este desenho é apenas a titulo ilustrativo e a minha primeira experiencia, falhada, diga-se de passagem 😉 com o Fritzing, mas da para perceberem a ideia…

Apesar de so estarem 6 resistencias se quiserem ligar o Pin 8 do LCD (LED) ao arduino o esquema é o mesmo, é so meterem la uma resistencia de 10K.

Em seguida depois de tudo ligado e conferido, so teem que sacar a LIB Arduino Library ( Thanks to Carlos Rodrigues) instalarem no vosso local do costume, e carregarem o exemplo que vem com a LIB ou simplesmente copiarem o seguinte sketch.

/*
 * PCD8544 - Interface with Philips PCD8544 (or compatible) LCDs.
 *
 * Copyright (c) 2010 Carlos Rodrigues
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */
 
/*
 *
 * Since these LCDs are +3.3V devices, you have to add extra components to
 * connect it to the digital pins of the Arduino (not necessary if you are
 * using a 3.3V variant of the Arduino, such as Sparkfun's Arduino Pro).
 */
 
#include
 
// A custom glyph (a smiley)...
static const byte glyph[] = { B00010000, B00110100, B00110000, B00110100, B00010000 };
 
static PCD8544 lcd;
 
void setup() {
  // PCD8544-compatible displays may have a different resolution...
  lcd.begin(84, 48);
 
  // Add the smiley to position "0" of the ASCII table...
  lcd.createChar(0, glyph);
}
 
void loop() {
  // Just to show the program is alive...
  static int counter = 0;
 
  // Write a piece of text on the first line...
  lcd.setCursor(0, 0);
  lcd.print("Hello, World!");
 
  // Write the counter on the second line...
  lcd.setCursor(0, 1);
  lcd.print(counter, DEC);
  lcd.write(' ');
  lcd.write(0);  // write the smiley
 
  delay(500);
  counter++;
}

E se de facto tiverem tudo bem ligado deverá aparecer um glorioso “Hello World” no vosso lcd com um pequeno smiley e um numero a incrementar.

Confesso que a mim não me aconteceu isso da primeira vez, porque primeiro como ja mencionei estava a ligar a 5V e segundo porque não estava a olhar correctamente para os pins de um lado e de outro.  Por isso em caso de duvida ligem usando este esquema que aqui vos coloco.

Se por acaso, depois quiserem mudar a ordem dos pins no Arduino, teem que alterar directamente na lib PCD8544.h que tem quase no incio algo tipo

// The pins used by this library...
#define PCD8544_SCLK  8  /* clock       (display pin 2) */
#define PCD8544_SDIN  4  /* data-in     (display pin 3) */
#define PCD8544_DC    5  /* data select (display pin 4) */
#define PCD8544_RESET 6  /* reset       (display pin 8) */
#define PCD8544_SCE   7  /* enable      (display pin 5) */

E que como podem constatar este é o meu, e ja foi alterado. mudei o pin 3 para pin 8 uma vez que estou a usar o pin 3 para outra shield.

E pronto, penso que mais simples que isto não pode ser, é mesmo como dizem no site, “Plug and Pray” 😉

Como sempre dúvidas, ajudas e mais importante sugestões são muito bem vindas…

One Response to “LCD Nokia 5110”

  1. Tiago says:

    Viva! Quanto ao pino 8 (LED) podemos ligar directamente aos 5v, caso contrário não se vê nada! e segundo a datasheet podemos ligar à vontade

Leave a Reply

Follow Me