Bibliotecas ou drivers servem para reutilizar e isolar um código para controlar um dispositivo.
Precisamos de dois arquivos para sua criação, um .h para os headers e um .cpp para o código.
Uma vez criada a biblioteca, podemos a importar em nosso código e utilizá-la para controlar nosso componente.
Neste projeto você criará uma biblioteca para display de Sete Segmentos com o Arduino.
Para a criação deste circuito serão necessários os seguintes componentes:
Para montar o circuito, visualize na imagem a seguir como conectar os componentes entre a placa Arduino e a breadboard.
A seguir temos o schematics do circuito, que detalha suas conexões e fornece detalhes mais específicos do que o circuito da imagem anterior.
Para a criação da biblioteca, crie um projeto, e nela adicione dois arquivos, um .h e um .cpp, no mesmo diretório do projeto, para a implementação do código da biblioteca, conforme os códigos a seguir.
/**
* Código do curso Magos do Arduino para criar uma biblioteca para controlar um
* display de sete segmentos com Arduino.
*
* Este código define o header da classe SeteSegmentos,
* que é responsável por controlar um display de sete segmentos.
*
* (c) Copyright KazaleIT
* @kazaleitoficial no YouTube
**/
#ifndef SeteSegmentos_h
#define SeteSegmentos_h
#include "Arduino.h"
class SeteSegmentos {
public:
SeteSegmentos(int pinoA, int pinoB, int pinoC, int pinoD, int pinoE, int pinoF, int pinoG);
void inicializar();
void exibir(int numero);
void limpar();
void exibirNum0();
void exibirNum1();
void exibirNum2();
void exibirNum3();
void exibirNum4();
void exibirNum5();
void exibirNum6();
void exibirNum7();
void exibirNum8();
void exibirNum9();
private:
int _pinoA;
int _pinoB;
int _pinoC;
int _pinoD;
int _pinoE;
int _pinoF;
int _pinoG;
byte _digitos[10][7] = {
{ 1, 1, 1, 1, 1, 1, 0 }, // 0
{ 0, 1, 1, 0, 0, 0, 0 }, // 1
{ 1, 1, 0, 1, 1, 0, 1 }, // 2
{ 1, 1, 1, 1, 0, 0, 1 }, // 3
{ 0, 1, 1, 0, 0, 1, 1 }, // 4
{ 1, 0, 1, 1, 0, 1, 1 }, // 5
{ 1, 0, 1, 1, 1, 1, 1 }, // 6
{ 1, 1, 1, 0, 0, 0, 0 }, // 7
{ 1, 1, 1, 1, 1, 1, 1 }, // 8
{ 1, 1, 1, 1, 0, 1, 1 } // 9
};
};
#endif
/**
* Código do curso Magos do Arduino para criar uma biblioteca para controlar um
* display de sete segmentos com Arduino.
*
* Este código implementa o header da classe SeteSegmentos,
* que é responsável por controlar um display de sete segmentos.
*
* (c) Copyright KazaleIT
* @kazaleitoficial no YouTube
**/
#include "Arduino.h"
#include "SeteSegmentos.h"
SeteSegmentos::SeteSegmentos(int pinoA, int pinoB, int pinoC, int pinoD, int pinoE, int pinoF, int pinoG) {
_pinoA = pinoA;
_pinoB = pinoB;
_pinoC = pinoC;
_pinoD = pinoD;
_pinoE = pinoE;
_pinoF = pinoF;
_pinoG = pinoG;
}
void SeteSegmentos::inicializar() {
pinMode(_pinoA, OUTPUT);
pinMode(_pinoB, OUTPUT);
pinMode(_pinoC, OUTPUT);
pinMode(_pinoD, OUTPUT);
pinMode(_pinoE, OUTPUT);
pinMode(_pinoF, OUTPUT);
pinMode(_pinoG, OUTPUT);
}
void SeteSegmentos::exibir(int numero) {
digitalWrite(_pinoA, _digitos[numero][0]);
digitalWrite(_pinoB, _digitos[numero][1]);
digitalWrite(_pinoC, _digitos[numero][2]);
digitalWrite(_pinoD, _digitos[numero][3]);
digitalWrite(_pinoE, _digitos[numero][4]);
digitalWrite(_pinoF, _digitos[numero][5]);
digitalWrite(_pinoG, _digitos[numero][6]);
}
void SeteSegmentos::limpar() {
digitalWrite(_pinoA, LOW);
digitalWrite(_pinoB, LOW);
digitalWrite(_pinoC, LOW);
digitalWrite(_pinoD, LOW);
digitalWrite(_pinoE, LOW);
digitalWrite(_pinoF, LOW);
digitalWrite(_pinoG, LOW);
}
void SeteSegmentos::exibirNum0() {
exibir(0);
}
void SeteSegmentos::exibirNum1() {
exibir(1);
}
void SeteSegmentos::exibirNum2() {
exibir(2);
}
void SeteSegmentos::exibirNum3() {
exibir(3);
}
void SeteSegmentos::exibirNum4() {
exibir(4);
}
void SeteSegmentos::exibirNum5() {
exibir(5);
}
void SeteSegmentos::exibirNum6() {
exibir(6);
}
void SeteSegmentos::exibirNum7() {
exibir(7);
}
void SeteSegmentos::exibirNum8() {
exibir(8);
}
void SeteSegmentos::exibirNum9() {
exibir(9);
}
Uma vez criado o circuito e implementada a biblioteca, use o código fonte a seguir no Arduino IDE para fazer o upload dele na placa Arduino e assim ver o resultado do circuito em funcionamento.
/**
* Código do curso Magos do Arduino para criar uma biblioteca para controlar um
* display de sete segmentos com Arduino.
*
* (c) Copyright KazaleIT
* @kazaleitoficial no YouTube
**/
#include "SeteSegmentos.h"
#define PINO_A 1
#define PINO_B 2
#define PINO_C 3
#define PINO_D 4
#define PINO_E 5
#define PINO_F 6
#define PINO_G 7
SeteSegmentos seteSegmentos(PINO_A, PINO_B, PINO_C, PINO_D, PINO_E, PINO_F, PINO_G);
void setup() {
// inicializa os pinos do diplay de setesegmentos
seteSegmentos.inicializar();
// faz uma contagem regressiva de 9 a 0 e depois limpa o display
seteSegmentos.exibirNum9();
delay(500);
seteSegmentos.exibirNum8();
delay(500);
seteSegmentos.exibirNum7();
delay(500);
seteSegmentos.exibirNum6();
delay(500);
seteSegmentos.exibirNum5();
delay(500);
seteSegmentos.exibirNum4();
delay(500);
seteSegmentos.exibirNum3();
delay(500);
seteSegmentos.exibirNum2();
delay(500);
seteSegmentos.exibirNum1();
delay(500);
seteSegmentos.exibirNum0();
delay(500);
seteSegmentos.limpar();
delay(2000);
}
byte numero = 0;
void loop() {
seteSegmentos.exibir(numero++);
if (numero == 10) {
numero = 0;
}
delay(1000);
}