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

Exibições: 1480

Responder esta

Respostas a este tópico

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 !!!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço