// Definição dos pinos dos segmentos do display de 7 segmentos
int a = 2;
int b = 3;
int c = 4;
int d = 5;
int e = 6;
int f = 7;
int g = 8;
// Pino do sensor piezo
int piezoPin = A0;
// Variável para armazenar a leitura do piezo e o contador
int piezoValue = 0;
int counter = 0;
// Mapeamento dos números de 0 a 9 para os segmentos do display
byte numArray[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
};
void setup() {
// Configuração dos pinos como saída
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
// Inicializa a comunicação serial
Serial.begin(9600);
displayNumber(0);
}
void loop() {
// Leitura do valor analógico do sensor piezo
piezoValue = analogRead(piezoPin);
// Conversão da leitura para tensão (5V / 1023 valores possíveis)
float voltage = piezoValue * (5.0 / 1023.0);
// Se a tensão for maior que 2V, incrementa o contador
if (voltage >= 0) {
// Exibe o valor no display de 7 segmentos
displayNumber(round(voltage*10));
// Adiciona um pequeno atraso para evitar múltiplos incrementos para o mesmo sinal
delay(500);
}
// Pequeno atraso para evitar leituras rápidas demais
delay(100);
}
// Função para exibir um número no display de 7 segmentos
void displayNumber(int num) {
digitalWrite(a, numArray[num][0]);
digitalWrite(b, numArray[num][1]);
digitalWrite(c, numArray[num][2]);
digitalWrite(d, numArray[num][3]);
digitalWrite(e, numArray[num][4]);
digitalWrite(f, numArray[num][5]);
digitalWrite(g, numArray[num][6]);
}