{"id":24386075,"url":"https://github.com/recursiveerror/omnicrystal","last_synced_at":"2025-12-27T10:08:33.363Z","repository":{"id":144684911,"uuid":"606137029","full_name":"RecursiveError/omnicrystal","owner":"RecursiveError","description":"Biblioteca modular para LCD alfanuméricos compatíveis com HITACHI HD44780 feita com CoreArduino","archived":false,"fork":false,"pushed_at":"2023-03-28T18:34:43.000Z","size":42,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-12T18:46:02.555Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RecursiveError.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-02-24T17:24:01.000Z","updated_at":"2023-03-28T02:27:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"f98da6aa-4d19-4d11-97f8-2352ebfb36f0","html_url":"https://github.com/RecursiveError/omnicrystal","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/RecursiveError/omnicrystal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RecursiveError%2Fomnicrystal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RecursiveError%2Fomnicrystal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RecursiveError%2Fomnicrystal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RecursiveError%2Fomnicrystal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RecursiveError","download_url":"https://codeload.github.com/RecursiveError/omnicrystal/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RecursiveError%2Fomnicrystal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28077395,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-27T02:00:05.897Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-19T11:30:49.434Z","updated_at":"2025-12-27T10:08:33.341Z","avatar_url":"https://github.com/RecursiveError.png","language":"C++","readme":"# omnicrystal\n[English version](https://github.com/RecursiveError/omnicrystal/blob/main/README_EN.md)\n\nBiblioteca modular para LCD alfanuméricos compatíveis com HITACHI HD44780 feita com CoreArduino\n\nEssa 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)\n\n(PCF6754 NÃO ESTÁ IMPLEMTENTADA PARA PLATAFORMA SEM SUPORTE A I2C, use o exemplo de softI2C nessas plataformas)\n\n### Criando sua propria interface \npara criar sua propria interface é bem simples, basta implementar a interface \"LCDInterface\" com a função send publica.\n\nA função \"send\" recebe dois parametros uint8_t, \"data\" e \"config\", em que seus Bits representam:\n\n| BITS | BIT7 | BIT6 |BIT5| BIT4| BIT3| BIT2| BIT1| BIT0|\n| :------ | :------ | :------|  :------| :------| :------| :------| :------| :------|\n| DATA | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |\n| CONFIG | Reserved | Reserved | Reserved | Reserved | EN2 | EN | RW | RS |\n\no estado de cada bit representa o estado da porta: 1 == HIGH | 0 == LOW\n\nconecte cada bit a sua respectiva porta e pronto voce já tem uma interface funcional\n(para trabalhar com PCF8754 voce pode copiar essa linha ```uint8_t package = (config \u0026 0b00000111) | (data \u0026 0xF0) | 0x08; ``` e enviar pela sua biblioteca I2C de sua escolha)\n#### exemplo soft_i2c\n```c++\n/*soft_i2c cunstom interface Exemple\nAuthor: Guilherme Silva Schultz\nData: 2023-03-22\n\nthis example uses the library:\nhttps://github.com/felias-fogg/SoftI2CMaster\n\n*/\n\n//made to run on arduino uno\n//change settings according to your board\n\n//Arduino Uno pin 13\n#define SCL_PIN 5\n#define SCL_PORT PORTB\n\n//Arduino Uno pin 12\n#define SDA_PIN 4\n#define SDA_PORT PORTB\n\n#include \u003comnicrystal.h\u003e\n#include \u003cSoftI2CMaster.h\u003e\n\n//Implements LCDinterface\nclass LCDPCF8754_SOFT : public LCDInterface{\n  private:\n    const uint8_t _addr;\n  public:\n    LCDPCF8574_SOFT(const uint8_t addr) : _addr{addr}\n    {i2c_init();}\n    void send(uint8_t config, uint8_t data){\n      /*\n      The first 3 Low Bits of PCF8754 correspond respectively\n      RS - R/W - EN\n\n      0x08 is the backlight\n\n      the last 4 high bits correspond to the data pins\n      */\n      uint8_t package = (config \u0026 0b00000111) | (data \u0026 0xF0) | 0x08;\n      i2c_start((_addr\u003c\u003c1)|I2C_WRITE);\n      i2c_write(package);\n      i2c_stop();\n  }\n};\n\n//that's all you need to create a custom interface, now just use it.\nLCDPCF8754_SOFT interface(0x27);\nOmnicrystal lcd(interface, Bus4Bits, 2, 16);\n\nvoid setup() {\n  lcd.begin();\n  lcd.print(\"hello SoftI2C!!\");\n}\n\nvoid loop() {\n}\n\n```\n\n#### Funções\n\n`begin` Inicia o display\n\n`command` Envia comando da tabela de comandos do display\n\n`clear` Limpa o display\n\n`reset` reinicia as variaveis internas do display\n\n`moveCursorLeft` Move o curso para esquerda\n\n`moveCursorRight` Move o cursor para direita\n\n`moveDisplayLeft` Move o display para esquerda\n\n`moveDisplayRight` Move o display para direita\n\n`shiftOn` Ativa o autoscroll\n\n`shiftOff` Desativa o autoscroll\n\n`increment` Autoscroll incrementa a posição\n\n`decrement` Autoscroll decrementa a posição\n\n`cursorBlinkOn` Ativa o cursor piscando\n\n`cursorBlinkOff` Desativa o cursor piscando\n\n`cursorOn` Ativa o cursor\n\n`cursorOff` Desativa o cursor\n\n`displayOn` Ativa a exibição\n\n`displayOff` Desativa a exibição\n\n`setCursor(linha, coluna)` Move o cursor (contagem inicia do 0)\n\n`createChar(char_array, slot)` Cria um caractere customizado (recebe um array de tamanho 8 e uma posição de 0-7)\n\n`echo` Seleciona todos os LCDs (habilita todos os EN)\n\n`selectLcd(LCD)` Seleciona um lcd 0 = EN1 (Padrão) | 1 = EN2\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frecursiveerror%2Fomnicrystal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frecursiveerror%2Fomnicrystal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frecursiveerror%2Fomnicrystal/lists"}