#include <stdio.h>
#include <string.h>
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
#include <sys/time.h>
#include "pcf8574.h"
#include "hd44780.h"
#include "i2cdev.h"
#define SDA_GPIO (gpio_num_t)16
#define SCL_GPIO (gpio_num_t)17
#define I2C_ADDR 0x27
static i2c_dev_t pcf8574;
/*
Avaliação: Prof. Fernando Simplicio
Práticas: Lógica de programação;
*/
char MENSAGEM[] = "SEJAM BEM VINDO";
/*
Sintaxe das funções do lcd
---------------------------
hd44780_clear(const hd44780_t *lcd);
hd44780_putc(const hd44780_t *lcd, char c);
hd44780_puts(const hd44780_t *lcd, const char *s);
hd44780_switch_backlight(hd44780_t *lcd, bool on);
hd44780_upload_character(const hd44780_t *lcd, uint8_t num, const uint8_t *data);
hd44780_scroll_left(const hd44780_t *lcd);
hd44780_scroll_right(const hd44780_t *lcd);
Atenção: Caso queira montar no protoboard o projeto, as configurações das pinagens do lcd encontra-se no final do arquivo hd44780.c;
*/
static esp_err_t write_lcd_data(const hd44780_t *lcd, uint8_t data)
{
return pcf8574_port_write(&pcf8574, data);
}
hd44780_t lcd = {
.write_cb = write_lcd_data, // use callback to send data to LCD by I2C GPIO expander
.pins = {
.rs = 0,
.e = 2,
.d4 = 4,
.d5 = 5,
.d6 = 6,
.d7 = 7,
.bl = 3
},
.font = HD44780_FONT_5X8,
.lines = 4,
.backlight = 1
};
void setup(void)
{
/* inicializa a serial */
Serial.begin(115200);
Serial.println(MENSAGEM);
ESP_ERROR_CHECK(i2cdev_init());
memset(&pcf8574, 0, sizeof(i2c_dev_t));
ESP_ERROR_CHECK(pcf8574_init_desc(&pcf8574, 0, I2C_ADDR, SDA_GPIO, SCL_GPIO));
/* inicializa o display lcd */
hd44780_init(&lcd);
/* posiciona o cursor na COLUNA X LINHA */
hd44780_gotoxy(&lcd, 0, 0);
/* escreve na linha (0) do display lcd */
hd44780_puts(&lcd, MENSAGEM);
//Opção-1
//hd44780_clear(&lcd);
hd44780_gotoxy(&lcd, 0, 1); //coluna x linha
hd44780_puts(&lcd, "Linha-1");
hd44780_gotoxy(&lcd, 0, 2);
hd44780_puts(&lcd, "Linha-2");
delay(5000);
}
void loop(void)
{
delay(100);
}