boa noite pessoal, estou tentando mover somente uma linha de um display 20x4 com i2c no arduino.
porem, não obtive exito, pois esta a deslocar todas as linhas.
estou usando essa função
if ((millis() - delay2) >= 1000){
for (i =0; i <16; i++){
lcd.scrollDisplayLeft();
lcd.setCursor(1,2);
lcd.print("living on a prayer");
delay3 = millis();}
e queria deslocar somente uma linha.
obrigado
Tags:
Tenta:
if ((millis() - delay2) >= 1000){
for (i =0; i <16; i++){
lcd.setCursor(i,2);
lcd.print(" living on a prayer");
delay3 = millis();}
obrigado pela ajuda, porem não deu certo, ele desloca a terceira linha em cima da primeira
esse é o display, minha ideia é o deslocamento da terceira e(ou) quarta linha.
Boa noite ,
Primeiro passo - descobrir qual biblioteca esta usando :
#include <LiquidCrystal_I2C.h>
Foi essa que usou ?
https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
Se foi essa, precisa entender como os comandos são usados:
https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library/b...
// These commands scroll the display without changing the RAM
void LiquidCrystal_I2C::scrollDisplayLeft(void) { command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVELEFT);}
void LiquidCrystal_I2C::scrollDisplayRight(void) { command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVERIGHT);
obrigado pela resposta.
uso a biblioteca
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
Desculpe minha ignorância, mas não entendo como seria a aplicação no meu sketch, e essas funções void no meio do programa nunca apliquei, não sei como seria.
teria algum site ou livro pra indicar, que possa entender melhor essas funções void no meio do programa?
desde já grato.
Boa tarde,
Os links que eu enviei são da biblioteca LiquidCrystal_I2C.
Veja esse exemplo :
https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library/b...
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
No seu caso :
LiquidCrystal_I2C lcd(0x3F, 20, 4);
Por que usou isso ?
LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7,3, POSITIVE);
boa noite, o por que de eu usar foi uma boa pergunta.
usei o mesmo código que você passou, o sketch carrega, porem nada acontece, troquei o (0x3F,16,2) por LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7,3,POSITIVE);
(estou fazendo esse teste em um display de 16x2)
percebi que se não conter exatamente o LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7,3,POSITIVE); ele não tem ação, o por que eu ainda não sei, porem depois que coloquei isso o sketch que voce passou rodou normalmente, aparecendo a mensagem de cursor e noCursor.
não contente, refiz tudo novamente, tirando o POSITIVE, ou os números antecedentes, porem nada funcionava, somente se conter todos os números com o POSITIVE.
Sr V, boa noite.
o que ocorre com este caso é o seguinte:
Existem duas implementações da biblioteca LiquidCrystal_I2C,
Uma permite que vc defina qual pino do PCF85745 está ligado em qual pino do LCD,
https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/
Vc tem que escrever assim:
LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7,3,POSITIVE);
lcd nome da instancia criada
0x3F endereço I2C do seu CI PCF8574
2 vc usara o pino2 do PCF no RS do LCD
1 vc usara o pino1 do PCF no RW do LCD e assim por diante até;
7 vc usara o pino7 do PCF no D7 do LCD
3 vc usara o pino3 do PCF no Led back light do LCD
e POSITIVE para dizer que o seu LED de back light usa o lado positivo para controle.
https://bytebucket.org/fmalpartida/new-liquidcrystal/wiki/i2c_lcd_s...
depois na função setup(), deve inicializar assim: lcd.begin(16,2); // initialize the lcd
16 numero de caracteres por linhas do seu LCD e 2 numero de linhas do seu LCD.
e a outra não permite definir os pinos do PCF.
https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
Os pinos do PCF são fixos em relação ao LCD e vc deve escrever assim:
LiquidCrystal_I2C lcd(0x27, 16, 2); Define o endereço I2C do PCF , qtos caracteres tem seu LCD e qtas linhas tem seu LCD.
depois na função setup(), deve inicializar assim: lcd.begin(); // initialize the lcd .
Espero ter ajudado.
RV
boa noite R.V.
Muito obrigado pelo texto, muito bem explicado, agora entendi a diferença entre os 2.
Valmor, assim fica impossível ajuda-lo !
" estou tentando mover somente uma linha de um display 20x4 com i2c no arduino"
" (estou fazendo esse teste em um display de 16x2)"
São dois tipos de displays totalmente diferentes !!!
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por