LusoRobótica - Robótica em Português
Electrónica => Componentes Genéricos => Tópico iniciado por: Psycop em 23 de Janeiro de 2012, 15:07
-
Olá
Hoje tentei ligar o Arduino ao Nokia 5110 LCD, mas até agora ainda não consegui ver nenhuma imagem no LCD, apenas uma luz que me indica que o LCD está ligado!
Estou a utilizar o seguinte esquema:
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Farduino.rechena.com%2Fwp-content%2Fuploads%2F2011%2F01%2FLCD-copy.jpg&hash=76b9b2bb1afcea97476f342a9df3a1b17247c48d)
Ou Seja:
1 Vcc - Pin3
2 Gnd - Pin4
3 Sce - Pin5
4 RST - Pin6
5 D/C - Pin7
6 DN (MOSI)
7 SCLK - Gnd Arduino
8 LED - 3.3V Arduino
Estas são as ligações que tenho.
O código que estou a usar é:
#include <PCD8544.h>
// 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++;
}
Apesar de ver luz no LCD não vejo qualquer informação projectada nele, o que estarei a fazer mal?
Cumps
-
Não declaras em lado nenhum no código quais os pinos que estás a usar, provavelmente na inicialização falta-te fazer um init com os pinos que estás a usar.
-
eu também tentei usar esse "método" das resistências para o level shift e não funcionou, penso que não passa corrente suficiente, tentei com um buffer e funcionou, penso que era o 4050
-
Como efectuaste esse tal buffer CBX?
Cumprimentos
-
está no meu post anterior, com um IC, o 4050
-
Pois, na verdade nem sei muito bem como isso funciona, nem tenho nenhum para testar!
Irei procurar mais um pouco e esperar que alguém mais me possa dar umas sugestões, para ver se consigo colocar isto a funcionar brevemente!
Cumps
-
Eu segui a ligação do meu por outro "esquema" e ficou o seguinte:
No código está assim:
#include "PCD8544.h"
// pin 7 - Serial clock out (SCLK)
// pin 6 - Serial data out (DIN)
// pin 5 - Data/Command select (D/C)
// pin 4 - LCD chip select (CS)
// pin 3 - LCD reset (RST)
PCD8544 nokia = PCD8544(7, 6, 5, 3, 4);
E nas ligações assim:
---LCD--- ---Arduino----
1- VCC 5v
2-GND GND
3-SCE 4
4-RST 3
5-D\C 5
6-DN(MODI) 6
7-SCLK 7
8-LED 3v ou 5v c/Resistor de 4.7k
-
cuidado, esse lcd funciona no máximo a 3.6V, mais que isso tostam-no, tanto a alimentação como as entradas
-
Segundo o datasheet o vcc pode ir até 7v (só se o lcd não é igual ao meu)
http://www.sparkfun.com/datasheets/LCD/Monochrome/Nokia5110.pdf (http://www.sparkfun.com/datasheets/LCD/Monochrome/Nokia5110.pdf)
-
está em mais de um sitio "Logic supply voltage range VDD to VSS: 2.7 to 3.3 V"
os 6 a 9 é uma tensão gerada no interior possivelmente para o contraste ou temperatura da cor
-
Não fazes nenhuma ideia onde é que o esquema que eu segui esteja a falhar? Não conheces outra forma de o colocar a funcionar sem usar o tal IC 4050?
Cumps
-
É para o driver dos pixeis essa voltagem, tambem estou a brincar aqui com um oLed que funciona a 3.3v, mas o drive dos pixeis é feito a 12v, esse é a 9v.
Provavelmente já queimas-te isso...
Podes tentar com divisores resistivos e não só com resistências, que apesar de limitarem a corrente deixam os 5v passar á mesma.
-
Olá
Encontrei isto pela net: http://skyduino.wordpress.com/2012/01/24/tutoriel-arduino-ecran-de-nokia-5110/ (http://skyduino.wordpress.com/2012/01/24/tutoriel-arduino-ecran-de-nokia-5110/)
Mais uma vez refere os tais 5v, como poderei eu limitar esses 5v para apenas 3.3v?
Cumps
-
Com um divisor resistivo, ou seja 2 resistências.
-
Podes explicar-me isso melhor?
Ou seja, eu não faço a mínima ideia como isso se implementa!
Neste caso que apresentei agora em vez de usar resistências em todos os fios que ligam aos pin's do arduino bastava usar nos 3 que ligam ao vcc, 5v e 3.3v?
Que tipo de resistências devo usar?
Cumps
-
ao contrário:
LCD - Arduino
----------------------
GND - GND
VCC - 3.3v
LED - 3.3v
----------------------
RESET - D3
SCE - D4
DC - D5
SDIN - D6
SCLK - D7
nos 3 primeiros não precisas de ligar mais nada pois são os pinos de alimentação do LCD, nos outros 5 precisas de divisores de tensão pois o Arduino funciona a 5v e o LCD a 3.3v, se ligares directamente ou queimas o LCD ou encurtas a vida do mesmo.
o divisor de tensão consiste em usar 2 resistências para dividir a tensão, a formula é a seguinte:
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fpt%2Fmath%2F6%2F0%2Fa%2F60a3235f5692c75fea255c43b79940ef.png&hash=5b62d4372839a99f35ee92c37ab2b68609e8aed7)
(fonte wikipedia)
pode-se representar graficamente assim:
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg854.imageshack.us%2Fimg854%2F6715%2Fdivisor.png&hash=3852bf054c3eeeae23f945b54398cee5db962ea9)
neste caso pode-se usar resistências de 1.8k e 3.3k
Vout = (3.3/(1.8+3.3))*5
Vout ~ 3.24v
tens de fazer isto para os 5 pinos de dados do lcd
-
Olá
Efectuei o que me disseste apenas com uma diferença, estou a usar apenas 1 resistência de 10k nos 5 cabos de dados, e apesar de o LCD dar luz como se estivesse ligado não aparece nada impresso na tela!
O que é que poderá estar errado?
Estou a usar o seguinte código:
#include PCD8544.h
// 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++;
}
-
Porque como já te dissemos só uma resistencia não divide a voltagem, só limita a corrente máxima, continua a tentar que vais queimar isso de certeza, tens de dividir o sinal que sai do Arduino que tem 5v com as duas resistências ligadas como o esquema do CBX mostra para baixar os 5v para 3.3v.
E esse código continua a não incluir qualquer declaração de pinos usados...
-
nao sei se ajuda.. eu fiz um 'passo a passo' aqui https://sites.google.com/site/grcbyte/electronica/arduino/nokia-5110 desse lcd
-
Olá
Pois, a tua solução seria ideal, mas eu só possuo 5 resistências de 10k, pelo que não poderei implementar essa solução!
Cumps
-
Uma resistência custa 1 centimos ou 2, ou não tens loja perto de ti?
-
Não é propriamente pelo peço!
Eu moro do distrito de Vila Real e por aqui não conheço nenhuma loja com este material.
Tudo que tenho adquirido tem sido da inmotion.
Cumps
-
Tens de comprar um pack de resistências do eBay, por meia duzia de € compras uns milhares de resistências.
-
Vou fazer isso!
Podia to-lo feito na semana passada quando encomendei o LCD e uma nova ponte H entre outras coisas na Inmotion!
Bem mas comprar isso e depois voltarei a testar!
Cumps