int valpot, valpotdiv = 0; // variáveis obtidas a partir do pot
// a seguir, como o circuito está montado.
#define pot A5 // cursor do potenciômetro conectado em A5
#define a 2 // conexão do pino 2 com o segmento a
#define b 3 // conexão do pino 3 com o segmento b
#define c 4 // conexão do pino 4 com o segmento c
#define d 5 // conexão do pino 5 com o segmento d
#define e 6 // conexão do pino 6 com o segmento e
#define f 7 // conexão do pino 7 com o segmento f
#define g 8 // conexão do pino 8 com o segmento g
#define dp 9 // conexão do pino 9 com o segmento dp
// declaração do vetor para controlar o estado dos pinos
const byte Pinos[8] = { 2, 3, 4, 5, 6, 7, 8, 9 }; // declaração do vetor Números com os valores em hexadecimal que serão escritos no
// display TIPO CATODO COMUM
const byte Numeros[10] = { // dp,g,f,e,d,c,b,a
//Esta é a ordem que serão escritos os bits lidos pela função bitRead na função EscreveDisplay // por isso quando for obter o número hexadecimal, é necessário utilizar a ordem indicada acima e //não a ordem do vetor Pinos
0X3F, //0
0X06, //1
0x5B, //2
0X4F, //3
0X66, //4
0x6D, //5
0x7D, //6
0x07, //7
0x7F, //8
0x6F, //9
};
void setup() {
Serial.begin(9600); // inicialização do monitor serial
// contador crescente até 7 para configurar pinos como saída
for(int i = 7; i >= 0; i--) {
pinMode(Pinos[i], OUTPUT); }
} // subrotina para escrever no display
void escreveDisplay(int num) {
byte numBit = Numeros[num];
for (int i = 0; i < 8; i++) {
int bit = bitRead(numBit, i);
digitalWrite(Pinos[i], bit); } }
void loop() { //leitura do valor do potenciometro
valpot = analogRead(A5); // para escrever apenas um digito no display divide-se o valor da leitura por 100 // o resultado (inteiro) é então enviado ao display
valpotdiv = valpot/100; // função para escrever no display
escreveDisplay(valpotdiv);
// valores enviados para o monitor serial
Serial.print("valpot = ");
Serial.println(valpot);
Serial.print("valpotdiv = ");
Serial.println(valpotdiv);
delay(200); }