/************************************************ * Projeto: Números aleatórios - Display 7 seg. * * Desenvolvedor: Vanderlei Alves * * Data: 27/05/2025 * *************************************************/ //Pinos ligados aos segmentos A-G int segmentos[] = {2, 3, 4, 5, 6, 7, 8}; //Mapas dos dígitos de 0 a 9 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 }; //Variáveis globais bool btnSortear = true; int nOrder = 0; void setup() { //Inicialização da comunicação serial Serial.begin(9600); //Determinação do pino de entrada do botão pinMode(10, INPUT_PULLUP); //Definindo os pinos de 2 a 8 como saídas digitais for (int i = 0; i < 7; i++) { pinMode(segmentos[i], OUTPUT); } //Inicializa com valor aleatório usando o canal analógico A0 como gerador de aleatoriedade randomSeed(analogRead(0)); //Realiza uma contagem inicial de 0 a 9 while(nOrder < 10) { mostrarNumero(nOrder); Serial.println(nOrder); nOrder++; if(nOrder > 10) nOrder = 0; delay(500); } //Zera o display mostrarNumero(0); } void loop() { //Leitura do botão btnSortear = digitalRead(10); //Verifica se o botão foi pressionado... if(!btnSortear) { //...se sim, gera números aleatórios. int numero = random(0, 10); // Número entre 0 e 9 //Apresenta o número gerado após o botão ser liberado mostrarNumero(numero); Serial.println(numero); } } //Função que realiza a formação dos dígitos no display void mostrarNumero(int n) { for (int i = 0; i < 7; i++) { digitalWrite(segmentos[i], digitos[n][i]); } }