Skip to content

Latest commit

 

History

History
130 lines (86 loc) · 3.57 KB

README.md

File metadata and controls

130 lines (86 loc) · 3.57 KB

omnicrystal

English version

Biblioteca modular para LCD alfanuméricos compatíveis com HITACHI HD44780 feita com CoreArduino

Essa Biblioteca permite que usuario escolha e crie a interface de comunicação com o display LCD, Essa Biblioteca vem com duas interfaces por padrão: paralela e PCF8754(Wire)

(PCF6754 NÃO ESTÁ IMPLEMTENTADA PARA PLATAFORMA SEM SUPORTE A I2C, use o exemplo de softI2C nessas plataformas)

Criando sua propria interface

para criar sua propria interface é bem simples, basta implementar a interface "LCDInterface" com a função send publica.

A função "send" recebe dois parametros uint8_t, "data" e "config", em que seus Bits representam:

BITS BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0
DATA D7 D6 D5 D4 D3 D2 D1 D0
CONFIG Reserved Reserved Reserved Reserved EN2 EN RW RS

o estado de cada bit representa o estado da porta: 1 == HIGH | 0 == LOW

conecte cada bit a sua respectiva porta e pronto voce já tem uma interface funcional (para trabalhar com PCF8754 voce pode copiar essa linha uint8_t package = (config & 0b00000111) | (data & 0xF0) | 0x08; e enviar pela sua biblioteca I2C de sua escolha)

exemplo soft_i2c

/*soft_i2c cunstom interface Exemple
Author: Guilherme Silva Schultz
Data: 2023-03-22

this example uses the library:
https://github.com/felias-fogg/SoftI2CMaster

*/

//made to run on arduino uno
//change settings according to your board

//Arduino Uno pin 13
#define SCL_PIN 5
#define SCL_PORT PORTB

//Arduino Uno pin 12
#define SDA_PIN 4
#define SDA_PORT PORTB

#include <omnicrystal.h>
#include <SoftI2CMaster.h>

//Implements LCDinterface
class LCDPCF8754_SOFT : public LCDInterface{
  private:
    const uint8_t _addr;
  public:
    LCDPCF8574_SOFT(const uint8_t addr) : _addr{addr}
    {i2c_init();}
    void send(uint8_t config, uint8_t data){
      /*
      The first 3 Low Bits of PCF8754 correspond respectively
      RS - R/W - EN

      0x08 is the backlight

      the last 4 high bits correspond to the data pins
      */
      uint8_t package = (config & 0b00000111) | (data & 0xF0) | 0x08;
      i2c_start((_addr<<1)|I2C_WRITE);
      i2c_write(package);
      i2c_stop();
  }
};

//that's all you need to create a custom interface, now just use it.
LCDPCF8754_SOFT interface(0x27);
Omnicrystal lcd(interface, Bus4Bits, 2, 16);

void setup() {
  lcd.begin();
  lcd.print("hello SoftI2C!!");
}

void loop() {
}

Funções

begin Inicia o display

command Envia comando da tabela de comandos do display

clear Limpa o display

reset reinicia as variaveis internas do display

moveCursorLeft Move o curso para esquerda

moveCursorRight Move o cursor para direita

moveDisplayLeft Move o display para esquerda

moveDisplayRight Move o display para direita

shiftOn Ativa o autoscroll

shiftOff Desativa o autoscroll

increment Autoscroll incrementa a posição

decrement Autoscroll decrementa a posição

cursorBlinkOn Ativa o cursor piscando

cursorBlinkOff Desativa o cursor piscando

cursorOn Ativa o cursor

cursorOff Desativa o cursor

displayOn Ativa a exibição

displayOff Desativa a exibição

setCursor(linha, coluna) Move o cursor (contagem inicia do 0)

createChar(char_array, slot) Cria um caractere customizado (recebe um array de tamanho 8 e uma posição de 0-7)

echo Seleciona todos os LCDs (habilita todos os EN)

selectLcd(LCD) Seleciona um lcd 0 = EN1 (Padrão) | 1 = EN2