Nas fotos, o projeto está montado utilizando um Arduino Pro Mini, em uma uma protoboard de 400 pontos.
O display é o modelo YSD-439AR6B-35 de 16 terminais com anodo comum.
Segue o esquema do display, do circuito, e o código-fonte:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | /*------------------------------ Programa : TERMÔMETRO AMBIENTE Autor : Fellipe Couto Data : 13/11/2017 ------------------------------*/ /*----- VARIÁVEIS DO DISPLAY -----*/ const int displayLed[7] = {2, 3, 4, 5, 6, 7, 8}; //Pinos dos segmentos do display (A, B, C, D, E, F, G). Modelo: YSD-439AR6B-35 const int d[4] = {9, 10, 11, 12}; //Pinos dos digitos do display const int decimal = 13; //Pino do ponto decimal do display /*----- VARIÁVEIS DO LM35 -----*/ const int lm35 = 0; //Sensor LM35 na entrada analógica A0. Pin 1 - Vcc / Pin 2 - Sinal / Pin 3 - GND const float celsiusBase = 0.4887585532746823; //Base de conversão para graus celsius. Leitura: ValorLido * ((5/1023) * 100) /*----- VARIÁVEIS -----*/ unsigned long previousMillis = 0; int interval = 5000; float temp = 0; /*----- SETUP -----*/ void setup() { for (int i = 0; i < 7; i++) { pinMode(displayLed[i], OUTPUT); //Configura os pinos dos segmentos do display como saída if (i < 4) { pinMode(d[i], OUTPUT); //Configura os pinos dos digitos do display como saída } } pinMode(decimal, OUTPUT); temp = ReadTemp(); } /*----- LOOP PRINCIPAL -----*/ void loop() { unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; temp = ReadTemp(); } DisplayTemperature(temp); } /*----- LEITURA SIMPLES DO SENSOR LM35 -----*/ float ReadTemp() { float temp = analogRead(lm35) * celsiusBase; return temp; } /*----- EXIBE A TEMPERATURA NO DISPLAY -----*/ void DisplayTemperature(float num) { String aux; int n[4]; int number[11][7] = { {0, 0, 0, 0, 0, 0, 1}, //ZERO {1, 0, 0, 1, 1, 1, 1}, //UM {0, 0, 1, 0, 0, 1, 0}, //DOIS {0, 0, 0, 0, 1, 1, 0}, //TRES {1, 0, 0, 1, 1, 0, 0}, //QUATRO {0, 1, 0, 0, 1, 0, 0}, //CINCO {1, 1, 0, 0, 0, 0, 0}, //SEIS {0, 0, 0, 1, 1, 1, 1}, //SETE {0, 0, 0, 0, 0, 0, 0}, //OITO {0, 0, 0, 1, 1, 0, 0}, //NOVE {0, 0, 1, 1, 1, 0, 0} //GRAUS }; if (num < 10) { aux += "0" + String(num); } else { aux += String(num); } n[0] = aux.substring(0, 1).toInt(); n[1] = aux.substring(1, 2).toInt(); n[2] = aux.substring(3, 4).toInt(); n[3] = 10; for (int p = 0; p < 4; p++) { //Acende um digito por vez. for (int i = 0; i < 4; i++) { //Apaga todos os digitos digitalWrite(d[i], LOW); } for (int i = 0; i < 7; i++) { //Acende os segmentos do display referente ao digito digitalWrite(displayLed[i], number[n[p]][i]); } if (p == 0 && n[0] == 0) { //Primeiro digito acende somente se for diferente de zero digitalWrite(d[p], HIGH); //Apaga a posição do digito. } else { digitalWrite(d[p], LOW); //Acende a posição do digito. } if (p == 1) { //Ponto decimal acende somente com o digito dois digitalWrite(decimal, LOW); } else { digitalWrite(decimal, HIGH); } delay(1); } } |
Funciona no display de 2 dígitos
ResponderExcluirEu fiz o código fonte mais agora não sei ligar os display, manda pra mim um esquema de ligação
ResponderExcluirBom dia!
ExcluirCom display de dois dígitos, não poderá exibir o valor após o ponto decimal e símbolo de graus (º).
Será necessário alterar o função DisplayTemperature() retirando n[2] e n[3]. O esquema de ligação do display deve ser o mesmo, porém com apenas 2 dígitos. Deve-se verificar se é anôdo comum ou catado comum. O display que utilizei é modelo anôdo comum.
Abraços!
e se eu utilizar o sensorNTC 10k
ResponderExcluirSeria necessário alterações na função ReadTemp().
ExcluirA lógica para exibir o valor no display permanece.
quer vender?
ResponderExcluirBoa tarde! Podemos conversar sobre projetos. Abraços!
ExcluirEstou tentando fazer um termômetro por aproximação com ESP32, display de 7 segmentos e 4 digitos e um sensor. Queria saber se pode me ajudar a fazer, ou se ja tem um projeto assim pronto.
ExcluirQual seria a dúvida e/ou o problema que tem no projeto? Posso tentar ajudar sim.
ExcluirEu não sei como executar. Sou novo nessa área. Preciso fazer um termômetro sensível a presença, só que com esp32, Display 7 segmentos e 4 digitos e sensor de presença. Se puder fazer um artigo com passo a passo, desde a montagem ate a programação me ajudaria muito. Não sei se é possivel?!
ExcluirOlá amigo, tem um contato seu para que podemos conversar e eu tirar as minhas duvidas?
ExcluirPode passar por e-mail. fellipe.couto@yahoo.com.br
Excluir