#include <LiquidCrystal_I2C.h>
#include <Wire.h>
int dataPin = 12; // Pino conetado ao DS do 74HC595(Pino 14)
int latchPin = 13; // Pino conetado ao ST_CP do 74HC595(Pino 12)
int clockPin = 14; // Pino conetado ao SH_CP do 74HC595(Pino 11)
#define SDA 15 //Define pinos SDA
#define SCL 16 //Define pinos SCL
LiquidCrystal_I2C lcd(0x27,20,4);
// Define a codificação dos caracteres 0-F para o Display de 7 segmentos com ânodo comum.
byte num[] =
{
0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90
};
void setup()
{
// Ajusta os respectivos como saida
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
Wire.begin(SDA, SCL); // Conecta o pino I2C.
lcd.init(); // Inicialização do drive do LCD
lcd.backlight(); // Acende a luz de fundo
lcd.setCursor(6,0); // Move o cursor para a linha 0, coluna 6
lcd.print("ETEC ABH"); // O conteúdo impresso é exibido no LCD.
lcd.setCursor(1,1); // Move o cursor para a linha 1, coluna 2
lcd.print("Contador de 0 a 9"); // O conteúdo impresso é exibido no LCD.
lcd.setCursor(6,3); // Move o cursor para a linha 1, coluna 2
lcd.print("Seu nome"); // O conteúdo impresso é exibido no LCD.
}
void loop()
{
// exibe de 0-F no display
for (int i = 0; i < 10; i++)
{
writeData(num[i]);// Envia os dados para o CI 74HC595
delay(1000); // delay 1 segundo
writeData(0xff); // Limpar o conteúdo da exibição
}
}
void writeData(int value)
{
// Coloca o pino latchPin em nível baixo na saída.
digitalWrite(latchPin, LOW);
// Envia o conjunto de dados serie para o CI 74HC595
shiftOut(dataPin, clockPin, LSBFIRST, value);
// Defina o pino de latchPin como nível alto na saída, então o 74HC595 atualizará os dados para saída paralela.
digitalWrite(latchPin, HIGH);
}